GetLinkFastGetLinkFast

Documentation développeur

API et serveur MCP GetLinkFast

Cherchez des sites, remplissez votre panier et commandez en crédits sans ouvrir le tableau de bord : depuis un script, un scénario Make ou n8n, ou un agent IA comme Claude ou Cursor. L'API et le serveur MCP utilisent la même clé et rendent le même JSON.

À quoi ça sert

  • Agences et équipes SEO : branchez vos outils internes et vos tableaux de suivi sur votre compte. Catalogue, panier, commandes et statuts se lisent en JSON.
  • Agents IA : demandez à Claude Code ou Cursor « trouve-moi 5 sites finance DR 40+ et commande ». L'agent cherche, vous montre le récapitulatif et ne commande qu'après votre accord.
  • Make, n8n, Zapier : un module HTTP et une clé suffisent.

L'API vend l'article invité (guest_post), l'insertion de lien (link_insertion) et les packs SEO/GEO, en crédits uniquement. L'achat de crédits et les autres offres restent dans le tableau de bord.

Créer une clé

  1. Ouvrez Tableau de bord → Accès API.
  2. Nommez la clé (par exemple « Agent Claude » ou « Reporting Make ») et choisissez ses droits. Sur une clé qui peut commander, vous pouvez fixer un plafond par commande et un plafond sur 24 heures.
  3. Copiez la clé. Elle commence par glf_live_ et ne s'affiche qu'une seule fois : nous n'en gardons qu'une empreinte.
  4. Envoyez-la dans l'en-tête de chaque requête : Authorization: Bearer glf_live_…

10 clés actives au maximum par organisation. Une clé révoquée cesse aussitôt de fonctionner, tout comme les clés d'un membre qui quitte l'organisation. Gardez la clé hors de vos dépôts de code : quiconque la détient agit au nom de votre organisation.

Les droits d'une clé

Chaque clé porte un ou plusieurs droits. Une requête sans le droit nécessaire reçoit 403 insufficient_scope, et un agent IA ne voit que les outils permis.

DroitDonne accès àQui peut l'accorder
readCatalogue, catégories, compte et solde, historique des crédits, commandes, devis de pack.Toujours inclus.
cartAjouter, modifier et retirer des lignes du panier.Tout membre de l'organisation.
purchaseCommander le panier ou un pack, en crédits. Inclut le panier.Le propriétaire de l'organisation uniquement.

Démarrage rapide

Toutes les routes commencent par https://www.getlinkfast.com/api/v1. Gardez le www : l'adresse sans www redirige, et un client HTTP n'envoie plus l'en-tête Authorization après une redirection.

Les montants sont en euros hors TVA. Les réponses sont en JSON, les champs en snake_case.

1. Lire votre compte et votre solde
curl https://www.getlinkfast.com/api/v1/account \
  -H "Authorization: Bearer glf_live_…"
2. Chercher des sites : DR 40 et plus, en français, article invité
curl "https://www.getlinkfast.com/api/v1/sites?dr_min=40&language=fr&product=guest_post&sort=dr&dir=desc&page_size=10" \
  -H "Authorization: Bearer glf_live_…"
3. Ajouter un article invité au panier
curl -X POST https://www.getlinkfast.com/api/v1/cart/items \
  -H "Authorization: Bearer glf_live_…" \
  -H "Content-Type: application/json" \
  -d '{"site_id":"8a1f0c3e-5b7d-4e2a-9c61-0f3b2d4e6a17","product_type":"guest_post","target_url":"https://www.example.com/invoicing","anchor":"invoicing software","topic":"How to choose invoicing software for a small business"}'

Remplacez site_id par l'id d'un site de l'étape 2. N'envoyez jamais de prix : le serveur le calcule.

4. Commander le panier en crédits
curl -X POST https://www.getlinkfast.com/api/v1/checkout \
  -H "Authorization: Bearer glf_live_…" \
  -H "Idempotency-Key: order-2026-10-14-001"

La réponse donne l'id de la commande, le montant débité et votre solde restant. Suivez ensuite son avancement avec GET /orders/{id}.

Commander en crédits

L'API commande uniquement en crédits et ne déclenche jamais de paiement par carte. Les crédits se rechargent dans le tableau de bord.

Une commande prend les lignes guest_post et link_insertion du panier. Les autres lignes, ajoutées depuis le tableau de bord, restent au panier et sont listées dans skipped_items.

Aucun plafond par défaut : votre solde est la seule limite. Sur une clé qui peut commander, fixez un plafond par commande et un plafond sur 24 heures glissantes. Une commande qui les dépasse est refusée (403 spending_limit_exceeded, avec le reste disponible), sans débit.

