Développez avec AutoSeoPro.aiAPI REST et connecteur MCP
Lisez vos sites, articles, liens entrants, mots-clés, audits et statistiques, modifiez vos articles en toute sécurité et connectez des assistants IA comme Claude, Cursor et ChatGPT à votre espace de travail.
Inclus dans les offres Growth, Agency, Scale et Enterprise
Ce que vous pouvez faire
Lisez les sites, les articles avec leur HTML complet, les liens entrants, la recherche de mots-clés, les synthèses d'audits techniques et les statistiques mensuelles, y compris les clics et impressions de la Search Console.
Modifiez le titre ou le contenu HTML d'un article et remplacez son image à la une. Chaque modification est une révision restaurable et rien n'est publié automatiquement.
Connectez Claude, Cursor, ChatGPT et d'autres clients MCP pour qu'un assistant travaille avec vos données SEO en conversation.
Recevez des webhooks signés lorsque des articles sont publiés, que des audits se terminent, que des liens entrants sont obtenus, et plus encore.
Une clé ou une connexion ne voit que les sites de l'espace de travail qui l'a créée, ou un seul site si vous la limitez.
Authentification
Créez une clé dans Paramètres → Développeurs et envoyez-la avec chaque requête, comme jeton Bearer ou dans l'en-tête X-API-Key. Une clé n'est affichée qu'une fois, n'est stockée que sous forme d'empreinte, peut expirer et peut être révoquée à tout moment.
URL de base: https://autoseopro.ai/api/v1
Authorization: Bearer rk_…
# or
X-API-Key: rk_…
Chaque clé ne porte que les autorisations que vous choisissez. Une autorisation de lecture ne permet jamais de modification.
Autorisation
Permet
sites:read
Lister les sites
articles:read
Lire les articles et leur HTML
articles:write
Modifier le titre et le contenu des articles, remplacer les images à la une
audits:read
Lire les synthèses d'audits techniques
keywords:read
Lire les mots-clés et les clusters
reports:read
Lire les statistiques et les synthèses Search Console
backlinks:read
Lire les liens entrants
metadata:read
Lire les propositions de titre et de description SEO
metadata:write
Approuver ou refuser les propositions de métadonnées (toujours confirmé d'abord)
approvals:write
Approuver des articles pour publication (toujours confirmé d'abord)
generation:write
Demander de nouveaux articles dans les limites de l'offre (toujours confirmé d'abord)
sharing:write
Créer des liens de partage de rapport client (toujours confirmé d'abord)
notifications:read
Lire les notifications
social:read
Lire le planning et les résultats des réseaux sociaux
Vous pouvez limiter une clé à un site. Les autres sites répondent alors 403 avec le code site_not_allowed.
L'API n'accepte jamais une session de navigateur. Une requête qui ne porte qu'un cookie de connexion AutoSeoPro.ai est refusée avec le code session_auth_not_supported.
Limites de débit
60 requêtes par minute et par clé d'API, REST et MCP confondus.
200 modifications d'articles par espace de travail et par jour UTC (modifications de titre ou de contenu et remplacements d'image à la une).
Au-delà d'une limite, vous recevez 429 avec un en-tête Retry-After. Attendez ce nombre de secondes avant de réessayer.
Pagination
Les points de terminaison de liste acceptent page (à partir de 1) et per_page (25 par défaut, 100 au maximum) et renvoient un objet pagination avec le total.
Toutes les erreurs ont la même forme JSON. Basez-vous sur code, qui est stable ; message est une indication pour les développeurs et peut changer.
{
"error": {
"code": "insufficient_scope",
"message": "The API key does not carry the scope this operation needs.",
"status": 403,
"request_id": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b"
}
}
Cette référence est générée à partir du document OpenAPI et affichée en anglais.
Code
HTTP
Signification
unauthorized
401
Send an API key as `Authorization: Bearer rk_…` or `X-API-Key: rk_…`.
invalid_token
401
The API key is not valid.
token_expired
401
The API key has expired. Create a new one in Settings → Developers.
token_revoked
401
The API key was revoked.
session_auth_not_supported
401
The API does not accept browser sessions. Use an API key.
insufficient_scope
403
The API key does not carry the scope this operation needs.
plan_upgrade_required
403
API access is not included in this workspace's plan.
subscription_inactive
403
The workspace subscription is not active.
site_not_allowed
403
The API key is limited to a different website.
actor_not_allowed
403
The person this connection acts for may not make this change (their role or website access does not allow it).
not_found
404
No such resource in this workspace.
method_not_allowed
405
That HTTP method is not supported on this path.
stale_article
409
The article changed since the content hash you sent. Fetch it again and retry.
article_busy
409
The article cannot be edited right now (it is publishing, queued or not eligible for an update).
not_decidable
409
This item is no longer waiting for a decision. Read it again to see its current state.
confirmation_stale
409
The item changed after the preview. Run the preview again and confirm the new result.
payload_too_large
413
The request body is too large.
unsupported_media_type
415
Unsupported Content-Type for this operation.
invalid_request
422
The request is not valid. See `details`.
nothing_to_update
422
Send at least one of `title` or `body_html`.
unsafe_html
422
The HTML contains elements or attributes the article editor does not allow.
protected_links_removed
422
The edit removes internal links that AutoSeoPro.ai placed. Keep them, or edit the article in AutoSeoPro.ai.
image_invalid
422
The image must be a JPEG, PNG, WebP, GIF or AVIF file within the size limit.
image_fetch_failed
422
The image URL could not be fetched (it must be a public https URL).
confirmation_invalid
422
The confirmation token is not valid for this action or this connection. Run the matching preview first.
confirmation_expired
422
The confirmation token has expired or was already used. Run the preview again.
rate_limited
429
Too many requests. Slow down and retry after the Retry-After interval.
edit_quota_exceeded
429
The daily article-edit allowance for this workspace is used up.
plan_limit_reached
429
The plan's allowance for this is used up for the current period.
internal_error
500
Something went wrong on our side. Quote the request id if you contact support.
image_hosting_unavailable
503
Image uploads are not available on this installation; send a public image URL instead.
service_unavailable
503
The service is temporarily unavailable. Retry shortly.
Points de terminaison
Cette référence est générée à partir du document OpenAPI et affichée en anglais.
GET/sites
List websites
Websites in the workspace that owns the API key. A key limited to one website sees only that website.
Articles for one website, newest first, without their bodies. `from`/`to` filter on the publication date, or the creation date for unpublished articles.
{
"data": {
"id": "9b8e7d6c-5a4b-4c3d-8e2f-1a0b9c8d7e6f",
"site_id": "4f1c2a9e-7b1d-4c55-9a51-1f2e3d4c5b6a",
"title": "How to Fix a Leaking Tap",
"status": "published",
"target_keyword": "fix leaking tap",
"word_count": 1640,
"featured_image_url": "https://acmeplumbing.com/wp-content/uploads/tap.jpg",
"external_url": "https://acmeplumbing.com/fix-leaking-tap/",
"published_at": "2026-09-12T08:00:00.000Z",
"scheduled_for": "2026-09-12T08:00:00.000Z",
"created_at": "2026-09-10T15:41:00.000Z",
"content_hash": "3f6c1d0a9b8e7f6d5c4b3a2918f7e6d5c4b3a29180f7e6d5c4b3a29180f7e6d5",
"meta_title": "How to Fix a Leaking Tap (Step by Step)",
"meta_description": "A plumber's guide to stopping a dripping tap in 20 minutes.",
"body_html": "<h2>What you need</h2><p>An adjustable spanner and a new washer.</p>",
"revision": 4
}
}
PUT/articles/{article_id}
Update an article's title or body
Edit the working copy of an article exactly as the AutoSeoPro.ai editor saves it: the HTML is normalised to the editor's allowed subset, unsafe markup is refused, the website's external-link policy is applied, and quality checks are recomputed. Every change is stored as a new revision (source `api`, or `mcp` from the connector) that can be restored from the article page. This never publishes, unpublishes, schedules or changes settings. A published article's working copy can be edited when it is eligible for an update; push it live from AutoSeoPro.ai. Edits that remove internal links AutoSeoPro.ai placed (the related-resources block or tracked contextual links) are refused with `protected_links_removed`. Send `expected_content_hash` (from a read) to refuse the edit with `stale_article` if the article changed in the meantime.
Why the change was made; kept in the activity log.
expected_content_hash
body · facultatif
content_hash from your last read.
Requête
curl -X PUT "https://autoseopro.ai/api/v1/articles/9b8e7d6c-5a4b-4c3d-8e2f-1a0b9c8d7e6f" \
-H "Authorization: Bearer $AUTOSEOPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"How to Fix a Leaking Tap in 20 Minutes","body_html":"<h2>What you need</h2><p>An adjustable spanner, a new washer and 20 minutes.</p>","reason":"Refresh intro","expected_content_hash":"3f6c1d0a9b8e7f6d5c4b3a2918f7e6d5c4b3a29180f7e6d5c4b3a29180f7e6d5"}'
Réponse
{
"data": {
"changed": true,
"revision": 5,
"article": {
"id": "9b8e7d6c-5a4b-4c3d-8e2f-1a0b9c8d7e6f",
"site_id": "4f1c2a9e-7b1d-4c55-9a51-1f2e3d4c5b6a",
"title": "How to Fix a Leaking Tap",
"status": "published",
"target_keyword": "fix leaking tap",
"word_count": 1640,
"featured_image_url": "https://acmeplumbing.com/wp-content/uploads/tap.jpg",
"external_url": "https://acmeplumbing.com/fix-leaking-tap/",
"published_at": "2026-09-12T08:00:00.000Z",
"scheduled_for": "2026-09-12T08:00:00.000Z",
"created_at": "2026-09-10T15:41:00.000Z",
"content_hash": "3f6c1d0a9b8e7f6d5c4b3a2918f7e6d5c4b3a29180f7e6d5c4b3a29180f7e6d5",
"meta_title": "How to Fix a Leaking Tap (Step by Step)",
"meta_description": "A plumber's guide to stopping a dripping tap in 20 minutes.",
"body_html": "<h2>What you need</h2><p>An adjustable spanner and a new washer.</p>",
"revision": 5
}
}
}
POST/articles/{article_id}/featured-image
Replace the featured image
Set a new featured image from a public https URL (JSON body), or upload the image bytes directly with an image Content-Type. JPEG, PNG, WebP, GIF or AVIF up to 5 MB. The URL is fetched once from AutoSeoPro.ai's servers (private and internal addresses are refused) and checked to be a real image. Uploaded images are hosted by AutoSeoPro.ai. The change is stored as a restorable revision and never publishes.
Backlink placements AutoSeoPro.ai earned or recorded for the website, newest first, with their verification state. `from`/`to` filter on when the placement was recorded.
Counts for a reporting period (articles created and published, backlinks verified, keywords tracked) plus the Search Console summary for published articles when Search Console is connected.
Autorisation: reports:read · Outil MCP: get_stats
Paramètres
site_id
path · obligatoire
Website id (from list sites).
period
query · facultatif
this_month, last_month, last_30_days or a calendar month YYYY-MM (UTC). Defaults to this_month.
Scores and check counts from the latest technical SEO/GEO audit, plus the problems of the latest full-site audit in fix-plan order. Read-only; audits are run from AutoSeoPro.ai. For the full plan, trend and example URLs use the full-site audit endpoints.
The website's month-by-month growth record (up to 24 months): Search Console clicks, impressions, CTR, average position, pages with impressions and queries in the top 3/10/100; indexed pages; GA4 sessions; AI visibility. Includes month-over-month and since-start changes. Read-only.
Search Console clicks, impressions, CTR and position (last 28 days vs the 28 before, and last 7 days vs the 7 before), top pages and queries, plus GA4 sessions, AI-assistant referral sessions and top landing pages. Read from AutoSeoPro.ai's stored readings; sections carry a state such as not_connected.
The latest and previous completed AI visibility runs (score 0-100, prompts tested, answers citing the website, engines) and AI crawler / AI assistant visits over the last 28 days vs the 28 before, as measured by the WordPress plugin, Cloudflare or the tracking snippet.
SEO title and meta description proposals for the website's pages, newest first, with what the page served at the time. `state=proposed` lists the ones waiting for a decision.
Links verified live now, lost links, referring domains and, per link where measured, the growth proof: Search Console clicks before vs after the link went live and GA4 referral sessions.
Whether the website has an active client report share link and when it expires. The link URL is shown only once, when created through preview/apply client report link; no e-mail is ever sent by the API.
Latest usable technical audit scores and the ten highest-priority problems of the latest full-site audit, plus real-user Core Web Vitals (p75 LCP, INP, CLS, TTFB over 28 days, mobile and desktop) for the whole site and for AutoSeoPro.ai article pages vs the rest of the site.
The latest completed full-site audit: site health, what was covered, the prioritised fix plan (fix these 5 first, quick wins, bigger projects, each with why, how, affected pages and example URLs), the health-score history of the stored audits, what is new, fixed or worse since the previous audit, and checks that could not measure something. Read-only; audits are run from AutoSeoPro.ai.
Every kind of problem the latest completed full-site audit found, highest priority first, each with why, how, affected-page count and example URLs. Filter by severity, impact or area. Read-only.
Only issues of this impact (what fixing them is worth). (high, medium, low)
category
query · facultatif
Only this area of the site. (crawlability, indexability, links, metadata, content, images, structured_data, international, performance, security, accessibility, mobile, ai_readiness)
The URLs the latest completed full-site audit found with one issue (50 per page, most linked-to first), optionally one page type. Only the latest audit keeps its per-URL results. Read-only.
The Social Media Autopilot add-on tier in force for the website and its Social AI Manager plan for the coming days (default 7, max 31): the brief's content pillars and cadence, and the rolling plan board — one idea per card with its posts on each platform (time, status, caption excerpt), whether it is approved, awaiting approval, locked (inside the 24-hour lock) or being regenerated. Read-only.
Totals for posts published in the period (default the last 30 days): impressions, reach, engagements, clicks and video views by platform, ideas per content pillar, plus the latest published posts with their links.
Preview approving or rejecting a metadata proposal
Shows exactly which title/description would be approved (or that the proposal would be rejected) and returns a confirmation token valid for 10 minutes. Changes nothing. Approval does not by itself change the live page: AutoSeoPro.ai applies approved metadata through the website connection as configured.
Records the approval or rejection exactly as previewed. CHANGES DATA. Requires the confirmation token from the preview (same connection, within 10 minutes, single use); refused with confirmation_stale if the proposal changed meanwhile.
Shows the article, its current status and what approval would do (scheduled articles keep their date; others become ready to publish), plus the latest human fact-check status. Returns a confirmation token. Changes nothing. Fact-checks are recorded by a person in AutoSeoPro.ai, never through the API.
Records the approval previewed by preview approval, as the person the connection acts for. CHANGES DATA and lets AutoSeoPro.ai publish the article on its schedule. Requires the preview's confirmation token; refused if the article changed after the preview.
Checks a tracked keyword (by id or exact text) and the plan's article allowance, and returns a confirmation token. Changes nothing. Keywords must already be tracked in AutoSeoPro.ai.
Queues article generation for the previewed keyword, using one article from the plan allowance. CHANGES DATA. The article arrives as a draft for review; it is never published without approval. Requires the preview's confirmation token.
Shows which report sections a new client share link would include (default all) and that it is valid for 30 days. Returns a confirmation token. Changes nothing. No e-mail is sent.
Creates the previewed client report link and returns its URL once (AutoSeoPro.ai keeps only a fingerprint). CHANGES DATA: anyone with the link can view the report until it expires or is revoked in AutoSeoPro.ai. No e-mail is sent.
Le HTML des articles suit le même traitement que dans l'éditeur AutoSeoPro.ai : il est normalisé selon les éléments autorisés par l'éditeur, le balisage dangereux est refusé (unsafe_html) et la politique de liens externes de votre site est appliquée.
Les modifications qui retirent des liens internes placés par AutoSeoPro.ai, qu'il s'agisse du bloc de contenus associés ou de liens suivis par le maillage interne, sont refusées avec protected_links_removed. Les déplacer ou changer leur texte d'ancre reste possible.
Envoyez expected_content_hash issu de votre dernière lecture pour qu'une modification n'écrase jamais celle de quelqu'un d'autre (stale_article).
Chaque modification est enregistrée comme une révision marquée API ou Connecteur MCP. Ouvrez l'article dans AutoSeoPro.ai pour voir son historique et restaurer n'importe quelle version antérieure.
L'API ne publie, ne dépublie, ne programme ni ne supprime jamais d'article, et ne modifie jamais les paramètres.
Chaque appel est consigné dans le journal d'activité de l'espace de travail avec la clé, l'opération, le site et le résultat.
Les autres modifications (approuver des métadonnées ou des articles, demander des articles, créer des liens de rapport client) se font en deux étapes : un aperçu ne change rien et renvoie un jeton de confirmation valable 10 minutes ; l'appel apply correspondant effectue la modification une fois, pour la même clé.
Webhooks
Ajoutez des points de terminaison dans Paramètres → Développeurs et choisissez les événements souhaités. AutoSeoPro.ai envoie un POST JSON signé à votre point de terminaison HTTPS, réessaie les échecs avec un délai croissant et met en pause un point de terminaison qui échoue en continu.
Vérifiez chaque envoi : calculez un HMAC-SHA256 sur "horodatage.corps brut" avec votre secret de signature, comparez-le en temps constant à l'en-tête hexadécimal rankora-signature et rejetez les horodatages de plus de cinq minutes.
Node.js
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody: the exact request body string, before JSON.parse
export function verifyAutoSeoProWebhook(rawBody, headers, secret) {
const timestamp = Number(headers["rankora-timestamp"]);
if (!Number.isFinite(timestamp) || Math.abs(Date.now() - timestamp) > 5 * 60_000) return false;
const expected = createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest();
const given = Buffer.from(String(headers["rankora-signature"] ?? ""), "hex");
return given.length === expected.length && timingSafeEqual(given, expected);
}
Connecteur MCP
Le serveur MCP de AutoSeoPro.ai permet aux assistants IA d'utiliser l'API comme des outils. Une connexion ne voit que les sites de l'espace de travail qui l'a autorisée.
list_sitesList the websites this AutoSeoPro.ai connection can see. Call this first to get site ids for the other tools.
list_articlesList a website's articles (id, title, status, dates, live URL), newest first. Filter by status or date range.
get_articleGet one article with its full HTML body, SEO title, meta description and content_hash.
update_articleChange an article's title and/or HTML body. Saved as a restorable revision; never publishes. Refused if it removes internal links AutoSeoPro.ai placed. Pass expected_content_hash from get_article to avoid overwriting someone else's change.
replace_featured_imageReplace an article's featured image with a public https image URL. Saved as a restorable revision; never publishes.
list_backlinksList backlinks AutoSeoPro.ai earned or recorded for a website, with live verification state. Filter by state or date range.
get_statsGet a website's numbers for a period (this_month, last_month, last_30_days or YYYY-MM): articles, backlinks, keywords and the Search Console clicks/impressions summary.
get_keywordsList a website's keywords with volume, difficulty, intent, cluster and Search Console position/clicks. Filter by status or cluster.
get_audit_summaryGet the latest technical SEO/GEO audit scores, check counts and open issues for a website.
get_performanceGet a website's Google Search Console and GA4 numbers: last 28 days vs the 28 before, last 7 days vs the 7 before, top pages and queries, sessions and AI-assistant referrals. Use it to explain traffic changes; it never estimates.
get_geo_visibilityGet a website's latest AI visibility (GEO) run score and citations, and AI crawler / AI assistant visits for the last 28 days.
list_metadata_proposalsList a website's SEO title / meta description proposals (page URL, current vs proposed, state). Filter state=proposed for the ones awaiting a decision.
get_backlink_reportGet verified live backlinks, lost links, referring domains and the measured growth each link brought (Search Console before/after, GA4 referrals).
get_client_report_linkCheck whether a website has an active client report share link and when it expires. To create a new link, use preview_client_report_link then apply_client_report_link.
list_notificationsList recent AutoSeoPro.ai notifications (published articles, audits, alerts) for the connected person; filter unread.
get_site_healthGet a website's latest technical audit scores and top issues plus real-user Core Web Vitals, including whether AutoSeoPro.ai article pages are slower than the rest of the site. Use it for 'what should I fix first?'.
get_crawl_summaryGet the latest full-site audit of a website: site health, the prioritised fix plan (fix these first, quick wins, bigger projects), the trend since the previous audits and what could not be measured. Use it for 'what should I fix first?'.
list_crawl_issuesList the problems found by a website's latest full-site audit, highest priority first, with why, how, affected pages and example URLs. Filter by severity, impact or area.
list_crawl_issue_urlsList the URLs affected by one full-site audit issue (use an issue code from list_crawl_issues), 50 per page, most linked-to first; optionally one page type.
get_social_planShow a website's Social AI Manager plan (next 7 days by default): ideas with their pillar, posts per platform, time, caption excerpt and approval/lock state, plus the brief's pillar mix and cadence. Read-only.
list_social_resultsGet a website's social media results for a period (default last 30 days): posts, impressions, reach, engagements and clicks by platform. Read-only.
preview_metadata_proposal_decisionStep 1 of 2 to approve or reject a metadata proposal: shows what would change and returns a confirmation_token. Changes nothing. Show the preview to the user and only call apply_metadata_proposal_decision after they explicitly confirm.
apply_metadata_proposal_decisionStep 2 of 2. CHANGES DATA: records the approval/rejection previewed by preview_metadata_proposal_decision. Requires its confirmation_token. Only call after the user explicitly confirmed the preview.
preview_article_approvalStep 1 of 2 to approve an article for publishing: shows the article and what approval would do, returns a confirmation_token. Changes nothing. Fact-checking cannot be done here (people do it in AutoSeoPro.ai).
apply_article_approvalStep 2 of 2. CHANGES DATA: approves the article previewed by preview_article_approval so it can be published. Requires its confirmation_token. Only call after the user explicitly confirmed.
preview_article_requestStep 1 of 2 to have AutoSeoPro.ai write a new article for a tracked keyword: checks the keyword and the plan allowance, returns a confirmation_token. Changes nothing.
apply_article_requestStep 2 of 2. CHANGES DATA and uses plan allowance: queues the article previewed by preview_article_request. Requires its confirmation_token. Only call after the user explicitly confirmed.
preview_client_report_linkStep 1 of 2 to create a shareable client report link (anyone with the link can view the report for 30 days): shows the sections, returns a confirmation_token. Changes nothing; no e-mail is sent.
apply_client_report_linkStep 2 of 2. CHANGES DATA: creates the shareable client report link previewed by preview_client_report_link and returns its URL. Requires its confirmation_token. Only call after the user explicitly confirmed.
Claude (claude.ai et Claude Desktop)
Ouvrez Paramètres → Connecteurs → Ajouter un connecteur personnalisé, collez l'URL du serveur, connectez-vous à AutoSeoPro.ai et cliquez sur Autoriser.
https://autoseopro.ai/api/mcp
ChatGPT
Ouvrez Paramètres → Applications et connecteurs → Paramètres avancés et activez le mode développeur. Créez ensuite un connecteur, collez l'URL du serveur, choisissez OAuth, connectez-vous à AutoSeoPro.ai et cliquez sur Autoriser.
https://autoseopro.ai/api/mcp
Claude Code
Exécutez ceci dans votre terminal avec une clé d'API créée dans Paramètres → Développeurs :
Tout client compatible Streamable HTTP fonctionne avec un en-tête Authorization: Bearer portant une clé d'API. Les clients compatibles OAuth découvrent la connexion automatiquement.
Une connexion OAuth crée une clé d'API valable 30 jours, nommée d'après l'application. Elle apparaît dans Paramètres → Développeurs, où vous pouvez la révoquer à tout moment.
Publier sur votre propre site
Vous n’êtes pas sur WordPress ou Webflow ? Créez un petit récepteur et AutoSeoPro.ai publie, modifie et supprime des articles sur votre site via une API signée et idempotente. Le guide couvre les cinq étapes de mise en place, les en-têtes, la signature, les réponses exactes et des kits à copier pour Node.js, PHP et Python.
La description complète lisible par machine, générée à partir de la même source que l'API elle-même. Importez-la dans Postman, Insomnia ou un générateur de code.