API REST + servidor MCP

API de Informe SEO para
Desarrolladores y Agentes IA

Cree informes por REST, consulte su estado hasta que terminen y lea el mismo informe guardado que su equipo ve en el sitio web. La misma clave API de su plan de pago conecta cualquier agente compatible con MCP.

Modelo de acceso

Plan de pago + clave API

El acceso a la API está vinculado a su cuenta y protegido por clave. Elija un plan, cree una clave API en su cuenta, y cada sitio nuevo que analice por la API usará los créditos de su plan, exactamente igual que en el sitio web. Los créditos se reinician el primer día de cada mes (UTC) y nunca se acumulan.

Un objeto de informe

Sesiones de sitio web, llamadas API y sesiones de agente se leen del mismo estado del informe guardado.

Flujo sencillo

Cree un informe, consulte su estado y lea los resultados completos desde el mismo objeto.

Puntos finales disponibles

POST/api/v1/reports/preview

Crea una vista previa de la puntuación para integraciones de socios con un plan de pago.

POST/api/v1/reports

Crea un nuevo informe o reutiliza uno que ya exista. Añada "forceRerun": true para volver a escanear el sitio.

GET/api/v1/reports/:id

Obtén el último estado del informe y las secciones.

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

Lee los resultados completos del informe.

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

Exportar la carga útil del informe como JSON para integraciones programáticas.

Quickstart: un informe SEO desde curl

Tres solicitudes cubren todo el flujo, con una clave API de su plan de pago. La primera crea el informe, la segunda lo consulta hasta que su estado deja de ser queued o running, y la tercera lo exporta. Un sitio nuevo usa un crédito; volver a analizar un sitio del que ya tiene un informe no consume créditos.

Crear, consultar y exportar un informeBash
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

Qué devuelve la API de informes SEO

Cada informe terminado se exporta como un único documento JSON: la puntuación global y su nivel, una puntuación por área, cuántas páginas se analizaron, los problemas abiertos por gravedad y cada hallazgo en orden de corrección, con por qué importa, cómo corregirlo, cómo verificar la corrección y la evidencia y las páginas que lo respaldan. Markdown, texto y PDF se generan a partir del mismo diagnóstico.

GET /api/v1/reports/:id/download?format=json (recortado)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"]
    }
  ]
}

Errores y límites

Cada rechazo de esta lista indica su código. Si los gestiona, un script nunca reintenta a ciegas.

402PAYMENT_REQUIREDNo hay un plan de pago detrás de la solicitud: la clave falta, no es válida o fue revocada, o la cuenta no tiene un plan activo. Sin clave, la respuesta es 402, no 401.
402REPORT_CREDITS_EXHAUSTEDYa se usaron los créditos de sitios nuevos de este mes. Volver a analizar un sitio del que ya tiene un informe sigue funcionando, y los créditos se renuevan el primer día de cada mes (UTC).
429FRESH_RUN_LIMITMás de 30 ejecuciones nuevas (forceRerun) en una hora para una cuenta. Espere el tiempo indicado en la cabecera Retry-After.
200status: failed | dead_letteredEl informe no pudo terminar. GET /api/v1/reports/:id devuelve error.code, error.message y error.retryable cuando se registró la causa; reintente solo si retryable es true.
200pollAfterMsCuánto esperar antes de volver a consultar el estado; 0 cuando el informe ya terminó.

API de monitoreo SEO

Un dominio registrado para monitoreo se vuelve a auditar cada semana. Cuando algo cambia, la dirección de alerta recibe un correo electrónico: un hallazgo crítico o de alta gravedad nuevo, un hallazgo crítico resuelto, o un cambio a una banda de puntuación diferente. Una semana sin cambios no envía nada.

PUT/api/v1/monitors

Inicia el monitoreo semanal de un dominio; "enabled": false lo pausa.

GET/api/v1/monitors

Lista los dominios que esta cuenta monitorea.

DELETE/api/v1/monitors?url=

Detiene el monitoreo de un dominio y elimina sus resultados almacenados.

Monitorear un dominioBash
# 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)

La monitorización está incluida en los planes de pago y no consume créditos de informes.

Oficial TypeScript Cliente

Un cliente tipado para la API REST. Autentíquese con la clave API de su plan y cree, consulte y exporte informes desde TypeScript.

Línea de comandos

Genere informes desde su terminal con su clave API. Una sola instalación global.

Bash
npm install -g @seoreport/client

Servidor MCP: la misma API, la misma clave

Apunte cualquier cliente compatible con MCP a https://seoreport.dev/mcp y autentíquese con la misma clave API Bearer que usa en REST. Las herramientas de informes y de cuenta se anuncian al conectarse, así que un agente puede ejecutar una auditoría y leer los hallazgos sin código intermedio.

Configuración del cliente MCPJSON
{
  "mcpServers": {
    "seoreport": {
      "url": "https://seoreport.dev/mcp",
      "headers": {
        "Authorization": "Bearer sr__live_your_api_key"
      }
    }
  }
}
seoreport_create_report

Inicia un informe para una URL y devuelve un ID de trabajo.

seoreport_get_report_status

Consulta el trabajo hasta que el informe esté listo.

seoreport_get_report

Lee el informe terminado con su puntuación y hallazgos.

seoreport_list_reports

Lista los informes de la cuenta.

seoreport_get_report_download

Obtén una URL de descarga en JSON, Markdown, texto o PDF.

seoreport_get_account

Consulta el plan de la cuenta, los créditos restantes y la fecha de renovación.

El pago devuelve un enlace para abrir en el navegador en lugar de cobrar directamente: un agente puede iniciarlo y solo una persona puede pagar. Cancelar un plan, gestionar las claves API y eliminar la cuenta se hace desde tu panel.

Listo para construir?

Elija un plan, cree una clave API y empiece a integrar informes SEO en su producto.