API REST + servidor MCP

API de Relatório SEO para
Desenvolvedores e Agentes IA

Crie relatórios via REST, faça polling até a conclusão e leia o mesmo relatório salvo que sua equipe vê no site. A mesma chave de API do seu plano pago conecta qualquer agente compatível com MCP.

Modelo de acesso

Plano pago + chave de API

O acesso à API é vinculado à conta e protegido por chave. Escolha um plano, crie uma chave de API na sua conta, e todo novo site que você executar através da API usará os créditos do seu plano, exatamente como faria no site. Os créditos são redefinidos no primeiro dia de cada mês (UTC) e nunca são acumulados.

Um objeto de relatório

Sessões do site, chamadas API e sessões de agente lidas do mesmo estado de relatório salvo.

Fluxo direto

Crie um relatório, faça polling para status, então leia os resultados completos do mesmo objeto.

Endpoints disponíveis

POST/api/v1/reports/preview

Crie uma pré-visualização de pontuação para integrações de parceiros em um plano pago.

POST/api/v1/reports

Crie um novo relatório ou reutilize um que já exista. Adicione "forceRerun": true para escanear o site novamente.

GET/api/v1/reports/:id

Obtenha o status mais recente do relatório e seções.

GET/api/v1/reports/:id/result

Leia os resultados completos do relatório.

GET/api/v1/reports/:id/download?format=json

Exporte o payload do relatório como JSON para integrações programáticas.

Quickstart: um relatório SEO a partir do curl

Três solicitações cobrem todo o fluxo, usando uma chave de API do seu plano pago. A primeira cria o relatório, a segunda faz polling até que seu status não esteja mais em fila ou em execução, e a terceira exporta-o. Um novo site usa um crédito; executar um site para o qual você já tem um relatório novamente não usa um crédito.

Criar, consultar e exportar um relatórioBash
export SEOREPORT_API_KEY="sr__live_your_api_key"
# Send the key as a header file so it never sits in curl's argv, where ps shows
# it to every local user. printf is a shell builtin, so it spawns no process.
auth() { printf 'Authorization: Bearer %s\n' "$SEOREPORT_API_KEY"; }

# 1. Create a report and keep its job ID
JOB_ID=$(curl -s -X POST https://seoreport.dev/api/v1/reports \
  -H @<(auth) \
  -H "Content-Type: application/json" \
  -d '{"url": "example.com"}' | jq -r '.report.jobId')

# 2. Poll until the report is no longer queued or running
while :; do
  STATUS=$(curl -s "https://seoreport.dev/api/v1/reports/$JOB_ID" \
    -H @<(auth) | jq -r '.report.status')
  case "$STATUS" in queued|running) sleep 3 ;; *) break ;; esac
done
echo "status: $STATUS"

# 3. Export the finished report (format=pdf, md and txt also work)
curl -s "https://seoreport.dev/api/v1/reports/$JOB_ID/download?format=json" \
  -H @<(auth) -o report.json

O que a API de relatórios de SEO retorna

Cada relatório concluído é exportado como um único documento JSON: a pontuação geral e sua faixa, uma pontuação por área, quantas páginas foram analisadas, os problemas em aberto por gravidade e cada descoberta na ordem de correção, com por que ela importa, como corrigi-la, como verificar a correção e as evidências e páginas que a sustentam. Markdown, texto e PDF são gerados a partir do mesmo diagnóstico.

GET /api/v1/reports/:id/download?format=json (resumido)JSON
{
  "exportVersion": 1,
  "jobId": "3f6c2a1e-8d4b-4c7a-9e21-5b0d7f4a6c18",
  "targetUrl": "https://example.com",
  "status": "completed",
  "isSnapshotReady": true,
  "auditedAt": "2026-10-14T09:12:41.000Z",
  "locale": "en",
  "score": { "overall": 72, "band": "stable" },
  "areas": [
    { "id": "access_crawl", "name": "Crawl & Index", "score": 61 },
    { "id": "metadata_onpage", "name": "On-Page SEO", "score": 78 },
    { "id": "security", "name": "Security", "score": 84 }
  ],
  "pagesAnalyzed": 24,
  "openIssues": { "critical": 0, "high": 2, "medium": 5, "low": 3, "total": 10 },
  "findings": [
    {
      "rank": 1,
      "title": "Render parity mismatch",
      "status": "fail",
      "severity": "high",
      "area": { "id": "access_crawl", "name": "Crawl & Index" },
      "whyItMatters": "Raw HTML and rendered DOM should tell the same SEO story so crawlers and AI systems do not see conflicting versions of the page.",
      "fix": "Ensure raw HTML and rendered DOM contain the same critical SEO elements (title, H1, canonical, meta description, structured data). If content is injected by JavaScript, move it to server-side rendering so crawlers see it immediately.",
      "verification": [
        "Recheck these recorded examples: https://example.com/pricing. Method: compare the raw HTML with the rendered DOM. Previously observed: H1 present only after rendering",
        "Expected after the change: the same critical elements in both. Obtain a fresh capture and compare the same check and URLs; a changed sample alone does not verify a fix."
      ],
      "evidence": ["Raw HTML and rendered DOM were compared for critical elements."],
      "pages": ["https://example.com/pricing"]
    }
  ]
}