Solde insuffisant : 402 insufficient_credits, avec le montant manquant et le lien de la page Crédits, à transmettre à une personne de votre équipe. Rien n'est débité.

Ensuite, tout se passe comme depuis le tableau de bord : email de confirmation et suivi dans l'écran Commandes, où la commande porte le nom de la clé qui l'a passée.

L'en-tête Idempotency-Key

  • Obligatoire sur POST /checkout et POST /packs/orders : de 8 à 128 caractères ASCII imprimables, sans espace. Sans lui : 400 idempotency_key_required.
  • Une valeur égale une intention d'achat. Renvoyer la même valeur rend la commande d'origine (200, "replayed": true) sans second débit, même si le panier a changé depuis.
  • Après un délai dépassé ou une coupure réseau, relancez avec la même valeur : vous ne paierez pas deux fois.
  • Pour un nouvel achat, générez une nouvelle valeur, un UUID par exemple.
  • Sur POST /checkout comme sur POST /packs/orders, une valeur qui a déjà servi à un autre achat est refusée : 409 idempotency_conflict, sans débit. Pour un pack, la même valeur envoyée avec un autre contenu l'est aussi.
  • Côté MCP, le jeton de confirmation joue ce rôle : vous n'avez rien à générer.

Limites

  • 120 requêtes par minute et par clé pour la lecture, et autant, séparément, pour le panier : l'une n'entame pas l'autre.
  • 10 appels par minute et par clé vers les routes ou outils d'achat — rejeux, refus et étape de récapitulatif MCP compris.
  • 300 requêtes HTTP par minute et par clé sur le serveur MCP. Chaque outil appelé compte en plus dans la limite de son droit.
  • Au-delà : 429 rate_limited. L'attente, en secondes, est donnée par l'en-tête Retry-After en HTTP, et par details.retry_after_seconds dans le résultat d'un outil MCP.
  • 100 résultats par page au maximum (page_size).
  • Corps de requête : 1 Mo au maximum.

Codes d'erreur

Toute erreur a la même forme. Testez code : il est stable. message est en anglais et s'adresse au développeur ; details précise le champ fautif ou les montants.

