API et MCP AutoAiSeo
Utilisez vos données AutoAiSeo avec vos propres logiciels (API REST) ou avec des assistants IA comme Claude, ChatGPT et Cursor (MCP). Chaque requête n’accède qu’aux données de votre propre compte.
Prise en main
- Dans le tableau de bord, ouvrez l’onglet API et MCP et créez une clé avec le bouton Nouvelle clé ; la clé (
rk_live_…) ne s’affiche qu’une seule fois. - Envoyez-la via l’en-tête
Authorization: Bearerà chaque requête.
curl -H "Authorization: Bearer rk_live_…" https://autoaiseo.example/api/v1/sites
URL de base : https://autoaiseo.example/api/v1. Toutes les réponses sont au format JSON ; en cas de succès, le champ data contient le résultat.
Authentification et autorisations
| Autorisation | Ce qu’elle permet |
|---|---|
read (Lecture) | Compte, sites, articles, mots-clés, rapport de backlinks, évolution et historique des services. |
read_write (Lecture et écriture) | Également : ajout d’idées d’articles, rédaction d’articles (décomptée du quota mensuel de votre forfait) et publication d’articles. |
- 10 clés actives maximum par compte. Les clés peuvent être sans expiration ou valables 30 jours, 90 jours ou 1 an.
- AutoAiSeo ne conserve pas la clé elle-même, seulement son empreinte SHA-256 et son préfixe visible (
rk_live_Ab3dEf). Une clé perdue ne peut pas être récupérée ; révoquez-la et créez-en une nouvelle. - Les clés des comptes résiliés, expirés ou suspendus cessent immédiatement de fonctionner.
- Les cookies de session du navigateur ne sont pas valables pour l’API ; la clé doit être envoyée à chaque requête.
Limite de débit
60 requêtes par minute pour chaque clé (ou connexion OAuth). Dans les réponses, les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining indiquent votre quota. En cas de dépassement de la limite, vous recevez une erreur 429 ainsi que l’en-tête Retry-After qui indique combien de secondes attendre.
Erreurs
{ "error": { "code": "not_found", "message": "Site bulunamadı" } }
| HTTP | code | Signification |
|---|---|---|
| 400 | invalid_request | Paramètre ou corps de requête invalide. |
| 401 | unauthorized, invalid_token | Clé absente, invalide, révoquée ou expirée. |
| 402 | quota_exceeded | Votre quota d’articles de ce mois est atteint. |
| 403 | insufficient_scope | Cette opération nécessite l’autorisation « Lecture et écriture ». |
| 403 | account_suspended | Compte suspendu. |
| 404 | not_found | Aucune entrée, ou elle ne vous appartient pas. |
| 409 | conflict, not_ready, limit_reached | L’article est déjà en cours de rédaction ou en ligne, n’est pas prêt à être publié, ou une limite a été atteinte. |
| 429 | rate_limited | Limite de débit dépassée. |
| 502 | publish_failed | La destination de publication (WordPress, Shopify…) a refusé la publication. |
| 500 | internal_error | Erreur serveur inattendue. |
Pagination
Les longues listes acceptent les paramètres page et per_page (100 à 200 maximum) et renvoient les informations suivantes :
"pagination": { "page": 1, "per_page": 50, "total": 132, "total_pages": 3 }
Points de terminaison
GET /api/v1/me
Compte, limites du forfait, utilisation du mois en cours, backlinks supplémentaires et autorisation de la clé utilisée.
GET /api/v1/sites
Vos sites : id, nom de domaine, statut, score de santé SEO, score de confiance, articles en ligne, backlinks actifs, domaines référents, variation sur 30 jours et prochain article.
GET /api/v1/sites/{id}
Résumé du site : profil, paramètres de publication, nombre d’articles (par statut), résumé du réseau de backlinks et résumé de l’évolution sur 30 jours.
GET /api/v1/sites/{id}/progress?range=90d
Rapport d’évolution. range: 30d, 90d, 180d, 365d, all.
GET /api/v1/sites/{id}/articles
Articles (paginés). Paramètres : status (planned, generating, review, approved, published, failed), q (recherche par titre/mot-clé), page, per_page.
GET /api/v1/articles/{id}
Article : titre, meta description, scores (SEO, GEO, lisibilité), FAQ, backlinks partenaires, liens dans le corps (internes/externes/partenaires) et contenu. content: html (par défaut), markdown ou none.
GET /api/v1/sites/{id}/keywords
Mots-clés (paginés) : cluster, intention de recherche, priorité et article ciblant le mot-clé (article_id, article_status). Paramètres : cluster, q, page, per_page.
GET /api/v1/sites/{id}/backlinks
Rapport de backlinks : crédits, liens actifs/en attente, domaines référents, répartition des ancres, liens reçus (paginés) et derniers liens donnés.
GET /api/v1/sites/{id}/services
Le travail effectué par AutoAiSeo pour le site : totaux, 12 derniers mois et historique (30 par page). Paramètres : kind, q, page.
POST /api/v1/sites/{id}/articles read_write
Ajoute une idée d’article au plan de contenu (statut planned). Sans date, l’article est placé au lendemain du dernier article du plan ; le jour venu, AutoAiSeo le rédige. Ne consomme pas de quota.
curl -X POST -H "Authorization: Bearer rk_live_…" -H "Content-Type: application/json" \
-d '{"title":"Filtre kahve nasıl demlenir?","target_keyword":"filtre kahve demleme","angle":"Yeni başlayanlar için"}' \
https://autoaiseo.example/api/v1/sites/12/articles
Corps : title (obligatoire, 5–200), target_keyword, cluster, angle, scheduled_for (YYYY-MM-DD). Réponse 201.
POST /api/v1/articles/{id}/generate read_write
Lance la rédaction de l’article en arrière-plan (202, statut generating). Les mêmes règles que dans le tableau de bord s’appliquent : la rédaction est décomptée de votre quota mensuel (réécrire un article déjà rédigé ce mois-ci est gratuit) et un article en ligne ne peut pas être réécrit. Une fois la rédaction terminée, le statut devient review olur.
POST /api/v1/articles/{id}/publish read_write
Envoie l’article rédigé vers la destination de publication du site (blog AutoAiSeo, WordPress, Shopify, Webflow, webhook) et renvoie l’adresse de publication.
Serveur MCP
Adresse : https://autoaiseo.example/mcp — couche de transport Streamable HTTP (réponses JSON). Versions du protocole : 2026-07-28 et les anciennes versions avec négociation (2025-11-25, 2025-06-18, 2025-03-26).
L’authentification se fait de l’une des deux manières suivantes :
- OAuth — les connecteurs comme Claude et ChatGPT ouvrent la page de connexion et d’autorisation de AutoAiSeo lorsque vous ajoutez l’adresse ; aucune clé API n’est nécessaire. Cet accès apparaît dans le tableau de bord, sous Applications connectées, d’où vous pouvez supprimer la connexion.
- Clé API — dans les clients comme Cursor, Claude Code ou VS Code, avec
Authorization: Bearer rk_live_…dans l’en-tête des requêtes.
Claude
Paramètres → Connecteurs → Ajouter un connecteur personnalisé, collez l’adresse MCP comme URL et cliquez sur Connecter.
ChatGPT
Paramètres → Applications et connecteurs → Paramètres avancés, activez le mode développeur, puis utilisez Créer un connecteur pour choisir l’adresse MCP et l’authentification OAuth.
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"autoaiseo": {
"url": "https://autoaiseo.example/mcp",
"headers": { "Authorization": "Bearer rk_live_…" }
}
}
}
Claude Code
claude mcp add --transport http autoaiseo https://autoaiseo.example/mcp --header "Authorization: Bearer rk_live_…"
Outils MCP
Les résultats des outils contiennent un court résumé textuel et la même donnée sous forme structurée (structuredContent). Les outils d’écriture ne sont listés que si l’autorisation d’écriture a été accordée.
| Outil | Ce qu’il fait |
|---|---|
list_sites | Sites et métriques récapitulatives ; pour les autres outils : site_id. |
site_overview | Profil du site, métriques, nombre d’articles, résumé du réseau de backlinks. |
site_progress | Rapport d’évolution sur une période (début et situation actuelle, étapes clés). |
list_articles | Articles ; filtre par statut et par texte, paginé. |
get_article | Contenu de l’article (markdown/HTML), scores, liens, FAQ. |
list_keywords | Mots-clés et articles qui les couvrent. |
backlink_report | Rapport du réseau de backlinks et liens reçus. |
services_history | Le détail du travail effectué par AutoAiSeo. |
add_article_idea yazma | Ajoute une idée d’article au plan de contenu. |
generate_article yazma | Fait rédiger l’article (décompté du quota). |
publish_article yazma | Publie l’article. |
OAuth (pour les développeurs de clients MCP)
AutoAiSeo intègre un petit serveur d’autorisation OAuth 2.1 conforme à la spécification d’autorisation MCP.
| Informations sur la ressource protégée | /.well-known/oauth-protected-resource (et /mcp en suffixe) |
| Informations du serveur d’autorisation | /.well-known/oauth-authorization-server |
| Enregistrement du client | Client ID Metadata Documents (https client_id) ou enregistrement dynamique : POST /oauth/register (clients publics uniquement, token_endpoint_auth_method: none) |
| Autorisation | GET /oauth/authorize — response_type=code, PKCE S256 zorunlu, resource (RFC 8707), dans la réponse iss (RFC 9207) |
| Clé | POST /oauth/token — authorization_code et refresh_token |
| Annuler | POST /oauth/revoke (RFC 7009) |
| Portées | read, write (l’écriture inclut la lecture). L’utilisateur choisit le niveau sur l’écran de consentement. |
- Les adresses de redirection doivent être en https ou
localhost/127.0.0.1; la correspondance doit être exacte (le port est libre pour les adresses loopback). - Le code d’autorisation est valable 2 minutes et à usage unique ; une seconde utilisation révoque tous les jetons de cette connexion.
- Le jeton d’accès est valable 1 heure, le jeton d’actualisation 30 jours. Les jetons d’actualisation changent à chaque utilisation ; réutiliser un ancien jeton d’actualisation ferme la connexion.
- Les jetons d’accès ne sont délivrés que pour le serveur MCP ; l’API REST nécessite une clé API personnelle.
- En cas de portée insuffisante, le code
403etWWW-Authenticate: Bearer error="insufficient_scope", scope="read write"sont renvoyés.
Confidentialité
Le journal d’activité API visible dans le tableau de bord ne contient que la méthode, le chemin, le code de statut, la durée, le préfixe visible de la clé (ou le nom de l’application OAuth) et l’horodatage. Le contenu des requêtes et des réponses ainsi que les adresses IP ne sont pas enregistrés ; les 1 000 dernières requêtes sont conservées pour chaque compte.