Nautilinks sells backlinks directly, with no marketplace and no commission, on a network of sites we publish ourselves. This page describes machine access to that same catalog: a REST API and an MCP server, designed so an LLM agent can look up a relevant site, place an order and track its progress, without a human filling in a form.
The principle stays the same as on the rest of the site: the catalog queried by API is public in its logic, prices are the same ones shown to humans, and no card is ever charged without a human validating the payment, whether that happens in advance by funding the account's prepaid balance, or in the moment by opening a Stripe link. The agent orders, the human pays, one way or the other.
Three steps to connect an agent
- Create a Nautilinks account. Free sign-up, no card requested at this stage. This is the account that receives invoices and, ultimately, pays via Stripe.
- Generate an API key. In the member area, under "My account" then "API keys". The key (format sn_live_...) is shown once, copy it immediately. Up to 5 active keys per account, revocable at any time.
- Connect the MCP server or call the API. Two equivalent paths: an MCP client (Claude Code, claude.ai, Cursor…) talking to the mcp.nautilinks.co server, or direct HTTP calls to /api/v1/agent/*. The JSON contract is identical on both sides.
API reference for agents
Authentication
Every call carries the header Authorization: Bearer sn_live_.... The key belongs to a human account: any order created via API is attached to that account, invoiced to its address, and visible in its member area just like an order placed from the web cart. A freshly created key carries both scopes (read and order) by default.
Order idempotency
The optional Idempotency-Key header avoids duplicates in case of a network replay (timeout, automatic retry on the agent side). A second call with the same value does not create a new order: it returns the same quote and, if a Stripe payment is already in progress, the same payment_url rather than opening a second one.
Daily cap
An anti-abuse cap applies per API key, of the order of twenty orders per day. Once reached, the API replies with 429 and the code daily_order_cap_reached. An identical replay (same Idempotency-Key) never counts twice.
Payment: prepaid balance or Stripe link
Creating an order never charges a card at the moment of the call. If the account's prepaid balance covers the total, it is debited directly at creation: the response carries order_id and order_status: "paid", and payment_url is null. Otherwise, only a quote is created and the response carries a payment_url, a standard Stripe Checkout link, to be opened by the human who owns the account; once paid, an existing webhook turns the quote into an order. Either way, no card is charged without a person validating the payment, in advance by funding the balance or in the moment via Stripe, and an agent can only spend what is already on the account, within the daily cap.
Webhooks
A webhook subscription (POST /api/v1/agent/webhooks, scope order, up to 5 active per account) receives order.accepted, order.published and order.cancelled on a public HTTPS URL chosen by the agent. Every delivery is signed: the Nautilinks-Signature header carries an HMAC-SHA256 computed over the timestamp and the raw body, using a key derived from the secret returned at creation (never the clear secret). GET /api/v1/agent/webhooks lists active subscriptions, DELETE /api/v1/agent/webhooks/:id revokes one.
Frequently asked questions
Can an AI agent pay on its own, without human involvement?
Payment can resolve one of two ways. If the account prepaid balance covers the total, the order is settled straight away: it is the credit a human funded in advance that pays, and the call concludes with no link to open. Otherwise, creating the order returns a Stripe payment link (payment_url) that a human has to open and pay. Either way, a card is never charged without a person validating the payment, and an agent can only spend what is already on the account, within a daily cap per key.
Which links can be bought via API today?
All three catalog shelves: Plancton at 5 euros, Corail at 15 euros, and Nautilus at 30 euros. A 1-20 link order can mix new dedicated articles with sold-once insertions into existing articles, optional tier-2 packs of 1, 3 or 5 links, and AI-visibility project tags.
What happens after payment?
Once the quote is paid (credit or Stripe webhook, depending on the path taken), the order exists exactly like a purchase made from the web cart. Plancton links are then auto-assigned (unless the internal kill switch has reverted to manual mode); Corail and Nautilus links go through manual assignment on our side. All of them then follow the usual path through to publication.
Is there a daily order limit?
Yes, an anti-abuse cap applies per API key (around twenty orders per day by default). Beyond that, the API replies 429 with the code daily_order_cap_reached. A replay with the same Idempotency-Key never consumes this quota twice.
Does the MCP server require a local install?
No, it is a remote server (Cloudflare Worker) over streamable HTTP, no npm package to install. It only relays your API key to the Nautilinks API, without storing anything on its side.
Can I test it without commitment?
The read scope (reading the catalog, orders, quotes, balance) is included by default in every key, alongside the order scope. You can also generate a sandbox key (sn_test_ prefix): it simulates an order without ever debiting the wallet or creating a real order with a publisher, and the response carries sandbox: true.
How do I follow an order without polling the API?
By creating a webhook subscription (POST /api/v1/agent/webhooks) on a public HTTPS URL, for one or more events among order.accepted, order.published and order.cancelled. Every delivery is signed with HMAC-SHA256 in the Nautilinks-Signature header, to verify before trusting the payload.