Nautilinks Backlinks
Search, compare, order and track French backlink placements through a remote MCP server.
Documentation
Achetez des backlinks depuis un agent IA, ou par API
Le catalogue Nautilinks est accessible par API REST et par serveur MCP. Un agent peut choisir ses formats, appliquer vos avantages, utiliser le crédit prépayé puis vous transmettre un lien Stripe uniquement pour le reliquat éventuel.
✓ Auth par clé API✓ Serveur MCP remote✓ Aucune carte débitée sans validation humaine
Disponibilité vérifiable
Ce qui se connecte aujourd'hui — et ce qui arrive ensuite
Disponible
API REST, scripts et n8n
Clé Bearer personnelle, endpoints JSON et webhooks signés.
Disponible
Claude Code, Cursor et clients MCP avec en-têtes
Connexion directe au serveur MCP distant avec la clé Nautilinks.
OAuth en préparation
Répertoires publics ChatGPT et Claude
La clé API actuelle ne suffit pas à une connexion publique native. Le connecteur sera soumis après ajout d’OAuth.
Nous ne présentons pas une future présence dans les répertoires ChatGPT ou Claude comme déjà disponible. Le serveur et les outils existent; la distribution native demande encore une authentification OAuth compatible avec ces plateformes.
Nautilinks vend des backlinks directement, sans marketplace ni commission, sur un réseau de sites que nous éditons nous-mêmes. Cette page décrit l'accès machine à ce même catalogue: une API REST et un serveur MCP, pensés pour qu'un agent LLM puisse chercher un site pertinent, poser une commande et suivre son avancement, sans qu'un humain remplisse de formulaire.
Le principe reste le même que sur le reste du site: le catalogue interrogé par API est public dans sa logique, les prix sont ceux affichés côté humain, et aucune carte n'est jamais débitée sans qu'un humain valide le paiement, que ce soit en amont en approvisionnant le solde prépayé du compte, ou au moment en ouvrant un lien Stripe. L'agent commande, l'humain paie, d'une façon ou de l'autre.
Mise en route
Trois étapes pour connecter un agent
- Créez un compte Nautilinks. Inscription gratuite, aucune carte bancaire demandée à cette étape. C'est ce compte qui reçoit les factures et qui paie, in fine, via Stripe.
- Générez une clé API. Dans l'espace membre, section « Mon compte » puis « Clés API ». La clé (format sn_live_...) s'affiche une seule fois, à copier immédiatement. Jusqu'à 5 clés actives par compte, révocables à tout moment.
- Connectez le MCP ou appelez l'API. Deux chemins équivalents: un client MCP (Claude Code, claude.ai, Cursor…) qui parle au serveur mcp.nautilinks.co, ou des appels HTTP directs sur /api/v1/agent/*. Le contrat JSON est identique des deux côtés.
Sans package à installer
Connecter le serveur MCP
Serveur distant sur Cloudflare (transport HTTP streamable), pas de session ni d'état conservé côté Nautilinks. Chaque appel transporte votre propre clé API.
claude mcp add --transport http nautilinks https://mcp.nautilinks.co/mcp \
--header "Authorization: Bearer YOUR_API_TOKEN"
claude.ai — Réglages → Connecteurs → Ajouter un connecteur personnalisé
URL : https://mcp.nautilinks.co/mcp
En-tête : Authorization: Bearer YOUR_API_TOKEN
Si le client n'accepte pas d'en-tête personnalisé
https://mcp.nautilinks.co/mcp?key=sn_live_votre_cle
Onze outils exposés: catalogue et articles existants, projets et plans de visibilité IA, solde prépayé, création de commandes et suivi des devis/commandes. Même contrat de données que l'API REST ci-dessous pour ces ressources; les webhooks, eux, ne sont accessibles que par appel HTTP direct.
/api/v1/agent/*
Référence API pour agents
Méthode
Endpoint
Renvoie
Scope
GET
/api/v1/agent/catalog
Liste les sites du réseau sur les trois rayons (Plancton, Corail, Nautilus), filtrable (dont par rayon via shelf) et paginée.
read
GET
/api/v1/agent/catalog/:id
Fiche complète d'un site (métriques, prix, rayon, niche).
read
GET
/api/v1/agent/catalog/:id/articles
Articles existants disponibles pour une insertion vendue une seule fois, avec leurs mots-clés et positions.
read
GET
/api/v1/agent/balance
Solde prépayé disponible sur le compte.
read
POST
/api/v1/agent/orders
Crée 1 à 20 liens, applique promo/bienvenue puis crédit; Stripe ne reçoit que le reliquat.
order
GET
/api/v1/agent/orders
Liste les commandes passées avec cette clé.
read
GET
/api/v1/agent/orders/:id
Statut détaillé par lien (à assigner, publié…) et URL publiée une fois en ligne.
read
GET
/api/v1/agent/quotes/:id
Interroge un devis pour savoir si le paiement a été réalisé et sous quel numéro de commande.
read
GET
/api/v1/agent/webhooks
Liste les abonnements webhook actifs de la clé.
read
POST
/api/v1/agent/webhooks
Crée un abonnement (URL + événements), renvoie un secret affiché une seule fois.
order
DELETE
/api/v1/agent/webhooks/:id
Révoque un abonnement webhook.
order
GET
/api/v1/agent/ai-visibility/projects
Liste les projets de visibilité IA du compte.
read
GET
/api/v1/agent/ai-visibility/projects/:id/plan
Produit des lignes de commande prêtes à relire depuis les opportunités IA non couvertes.
read
Authentification
Chaque appel porte l'en-tête Authorization: Bearer sn_live_.... La clé est propre à un compte humain: toute commande créée par API est rattachée à ce compte, facturée sur son adresse, et visible dans son espace membre au même titre qu'une commande passée depuis le panier web. Une clé fraîchement créée porte les deux scopes (read et order) par défaut.
Idempotence des commandes
L'en-tête optionnel Idempotency-Key évite les doublons en cas de rejeu réseau. La clé est liée au corps financier: un rejeu identique renvoie le même devis et la même session Stripe, tandis qu'un corps différent avec la même clé répond idempotency_key_reused.
Plafond quotidien
Un plafond anti-abus s'applique par clé API, de l'ordre d'une vingtaine de commandes par jour. Une fois atteint, l'API répond en 429 avec le code daily_order_cap_reached. Un rejeu identique (même Idempotency-Key) ne compte jamais deux fois.
Remises, crédit puis reliquat Stripe
Le corps accepte promo_code. L'API recalcule le brut, compare ce code à l'offre de bienvenue automatique, applique la meilleure remise, puis le crédit prépayé. Si le crédit couvre le net, la commande est conclue sans Stripe. S'il est partiel, il est placé en hold et payment_url ne facture que le reliquat; un abandon restitue le hold. La réponse détaille gross_total_eur, discount_eur, credit_applied_cents et card_amount_cents. Aucune carte n'est débitée sans validation humaine.
Webhooks
Un abonnement webhook (POST /api/v1/agent/webhooks, scope order, jusqu'à 5 actifs par compte) reçoit order.accepted, order.published et order.cancelled sur une URL HTTPS publique choisie par l'agent. Chaque livraison est signée: l'en-tête Nautilinks-Signature porte un HMAC-SHA256 calculé sur l'horodatage et le corps brut, avec une clé dérivée du secret renvoyé à la création (jamais le secret en clair). GET /api/v1/agent/webhooks liste les abonnements actifs, DELETE /api/v1/agent/webhooks/:id en révoque un.
Bout en bout
Exemple complet, catalogue puis commande
1. Chercher un site dans le catalogue (ici sur le rayon Plancton)
curl -s "https://nautilinks.co/api/v1/agent/catalog?niche=voyage&shelf=Plancton&limit=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
{
"ok": true,
"count": 1,
"total": 1,
"sites": [
{
"id": 214,
"domain": "exemple-voyage.fr",
"niche_label": "Voyage",
"language": "fr",
"tf": 14,
"traffic_monthly": 2100,
"price_eur": 5,
"price_shelf": "Plancton"
}
]
}
La réponse complète porte aussi shelves, la description des trois rayons (prix et critère), pour qu'un agent découvre l'offre sans documentation externe.
curl -s -X POST "https://nautilinks.co/api/v1/agent/orders" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: cmd-2026-07-24-01" \
-d '{
"promo_code": "PARTENAIRE10",
"items": [
{
"site_id": 214,
"target_url": "https://votre-site.fr/page-cible/",
"anchor_text": "assurance voyage longue duree",
"anchor_type": "partial"
}
]
}'
Réponse si le solde prépayé couvre le total
{
"ok": true,
"quote_id": "qt_8f2c...",
"gross_total_eur": 5,
"total_eur": 5,
"discount_eur": 0,
"credit_applied_cents": 500,
"card_amount_cents": 0,
"payment_url": null,
"items_count": 1,
"order_id": "ord_9a1d...",
"order_status": "paid"
}
Réponse avec crédit partiel (l'humain ne paie que le reliquat)
{
"ok": true,
"quote_id": "qt_8f2c...",
"gross_total_eur": 5,
"total_eur": 5,
"discount_eur": 0,
"credit_applied_cents": 200,
"card_amount_cents": 300,
"payment_url": "https://checkout.stripe.com/c/pay/...",
"items_count": 1
}
Si payment_url vaut null, la commande est déjà réglée par le solde prépayé: order_id et order_status la décrivent directement. Sinon, l'agent transmet payment_url à l'humain; une fois le paiement passé, GET /api/v1/agent/quotes/qt_8f2c... renvoie l' order_id résultant, puis GET /api/v1/agent/orders/:id suit le lien jusqu'à sa publication.
Questions fréquentes
Un agent IA peut-il payer seul, sans intervention humaine?
Si le crédit prépayé couvre le net après remise, la commande est réglée directement. S'il est partiel, il est retenu et un lien Stripe ne facture que le reliquat à l'humain. Sans crédit, Stripe facture le net complet. Aucune carte n'est jamais débitée automatiquement.
Quels liens sont achetables par API aujourd'hui?
Les trois rayons du catalogue: Plancton à 5 €, Corail à 15 € et Nautilus à 30 €. Une commande de 1 à 20 liens peut mélanger de nouveaux articles dédiés et des insertions dans des articles existants, avec des packs tier-2 optionnels de 1, 3 ou 5 liens et un rattachement à un projet de visibilité IA.
Que se passe-t-il après le paiement?
Une fois le devis payé (crédit ou webhook Stripe, selon le chemin emprunté), la commande existe exactement comme un achat passé depuis le panier web. Les liens Plancton sont ensuite auto-assignés (sauf si le kill-switch interne repasse en mode manuel); les liens Corail et Nautilus passent par une assignation manuelle côté équipe. Tous suivent ensuite le circuit habituel jusqu'à publication.
Y a-t-il une limite de commandes par jour?
Oui, un plafond anti-abus par clé API (une vingtaine de commandes par jour par défaut). Au-delà, l'API répond 429 avec le code daily_order_cap_reached. Un rejeu avec la même Idempotency-Key ne consomme jamais deux fois ce quota.
Le serveur MCP nécessite-t-il une installation locale?
Non, c'est un serveur distant (Cloudflare Worker) en HTTP streamable, sans package npm à installer. Il ne fait que relayer votre clé API vers l'API Nautilinks, sans rien stocker de son côté.
Puis-je tester sans engagement?
Le scope read (lecture du catalogue, des commandes, des devis, du solde) est inclus par défaut dans chaque clé, au même titre que le scope order. Vous pouvez aussi générer une clé sandbox (préfixe sn_test_): elle simule une commande sans jamais débiter le portefeuille ni créer de commande réelle chez un éditeur, la réponse portant alors sandbox: true.
Comment suivre l'avancement d'une commande sans repoller l'API?
En créant un abonnement webhook (POST /api/v1/agent/webhooks) sur une URL HTTPS publique, pour un ou plusieurs événements parmi order.accepted, order.published et order.cancelled. Chaque livraison est signée en HMAC-SHA256 dans l'en-tête Nautilinks-Signature, à vérifier avant de faire confiance au contenu.
Une clé API, et votre agent achète des liens
Créez un compte, générez votre clé dans l'espace membre, connectez le MCP ou appelez l'API. Le catalogue à trois rayons (Plancton, Corail, Nautilus) est disponible dès aujourd'hui.