API REST + serveur MCP
API Rapport SEO pour
développeurs et agents IA
Créez des rapports via REST, interrogez-les jusqu'à leur achèvement et lisez le même rapport enregistré que votre équipe voit sur le site web. La même clé API de votre plan payant connecte tout agent compatible MCP.
Modèle d'accès
L'accès API est lié au compte et verrouillé par clé. Choisissez un plan, créez une clé API dans votre compte, et chaque nouveau site que vous lancez via l'API utilise les crédits de votre plan, exactement comme sur le site web. Les crédits se réinitialisent le premier jour de chaque mois (UTC) et ne sont jamais reportés.
Sessions du site web, appels API, et sessions d'agent lisent à partir du même état de rapport enregistré
Créez un rapport, interrogez son statut, puis lisez les résultats complets depuis le même objet.
Points de terminaison disponibles
/api/v1/reports/previewCréez un aperçu de score pour les intégrations partenaires sur un plan payant.
/api/v1/reportsCréez un nouveau rapport ou réutilisez-en un qui existe déjà. Ajoutez "forceRerun": true pour analyser à nouveau le site.
/api/v1/reports/:idObtenez le dernier statut et les sections du rapport.
/api/v1/reports/:id/resultLisez les résultats complets du rapport.
/api/v1/reports/:id/download?format=jsonExporter le payload du rapport en JSON pour les intégrations programmatiques.
Quickstart : un rapport SEO depuis curl
Trois requêtes couvrent l’ensemble du flux, en utilisant une clé API de votre plan payant. La première crée le rapport, la seconde le vérifie jusqu’à ce que son statut ne soit plus en file d’attente ou en cours, et la troisième l’exporte. Un nouveau site utilise un crédit ; relancer un site pour lequel vous avez déjà un rapport ne consomme pas de crédit.
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.jsonCe que renvoie l’API de rapports SEO
Chaque rapport terminé s’exporte en un seul document JSON : le score global et son niveau, un score par domaine, le nombre de pages analysées, les problèmes ouverts par gravité, et chaque constatation dans l’ordre de correction, avec son enjeu, la correction à apporter, la façon de la vérifier, ainsi que les preuves et les pages concernées. Le Markdown, le texte et le PDF sont générés à partir du même diagnostic.
{
"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"]
}
]
}Erreurs et limites
Chaque refus ci-dessous indique son code. En les gérant, un script ne réessaie jamais à l’aveugle.
| 402 | PAYMENT_REQUIRED | Aucun abonnement payant derrière la requête : la clé est absente, invalide ou révoquée, ou le compte n’a pas d’abonnement actif. Sans clé, la réponse est 402, pas 401. |
| 402 | REPORT_CREDITS_EXHAUSTED | Les crédits de nouveaux sites du mois sont épuisés. Relancer un site pour lequel vous avez déjà un rapport fonctionne toujours, et les crédits se réinitialisent le premier jour de chaque mois (UTC). |
| 429 | FRESH_RUN_LIMIT | Plus de 30 nouvelles exécutions (forceRerun) en une heure pour un même compte. Attendez la durée indiquée par l’en-tête Retry-After. |
| 200 | status: failed | dead_lettered | Le rapport n’a pas pu aboutir. GET /api/v1/reports/:id renvoie error.code, error.message et error.retryable lorsque la cause a été enregistrée ; ne réessayez que si retryable vaut true. |
| 200 | pollAfterMs | Le délai à respecter avant de redemander l’état ; 0 une fois le rapport terminé. |
Guides de configuration et recettes
Des pages pas à pas pour connecter un agent IA via MCP, appeler l’API depuis du code et comparer des API SEO. En anglais.
Connecter un agent IA (MCP)
- Connect SEOReport to Claude Code: MCP setup for SEO audits
- Connect SEOReport to Cursor: MCP setup for SEO audits
- Connect SEOReport to VS Code: MCP setup for GitHub Copilot
- Connect SEOReport to Windsurf (Devin Desktop): MCP setup
- Connect SEOReport to OpenAI Codex CLI: MCP setup for SEO audits
- Connect SEOReport to Gemini CLI: MCP setup for SEO audits
- Connect SEOReport to Claude Desktop: MCP setup for SEO audits
Appeler l’API depuis du code
API de surveillance SEO
Un domaine enregistré pour la surveillance est réaudité chaque semaine. Lorsqu’une modification survient, l’adresse d’alerte reçoit un e‑mail : une nouvelle découverte critique ou de haute gravité, une découverte critique résolue, ou un passage à une bande de score différente. Une semaine sans changement n’envoie rien.
/api/v1/monitorsDémarre la surveillance hebdomadaire d’un domaine ; "enabled" : false le met en pause.
/api/v1/monitorsListe les domaines que ce compte surveille.
/api/v1/monitors?url=Arrête la surveillance d'un domaine et supprime ses résultats stockés.
# 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 surveillance est incluse avec les plans payants et ne dépense pas de crédits de rapport.
Client officiel TypeScript
Un client typé pour l’API REST. Authentifiez-vous avec la clé API de votre plan, puis créez, vérifiez et exportez des rapports depuis TypeScript.
Ligne de commande
Exécutez des rapports depuis votre terminal avec votre clé API. Une installation globale.
npm install -g @seoreport/clientServeur MCP — même API, même clé
Pointez n'importe quel client compatible MCP vers https://seoreport.dev/mcp et authentifiez-vous avec la même clé API Bearer que pour REST. Les outils de rapport et de compte sont annoncés à la connexion : un agent peut lancer un audit et lire les constats sans code intermédiaire.
{
"mcpServers": {
"seoreport": {
"url": "https://seoreport.dev/mcp",
"headers": {
"Authorization": "Bearer sr__live_your_api_key"
}
}
}
}seoreport_create_reportLancez un rapport pour une URL et récupérez un identifiant de tâche.
seoreport_get_report_statusInterrogez la tâche jusqu'à ce que le rapport soit prêt.
seoreport_get_reportLisez le rapport terminé avec son score et ses constats.
seoreport_list_reportsListez les rapports du compte.
seoreport_get_report_downloadObtenez une URL de téléchargement en JSON, Markdown, texte ou PDF.
seoreport_get_accountConsultez le plan du compte, les crédits restants et la date de renouvellement.
Le paiement renvoie un lien à ouvrir dans le navigateur au lieu de débiter directement : un agent peut l'amorcer, seule une personne peut payer. La résiliation d'un plan, la gestion des clés API et la suppression du compte restent dans votre tableau de bord.
Prêt à construire?
Choisissez un plan, créez une clé API, et commencez à intégrer des rapports SEO dans votre produit.