Erros e limites

Cada recusa abaixo informa o seu código. Ao tratá-los, um script nunca tenta de novo às cegas.

402PAYMENT_REQUIREDNão há um plano pago por trás da solicitação: a chave está ausente, é inválida ou foi revogada, ou a conta não tem um plano ativo. Sem chave, a resposta é 402, não 401.
402REPORT_CREDITS_EXHAUSTEDOs créditos de sites novos deste mês acabaram. Analisar de novo um site do qual você já tem um relatório continua funcionando, e os créditos são renovados no primeiro dia de cada mês (UTC).
429FRESH_RUN_LIMITMais de 30 execuções novas (forceRerun) em uma hora para uma conta. Aguarde o tempo indicado no cabeçalho Retry-After.
200status: failed | dead_letteredO relatório não pôde ser concluído. GET /api/v1/reports/:id retorna error.code, error.message e error.retryable quando a causa foi registrada; tente de novo apenas se retryable for true.
200pollAfterMsQuanto esperar antes de consultar o status de novo; 0 quando o relatório estiver concluído.

API de monitoramento SEO

Um domínio registrado para monitoramento é reauditado a cada semana. Quando algo muda, o endereço de alerta recebe um e‑mail: um novo achado crítico ou de alta severidade, um achado crítico resolvido, ou uma mudança para uma faixa de pontuação diferente. Uma semana sem mudança não envia nada.

PUT/api/v1/monitors

Inicia o monitoramento semanal de um domínio; “enabled”: false pausa-o.

GET/api/v1/monitors

Lista os domínios que esta conta monitora.

DELETE/api/v1/monitors?url=

Interrompe o monitoramento de um domínio e exclui seus resultados armazenados.

Monitorar um domínioBash
# Uses the auth() helper from the quickstart above.
# Re-audit a domain every week and email [email protected] when it changes
curl -X PUT https://seoreport.dev/api/v1/monitors \
  -H @<(auth) \
  -H "Content-Type: application/json" \
  -d '{"url": "example.com", "alertEmail": "[email protected]"}'

# List monitored domains
curl https://seoreport.dev/api/v1/monitors \
  -H @<(auth)

# Stop monitoring (pass the host the list returns)
curl -X DELETE "https://seoreport.dev/api/v1/monitors?url=example.com" \
  -H @<(auth)

Monitoramento está incluído com planos pagos e não consome créditos de relatório.

Cliente Oficial TypeScript

Um cliente tipado para a API REST. Autentique com a chave de API do seu plano, então crie, faça polling e exporte relatórios do TypeScript.

Linha de Comando

Execute relatórios do seu terminal com sua chave de API. Uma instalação global.

Bash
npm install -g @seoreport/client

Servidor MCP — a mesma API, a mesma chave

Aponte qualquer cliente compatível com MCP para https://seoreport.dev/mcp e autentique-se com a mesma chave API Bearer que usa no REST. As ferramentas de relatório e de conta são anunciadas na conexão, então um agente pode executar uma auditoria e ler os achados sem código intermediário.

Configuração do cliente MCPJSON
{
  "mcpServers": {
    "seoreport": {
      "url": "https://seoreport.dev/mcp",
      "headers": {
        "Authorization": "Bearer sr__live_your_api_key"
      }
    }
  }
}
seoreport_create_report

Inicie um relatório para uma URL e receba um ID de trabalho.

seoreport_get_report_status

Verifique o trabalho até o relatório ficar pronto.

seoreport_get_report

Leia o relatório concluído com a pontuação e os achados.

seoreport_list_reports

Liste os relatórios da conta.

seoreport_get_report_download

Obtenha uma URL de download em JSON, Markdown, texto ou PDF.

seoreport_get_account

Consulte o plano da conta, os créditos restantes e a data de renovação.

O pagamento devolve um link para abrir no navegador em vez de cobrar diretamente: um agente pode iniciá-lo, só uma pessoa pode pagar. Cancelar um plano, gerenciar chaves de API e excluir a conta continuam no seu painel.

Pronto para construir?

Escolha um plano, crie uma chave API e comece a integrar relatórios SEO em seu produto.