Exemple : solde insuffisant
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this order. Nothing was debited. Ask a human to top up at credits_url, then retry with the same Idempotency-Key.",
    "details": {
      "missing_amount": 42,
      "credits_url": "https://www.getlinkfast.com/dashboard/credits"
    }
  }
}
CodeHTTPCe que ça veut dire
invalid_json400Le corps de la requête n'est pas un JSON lisible. Vérifiez la syntaxe et l'en-tête Content-Type: application/json.
idempotency_key_required400En-tête Idempotency-Key absent ou mal formé sur une route d'achat. Envoyez une valeur de 8 à 128 caractères.
invalid_api_key401Clé absente, mal formée, inconnue ou révoquée, ou créée par un membre qui a quitté l'organisation. Vérifiez l'en-tête Authorization: Bearer glf_live_….
insufficient_credits402Solde insuffisant. details.missing_amount donne le montant manquant, details.credits_url la page où recharger. Rien n'a été débité.
insufficient_scope403La clé n'a pas le droit demandé par cette route ou cet outil. Créez une clé avec ce droit.
spending_limit_exceeded403La commande dépasse un plafond de la clé : par commande (window: order) ou sur 24 heures (window: 24h). details.remaining donne le reste. Rien n'a été débité.
not_found404Ressource introuvable, ou qui n'appartient pas à votre organisation.
method_not_allowed405Serveur MCP : GET et DELETE ne sont pas acceptés. Envoyez chaque message JSON-RPC en POST.
organization_financial_hold409Les achats sont bloqués sur votre organisation. Contactez-nous. Rien n'a été débité.
page_already_sold409Une page du panier (insertion de lien) vient d'être vendue. Retirez la ligne, puis recommandez avec une nouvelle Idempotency-Key.
cart_already_ordered409Une ligne du panier a déjà été commandée par un autre achat (tableau de bord ou autre Idempotency-Key). Relisez le panier avant de recommander avec une nouvelle valeur.
idempotency_conflict409Cette Idempotency-Key a déjà servi pour un autre achat. Utilisez une nouvelle valeur pour un nouvel achat.
not_ready409L'audit n'est pas encore prêt. Attendez le statut ready avec get_audit, puis ajoutez la page.
full_pass_running409Le rapport complet de l'audit est encore en préparation. Réessayez dans quelques minutes. Rien n'a été lancé.
limit_reached409L'audit a déjà 8 pages ajoutées par vous, analyses en cours comprises. Rien n'a été lancé.
already_present409Cette page est déjà dans l'audit, ou son analyse est en cours. Rien n'a été lancé.
already_ordered409Ce lien planifié est déjà commandé : il ne s'annule plus ici.
not_cancellable409Ce lien ne peut pas être annulé pour le moment. Relisez-le avec get_plan.
team_planned409Ce lien a été programmé par notre équipe, pas par l'API : il ne s'annule pas ici. Pour le changer, le propriétaire du compte contacte le support.
payload_too_large413Corps de requête au-delà de 1 Mo.
invalid_parameter422Paramètre de requête invalide, répété ou inconnu. details.fields nomme chaque paramètre fautif et la raison.
invalid_arguments422Combinaison d'arguments invalide, par exemple ni domain ni audit_id, ou les deux. details.field nomme le champ. Rien n'a été fait.
invalid_domain422Domaine ou URL illisible. Envoyez un nom de domaine, par exemple example.com.
own_network_domain422Ce domaine fait partie de notre réseau de publication : il ne peut pas être audité. Rien n'a été lancé.
invalid_body422Champ invalide ou inconnu dans le corps. details.fields nomme chaque champ fautif et la raison.
product_not_available_via_api422L'API vend l'article invité et l'insertion de lien. Les autres produits se commandent depuis le tableau de bord.
image_not_uploaded422L'image mise en avant doit avoir été téléversée sur GetLinkFast depuis le tableau de bord.
cart_empty422Aucune ligne du panier ne se commande par l'API. Rien n'a été débité.
cart_invalid422Des lignes sont incomplètes ou plus disponibles. details.items liste chaque ligne et ses problèmes. Rien n'a été débité.
invalid_pack_input422Le pack ne respecte pas ses règles (details.reason). Rien n'a été débité.
site_unavailable422Ce site n'existe pas ou n'est plus en vente.
target_page_required422Une insertion de lien demande page_id : prenez-le dans la liste des pages du site.
target_page_not_found422Cette page n'appartient pas à ce site.
target_page_sold422Cette page a déjà été vendue.
target_page_withdrawn422Cette page n'est plus proposée.
target_page_already_in_cart422Cette page est déjà dans votre panier.
product_unavailable422Ce site ne vend pas ce produit.
invalid_url422Adresse illisible. Envoyez une adresse complète en http(s), sans identifiant ni port.
other_site422Cette page n'est pas sur le domaine audité. Envoyez une page du même site.
invalid_keyword422Recherche visée trop longue : 120 caractères au plus.
rate_limited429Trop de requêtes pour cette clé. Attendez le nombre de secondes indiqué par l'en-tête Retry-After en HTTP, ou par details.retry_after_seconds dans le résultat d'un outil MCP.
audit_quota_exceeded429Cette clé a déjà lancé 10 audits sur les dernières 24 heures. Rien n'a été lancé : réessayez plus tard.
internal_error500Erreur de notre côté, déjà signalée à l'équipe. Réessayez plus tard : un achat relancé avec la même Idempotency-Key n'est jamais débité deux fois.
engine_unavailable502Le moteur d'audit est momentanément injoignable. Rien n'a été lancé : réessayez plus tard.
packs_unavailable503Les packs SEO/GEO ne sont pas encore disponibles.
confirmation_expiredOutil MCPJeton de confirmation expiré, ou panier, prix ou clé modifiés depuis le récapitulatif. Rien n'a été débité : rappelez l'outil sans jeton pour obtenir un nouveau récapitulatif.
purchase_unavailableOutil MCPLes achats par le serveur MCP sont momentanément indisponibles. Rien n'a été débité. Réessayez plus tard.
unknown_toolOutil MCPOutil inconnu, ou non permis par les droits de la clé. tools/list donne les outils disponibles.
audit_failedOutil MCPCet audit a échoué, aucun plan n'est possible. Lancez-en un nouveau avec run_audit. Rien n'a été fait.
audit_not_readyOutil MCPCet audit n'est pas terminé. Attendez le statut ready avec get_audit, puis rappelez plan_links. Rien n'a été fait.
budget_too_lowOutil MCPLe budget mensuel est sous le minimum de 100 € par mois. Rien n'a été fait.
start_date_too_farOutil MCPLa date de départ est trop lointaine. Le message donne la dernière date permise. Rien n'a été fait.
too_many_pagesOutil MCPUn projet suit un nombre limité de pages. Envoyez moins de nouvelles pages dans target_urls. Rien n'a été fait.
plan_existsOutil MCPCe domaine a déjà des liens planifiés pas encore commandés. Les plans ne se fusionnent pas : retirez-les avec cancel_planned_link, puis recommencez. Rien n'a été fait.
pending_proposalsOutil MCPNotre équipe étudie des liens proposés pour ce domaine : aucun plan ne peut s'y ajouter pour l'instant. details.count donne leur nombre et details.retry_after la date après laquelle réessayer (sans programmation d'ici là, ils expirent). Sinon, demandez au propriétaire du compte de contacter le support. Rien n'a été fait.
no_links_foundOutil MCPAucun site du catalogue ne convient à ces pages avec ce budget mensuel. Essayez d'autres pages ou un budget plus haut. Rien n'a été fait.
plan_in_progressOutil MCPCe plan s'enregistre en ce moment. Rappelez plan_links avec le même jeton dans quelques secondes pour lire le résultat.
plan_outcome_unknownOutil MCPL'enregistrement a été interrompu et son résultat est inconnu. Ne confirmez pas à nouveau : lisez le plan avec get_plan.
plan_conflictOutil MCPLe plan ne tient plus tel quel : le projet du domaine a changé, ses dates ne tombent plus dans les mois du budget (qui partent de la confirmation), ou l'un de ses sites n'est plus disponible pour ce domaine. details.reason dit lequel. Rien n'a été écrit : rappelez plan_links sans jeton pour un nouveau résumé.
plan_retryOutil MCPUn autre appel avec ce jeton s'est terminé sans enregistrer le plan. Rappelez plan_links avec le même jeton pour lire le résultat.

Serveur MCP

Le serveur MCP donne à votre agent IA les mêmes fonctions que l'API, avec la même clé. Son adresse : https://www.getlinkfast.com/api/mcp.

Claude Code

Une commande dans votre terminal :

Terminal — Claude Code
claude mcp add --transport http getlinkfast https://www.getlinkfast.com/api/mcp --header "Authorization: Bearer glf_live_…"

Cursor

Dans ~/.cursor/mcp.json. Évitez le fichier .cursor/mcp.json d'un projet : il finit souvent dans le dépôt, avec la clé.

~/.cursor/mcp.json
{
  "mcpServers": {
    "getlinkfast": {
      "url": "https://www.getlinkfast.com/api/mcp",
      "headers": {
        "Authorization": "Bearer glf_live_…"
      }
    }
  }
}

Claude Desktop

Claude Desktop n'envoie pas d'en-tête personnalisé à un serveur distant : il ne peut donc pas transmettre votre clé. Il se branchera nativement avec la connexion OAuth, prévue dans une prochaine version. Aujourd'hui, utilisez Claude Code ou Cursor : ils envoient la clé dans l'en-tête Authorization.

Les outils

L'agent ne voit que les outils permis par les droits de la clé : une clé sans le droit de commander n'a aucun outil d'achat.

read
search_sitesget_sitelist_site_pageslist_categoriesget_accountlist_ordersget_orderget_auditquote_packlist_auditsget_plan
cart
get_cartadd_to_cartupdate_cart_itemremove_cart_itemadd_audit_pagerun_auditcancel_planned_link
purchase
checkoutorder_packplan_links

L'achat en deux temps

  1. L'agent appelle checkout ou order_pack sans confirmation_token : rien n'est débité. Il reçoit le récapitulatif (lignes, total, solde après débit, plafond restant) et un confirmation_token.
  2. Il vous montre ce récapitulatif. Si vous acceptez, il rappelle l'outil avec le confirmation_token : la commande est passée et débitée.
  3. Le jeton vaut 10 minutes. Si le panier, un prix ou la clé change entre-temps, il est refusé (confirmation_expired) et l'agent refait l'étape 1. Rappeler avec le même jeton après une coupure rend la même commande, sans second débit.

Client écrit à la main

Le serveur est sans session : chaque message JSON-RPC part en POST et la réponse arrive en JSON. Envoyez Accept: application/json, text/event-stream et Content-Type: application/json, sinon le serveur répond 406. GET et DELETE répondent 405.

Lister les outils de votre clé
curl -X POST https://www.getlinkfast.com/api/mcp \
  -H "Authorization: Bearer glf_live_…" \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Auditer et planifier

Un agent peut auditer un site, puis étaler des liens sur plusieurs mois à partir du rapport. Quatre étapes, avec les outils du serveur MCP.

  1. run_audit lance l'audit complet d'un domaine : contrôles techniques, visibilité dans ChatGPT et sites où un lien aiderait. Comptez quelques minutes. Rien n'est débité, et le rapport est débloqué avec le quota d'audits de l'organisation quand elle en a un. Limite : 10 audits par clé et par 24 heures ; le même domaine redemandé dans l'heure rend l'audit existant.
  2. get_audit rend l'état et l'étape en cours, puis le rapport dans summary quand le statut passe à ready. Rappelez-le toutes les 30 à 60 secondes. list_audits liste les audits de l'organisation, du plus récent au plus ancien.
  3. plan_links prépare un calendrier à partir d'un audit prêt : un budget mensuel en euros hors TVA (au moins 100 €), de 2 à 12 mois, et en option une date de départ et les pages visées. Comme pour l'achat, deux temps. Sans jeton, rien n'est enregistré : l'agent reçoit le calendrier (liens, dates d'envoi, total) et un confirmation_token valable 10 minutes. Après votre accord, il rappelle l'outil avec les mêmes champs et le jeton, et le plan est enregistré.
  4. get_plan suit chaque lien : page visée, ancre, prix et état (programmé, commandé, publié, annulé ou échoué, avec la cause d'un échec comme insufficient_credits). cancel_planned_link annule un lien planifié par l'API, ou tous ceux d'un domaine pas encore commandés. Les liens programmés par notre équipe restent en place : team_planned pour un lien, skipped_team_planned pour leur nombre.

Rien n'est débité à l'enregistrement du plan. Chaque lien est débité en crédits le jour de son envoi, au prix relu ce jour-là, lors du passage quotidien du matin (vers 06:20 UTC). Si le solde manque ce jour-là, le lien n'est pas commandé et apparaît en échec dans get_plan. Un lien déjà commandé ne s'annule plus.

Droits : run_audit et cancel_planned_link demandent le droit cart, plan_links le droit purchase, et get_audit, list_audits et get_plan le droit read. Les plafonds de dépense de la clé s'appliquent aux liens planifiés.

Dans le tableau de bord, la page Délégation affiche ces liens dans le bloc « Liens programmés ». Le propriétaire de l'organisation peut y retirer les liens planifiés par l'API. Ceux que notre équipe a planifiés se lisent seulement.

Référence

Chaque route avec son droit et l'outil MCP qui lui correspond. Paramètres, schémas de réponse et erreurs route par route : la description OpenAPI 3.1.

RouteDroitOutil MCPRôle
GET /sitesreadsearch_sitesChercher dans le catalogue : métriques, prix, catégorie, langue, produit ; tri et pagination.
GET /sites/{id}readget_siteUn site : métriques, prix et règles de publication.
GET /sites/{id}/pagesreadlist_site_pagesLes pages d'un site ouvertes à l'insertion de lien, avec leur prix et leur trafic Google.
GET /categoriesreadlist_categoriesLes catégories et leurs id, pour le filtre category.
GET /accountreadget_accountOrganisation, solde de crédits, droits et plafonds de la clé, dépense sur 24 heures.
GET /credits/transactionsreadaucunHistorique des crédits.
GET /ordersreadlist_ordersVos commandes, filtrables par statut et par date.
GET /orders/{id}readget_orderUne commande et ses lignes, avec leur statut.
GET /cart/itemscartget_cartLe panier : lignes, prix à jour et problèmes bloquants.
POST /cart/itemscartadd_to_cartAjouter un article invité ou une insertion de lien.
PATCH /cart/items/{id}cartupdate_cart_itemCompléter ou modifier le brief d'une ligne.
DELETE /cart/items/{id}cartremove_cart_itemRetirer une ligne.
GET /audits/{id}readget_auditLire un audit : état, étape en cours, puis le rapport.
POST /audits/{id}/pagescartadd_audit_pageAjouter une page à pousser à un audit prêt (8 au plus). L'analyse tourne 1 à 4 minutes : suivez-la avec get_audit. Rien n'est débité.
POST /checkoutpurchasecheckoutCommander le panier en crédits.
POST /packs/quotereadquote_packChiffrer un pack SEO/GEO, sans débit.
POST /packs/orderspurchaseorder_packCommander un pack SEO/GEO en crédits.
Serveur MCP seulementcartrun_auditLancer l'audit complet d'un domaine. Rien n'est débité.
Serveur MCP seulementreadlist_auditsLister les audits de l'organisation, du plus récent au plus ancien.
Serveur MCP seulementpurchaseplan_linksPlanifier des liens sur 2 à 12 mois à partir d'un audit, en deux temps. Rien n'est débité à l'enregistrement.
Serveur MCP seulementreadget_planLire les liens planifiés d'un domaine : date d'envoi et état de chacun.
Serveur MCP seulementcartcancel_planned_linkAnnuler un lien planifié, ou tous ceux d'un domaine pas encore commandés.

Une question sur l'API ? Écrivez-nous, une personne de l'équipe vous répond.