The BuyLinksForSEO API guide

Connect publisher research and backlink orders to your own tools. This reference covers authentication, request formats, the order-to-publication workflow and responses. Your integrations use the same balance and orders as your BuyLinksForSEO account.

Base URL & authentication

  • Base URL https://buylinksforseo.com
  • Version prefix /v1
  • Auth Authorization: Bearer <your_api_key> (or ?api_key=…)
  • Content type application/json

Create and copy keys in your dashboard → API. A key belongs to one account and acts on that account. The API can do everything except top up your balance — adding funds stays in the dashboard.

Response format

Every response is JSON. Success and error envelopes:

{ "success": true, "data": { … } }
{ "success": false, "error": { "code": "unauthorized", "message": "…" } }

Endpoints

GET/v1/me

Your account.

{ "success": true, "data": { "id": 123, "email": "[email protected]", "name": "You", "balance": 45.00 } }
GET/v1/balance

Current account balance (USD).

GET/v1/donors

Marketplace donor sites (paginated, 20/page). Optional query params: page, domain_filter, ext_filter, dr_min, referring_domains_min, price_filter, top100_filter.

{ "success": true, "data": [ { "id": 42, "domain": "blog.com", "dr": 61, "price": 12 } ],
  "pagination": { "current_page": 1, "total_pages": 478, "total_records": 9543 } }
GET/v1/article-prompt

Returns the exact prompt we use to write the article — so you can read it and edit it. Optional query params: keyword, target_url, language, recommendations. Edit the returned prompt and pass it back to POST /v1/orders as recommendations; keep the OUTPUT FORMAT block and it runs verbatim.

{ "success": true, "data": { "default_prompt": "…", "editable_field": "recommendations",
    "modes": { "own": "…", "prompt": "…", "auto": "…" } } }
POST/v1/orders

Create backlink order(s) into your basket — no charge yet. donor_ids is always required; then pick one of three content modes:

  • Auto — send target_url + keyword; we research & write the article.
  • From your prompt — also send recommendations (fetch & edit the base prompt via GET /v1/article-prompt); we write to your brief.
  • Your own article — send content (+ optional title, article_url); we publish your ready HTML as-is. Requires own-content enabled on your account.
// auto
{ "donor_ids": [42, 43], "target_url": "https://you.com/pricing", "keyword": "best crm", "language": "en" }
// from your prompt
{ "donor_ids": [42], "target_url": "https://you.com", "keyword": "best crm", "recommendations": "Friendly tone, cite 2 studies…" }
// your own article
{ "donor_ids": [42], "content": "<article>…</article>", "title": "My headline" }
{ "success": true, "data": { "mode": "auto", "order_content_ids": [9001, 9002],
    "basket_ids": [55, 56], "total_price": 24, "status": "in_basket" } }
GET/v1/basket

Inspect what's currently in your basket (drafted articles, donor, price) before publishing.

POST/v1/basket/pay

Publish everything in your basket, paying from your account balance. If the balance is short it publishes nothing and returns success:false with how much more is needed. Topping up is dashboard-only.

{ "success": true, "data": { "status": "published", "charged": 24, "links": 2 } }
GET/v1/links

Your ordered links (backlinks) with status and published URL. /v1/orders (GET) is an alias.

{ "success": true, "count": 1, "data": [
  { "id": 8891, "target_url": "https://you.com/pricing", "keyword": "best crm",
    "status": "active", "published_url": "https://donor.com/…?aio-…", "cost": "12.00" } ] }

Ordering flow

  1. Find sitesGET /v1/donors to pick relevant, real-traffic donors.
  2. OrderPOST /v1/orders with the donor ids and your page/keyword → items land in your basket. Choose the content mode: auto, your edited prompt (recommendations, see GET /v1/article-prompt), or your own content.
  3. ReviewGET /v1/basket to check the drafts and total.
  4. PublishPOST /v1/basket/pay pays from your balance and pushes the links live (~24h).
  5. TrackGET /v1/links for status and published URLs.

Errors

  • 401 unauthorized — missing / invalid / revoked key
  • 400 bad_request / payment_failed — bad body, or the balance can't cover the basket
  • 403 forbidden / own_content_disabled — key can't order, or own-content isn't enabled on your account
  • 404 not_found — unknown endpoint or resource
  • 405 method_not_allowed
  • 500 server_error — transient; retry

For AI agents: authenticate with the Bearer key, call GET /v1/me to confirm the account, GET /v1/donors to find sites, then POST /v1/ordersPOST /v1/basket/pay to order and publish. Or skip HTTP entirely and use the MCP server — same key, native tools.