Referência da APIv1
Versão estável

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.

Requer o plano Pro: O acesso à API está incluído no plano Pro. Abra Planos nas Configurações para assinar.
Obter chave de API
Início rápidobash
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.

Segurança: Nunca exponha chaves de API em código do lado do cliente, repositórios públicos ou requisições do navegador. Use variáveis de ambiente ou um gerenciador de segredos.
Exemplo de requisiçãobash
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.

URL basetext
https://inspectad.com/api/v1

Limites 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.

LimiteValor
Requisições à API300/min
Verificações de textoConforme o plano
Análises de imagemConforme o plano
Verificações de landing pageConforme o plano
Cabeçalhos de limite de requisiçõesjson
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.

POST/api/v1/check-text

Parâmetros

textobrigatório
string

Texto do anúncio a analisar (de 20 a 2.000 caracteres)

platformsobrigatório
string[]

Plataformas de destino: "meta", "tiktok", "x", "youtube", "linkedin"

tone
string

Tom das sugestões: "Neutral", "Friendly", "Professional", "Playful" (padrão: "Neutral")

Requisiçãobash
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"
  }'
Respostajson
{
  "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.

POST/api/v1/analyze-image

Parâmetros

imageobrigatório
file

Arquivo de imagem (JPEG, PNG, WebP ou GIF, máx. 4 MB)

platforms
string

Plataformas separadas por vírgula (padrão: "meta")

Requisição (multipart/form-data)bash
curl -X POST https://inspectad.com/api/v1/analyze-image \
  -H "Authorization: Bearer sk_live_..." \
  -F "image=@ad-creative.png" \
  -F "platforms=meta,tiktok"
Respostajson
{
  "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.

POST/api/v1/analyze-landing-page

Parâmetros

urlobrigatório
string

URL completa da landing page a analisar

Requisiçãobash
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" }'
Respostajson
{
  "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.

GET/api/v1/usage
Requisiçãobash
curl https://inspectad.com/api/v1/usage \
  -H "Authorization: Bearer sk_live_..."
Respostajson
{
  "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.

ValorPlataforma
metaMeta (Facebook e Instagram)
tiktokTikTok
youtubeYouTube / Google Ads
linkedinLinkedIn
xX
Exemplojson
{
  "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.

StatusCódigoDescrição
401authentication_requiredCabeçalho Authorization ausente ou inválido
401invalid_api_keyA chave de API é inválida, expirou ou foi revogada
403insufficient_scopeA chave não tem permissão para este endpoint
403plan_upgrade_requiredSeu plano não inclui acesso à API
400validation_errorParâmetros da requisição inválidos
400invalid_jsonO corpo da requisição não é um JSON válido
400invalid_requestFormato de requisição incorreto (verificações de imagem exigem multipart/form-data com um campo "image")
400invalid_urlURL inválida ou bloqueada por segurança
400invalid_platformsPlataforma desconhecida na lista de plataformas
400missing_imageNenhum campo "image" na requisição
400invalid_imageO arquivo não é uma imagem PNG, JPEG, WebP ou GIF legível
400file_too_largeA imagem passa do limite de tamanho
403platform_limitSeu plano verifica menos plataformas por vez do que o pedido
429limit_exceededLimite mensal de uso do plano atingido
429rate_limitedExcesso de requisições (veja o cabeçalho Retry-After)
500internal_errorAlgo deu errado do nosso lado
Resposta de errojson
{
  "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.

Pythonpython
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']}")
Node.js / TypeScripttypescript
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}`);