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

  1. 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.
  2. 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

AutorisationCe 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ı" } }
HTTPcodeSignification
400invalid_requestParamètre ou corps de requête invalide.
401unauthorized, invalid_tokenClé absente, invalide, révoquée ou expirée.
402quota_exceededVotre quota d’articles de ce mois est atteint.
403insufficient_scopeCette opération nécessite l’autorisation « Lecture et écriture ».
403account_suspendedCompte suspendu.
404not_foundAucune entrée, ou elle ne vous appartient pas.
409conflict, not_ready, limit_reachedL’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.
429rate_limitedLimite de débit dépassée.
502publish_failedLa destination de publication (WordPress, Shopify…) a refusé la publication.
500internal_errorErreur 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.

OutilCe qu’il fait
list_sitesSites et métriques récapitulatives ; pour les autres outils : site_id.
site_overviewProfil du site, métriques, nombre d’articles, résumé du réseau de backlinks.
site_progressRapport d’évolution sur une période (début et situation actuelle, étapes clés).
list_articlesArticles ; filtre par statut et par texte, paginé.
get_articleContenu de l’article (markdown/HTML), scores, liens, FAQ.
list_keywordsMots-clés et articles qui les couvrent.
backlink_reportRapport du réseau de backlinks et liens reçus.
services_historyLe détail du travail effectué par AutoAiSeo.
add_article_idea yazmaAjoute une idée d’article au plan de contenu.
generate_article yazmaFait rédiger l’article (décompté du quota).
publish_article yazmaPublie 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 clientClient ID Metadata Documents (https client_id) ou enregistrement dynamique : POST /oauth/register (clients publics uniquement, token_endpoint_auth_method: none)
AutorisationGET /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
AnnulerPOST /oauth/revoke (RFC 7009)
Portéesread, 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 403 et WWW-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.