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

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