InspectAd API
Integre verificações de conformidade diretamente ao seu fluxo de criação de anúncios. Verifique textos, imagens e landing pages de acordo com as políticas de anúncios das plataformas com uma única chamada de API.
curl -X POST https://inspectad.com/api/v1/check-text \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"text": "Lose 30 lbs in 2 weeks!",
"platforms": ["meta"]
}'Autenticação
A API do InspectAd usa chaves de API para autenticação. Inclua sua chave no cabeçalho Authorization como um token Bearer.
Gere chaves na página Configurações → API. As chaves são exibidas uma única vez, ao serem criadas — guarde-as em local seguro.
curl https://inspectad.com/api/v1/usage \
-H "Authorization: Bearer sk_live_abc123def456..."URL base
Todos os endpoints da API são relativos à URL base abaixo. Todas as respostas são em JSON. Os cabeçalhos CORS estão incluídos para uso entre servidores.
https://inspectad.com/api/v1Limites de requisições
As requisições à API estão sujeitas a limites de taxa (requisições por minuto) e a limites de uso do plano (verificações por mês). Toda resposta inclui um objeto usage.
| Limite | Valor |
|---|---|
| Requisições à API | 300/min |
| Verificações de texto | Conforme o plano |
| Análises de imagem | Conforme o plano |
| Verificações de landing page | Conforme o plano |
HTTP/1.1 429 Too Many Requests
Retry-After: 30
{
"error": "rate_limited",
"message": "Too many requests. Retry after 30s."
}Verificar texto
Analisa o texto do anúncio de acordo com as políticas de anúncios das plataformas. Retorna os problemas de conformidade, uma decisão pass/warn/fail, um índice de confiança e alternativas em conformidade geradas por IA.
Parâmetros
textobrigatórioTexto do anúncio a analisar (de 20 a 2.000 caracteres)
platformsobrigatórioPlataformas de destino: "meta", "tiktok", "x", "youtube", "linkedin"
toneTom das sugestões: "Neutral", "Friendly", "Professional", "Playful" (padrão: "Neutral")
curl -X POST https://inspectad.com/api/v1/check-text \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"text": "Lose 30 lbs in 2 weeks with our miracle pill!",
"platforms": ["meta", "tiktok"],
"tone": "Neutral"
}'{
"decision": "fail",
"confidence": 92,
"findings": [
{
"severity": "Fail",
"snippet": "Lose 30 lbs in 2 weeks",
"reason": "Unrealistic weight loss claims violate Meta Ad Standards.",
"platform": "meta"
}
],
"suggestions": [
"Transform your wellness journey — sustainable results you'll love."
],
"platforms": ["meta", "tiktok"],
"tone": "Neutral",
"usage": { "used": 12, "limit": 100, "remaining": 88 }
}Analisar imagem
Analisa criativos de anúncios em busca de problemas de conformidade, porcentagem de texto sobreposto e adequação às especificações das plataformas. Aceita JPEG, PNG, WebP e GIF de até 4 MB.
Parâmetros
imageobrigatórioArquivo de imagem (JPEG, PNG, WebP ou GIF, máx. 4 MB)
platformsPlataformas separadas por vírgula (padrão: "meta")
curl -X POST https://inspectad.com/api/v1/analyze-image \
-H "Authorization: Bearer sk_live_..." \
-F "image=@ad-creative.png" \
-F "platforms=meta,tiktok"{
"overallScore": 85,
"dimensions": { "width": 1080, "height": 1080 },
"format": "png",
"fileSize": 524288,
"textOverlayPercent": 15,
"textContent": "CINEMATIC IMMERSION — True 4K Brilliance",
"visualDescription": "Product shot with gradient background...",
"contentFindings": [...],
"platforms": ["meta", "tiktok"],
"usage": { "used": 5, "limit": 25, "remaining": 20 }
}Analisar landing page
Verifica problemas de conformidade em uma landing page — SSL, política de privacidade, avisos legais, adaptação para celular e violações das políticas de conteúdo.
Parâmetros
urlobrigatórioURL completa da landing page a analisar
curl -X POST https://inspectad.com/api/v1/analyze-landing-page \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/offer" }'{
"url": "https://example.com/offer",
"overallScore": 72,
"technicalChecks": {
"hasSSL": true,
"hasMobileFriendly": true,
"hasPrivacyPolicy": false,
"hasTermsOfService": true
},
"contentChecks": { ... },
"issues": [
{
"severity": "high",
"category": "Privacy",
"message": "No privacy policy link found."
}
],
"usage": { "used": 2, "limit": -1, "remaining": "unlimited" }
}Consultar uso
Retorna o uso do mês atual e os limites do plano para todos os tipos de recurso.
curl https://inspectad.com/api/v1/usage \
-H "Authorization: Bearer sk_live_..."{
"plan": "pro",
"planName": "Pro",
"period": "2026-02",
"usage": {
"textChecks": { "used": 142, "limit": "unlimited", "remaining": "unlimited" },
"imageChecks": { "used": 35, "limit": "unlimited", "remaining": "unlimited" },
"landingPageChecks": { "used": 8, "limit": "unlimited", "remaining": "unlimited" },
"videoAnalyses": { "used": 3, "limit": 20, "remaining": 17 },
"bulkChecks": { "used": 0, "limit": 100, "remaining": 100 }
},
"platformsPerCheck": 4
}Plataformas
Use estes valores ao indicar as plataformas de destino nas suas chamadas de API.
| Valor | Plataforma |
|---|---|
meta | Meta (Facebook e Instagram) |
tiktok | TikTok |
youtube | YouTube / Google Ads |
linkedin | |
x | X |
{
"platforms": ["meta", "tiktok", "youtube"]
}Códigos de erro
Todos os erros retornam um envelope JSON padronizado com um código error e uma message legível.
| Status | Código | Descrição |
|---|---|---|
| 401 | authentication_required | Cabeçalho Authorization ausente ou inválido |
| 401 | invalid_api_key | A chave de API é inválida, expirou ou foi revogada |
| 403 | insufficient_scope | A chave não tem permissão para este endpoint |
| 403 | plan_upgrade_required | Seu plano não inclui acesso à API |
| 400 | validation_error | Parâmetros da requisição inválidos |
| 400 | invalid_json | O corpo da requisição não é um JSON válido |
| 400 | invalid_request | Formato de requisição incorreto (verificações de imagem exigem multipart/form-data com um campo "image") |
| 400 | invalid_url | URL inválida ou bloqueada por segurança |
| 400 | invalid_platforms | Plataforma desconhecida na lista de plataformas |
| 400 | missing_image | Nenhum campo "image" na requisição |
| 400 | invalid_image | O arquivo não é uma imagem PNG, JPEG, WebP ou GIF legível |
| 400 | file_too_large | A imagem passa do limite de tamanho |
| 403 | platform_limit | Seu plano verifica menos plataformas por vez do que o pedido |
| 429 | limit_exceeded | Limite mensal de uso do plano atingido |
| 429 | rate_limited | Excesso de requisições (veja o cabeçalho Retry-After) |
| 500 | internal_error | Algo deu errado do nosso lado |
{
"error": "limit_exceeded",
"message": "Text check limit reached (100/100).",
"usage": {
"used": 100,
"limit": 100,
"remaining": 0
},
"upgradeUrl": "https://inspectad.com/dashboard"
}Exemplos de código
Exemplos completos e funcionais nas linguagens mais comuns. Substitua sk_live_... pela sua chave de API.
import requests
API_KEY = "sk_live_..."
BASE = "https://inspectad.com/api/v1"
resp = requests.post(
f"{BASE}/check-text",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"text": "Limited time offer! Act now!",
"platforms": ["meta", "tiktok"],
"tone": "Professional"
}
)
data = resp.json()
print(f"Decision: {data['decision']}")
print(f"Issues: {len(data['findings'])}")
for f in data["findings"]:
print(f" [{f['severity']}] {f['snippet']}")
print(f" {f['reason']}")const API_KEY = process.env.INSPECTAD_API_KEY!;
const BASE = "https://inspectad.com/api/v1";
const res = await fetch(`${BASE}/check-text`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Limited time offer! Act now!",
platforms: ["meta", "tiktok"],
}),
});
const data = await res.json();
console.log(`Decision: ${data.decision}`);
console.log(`Remaining: ${data.usage.remaining}`);Precisa de ajuda? contact@inspectad.com · FAQ · Gerenciar chaves de API