Backlynk
Developer

API Documentation

Automate directory submissions programmatically. API access is available on Pro ($199) and Agency ($399) tiers.

Authentication

All authenticated endpoints require a Bearer token or API key in the request header:

# Using JWT token
Authorization: Bearer <access_token>

# Using API key (all paid plans)
x-api-key: bk_live_xxxxxxxxxxxxx

Access tokens expire after 15 minutes. Use the refresh token endpoint to get a new one.

Rate Limits

API (global): 100 req/min
Login: 5 req/min
Register: 3 req/min
Backlink check: 5 req/min

Per-plan usage limits apply to submission quota, not request rate. See your dashboard for your plan's capacity.

Endpoints

Directory inventory and placement targets are available only to authenticated customers. Public pages show aggregate coverage, quality tiers, and delivery examples without exposing the operational directory list.

POST/api/v1/auth/login

Authenticate and get JWT access + refresh tokens

All
GET/api/v1/sites

List all your registered sites

AuthAll
POST/api/v1/sites

Register a new site for directory submission

AuthAll
GET/api/v1/directories

Browse available directories (filtered by your tier DR cap)

AuthAll
POST/api/v1/jobs

Create a submission job for a site + directory list

AuthAll
GET/api/v1/jobs/:id

Get job status and progress details

AuthAll
GET/api/v1/backlinks

List all discovered backlinks for your sites

AuthGrowth+
POST/api/v1/directories/check-backlinks

Verify known backlink URLs for status, redirects, rel, canonical, robots, and CSV-ready evidence

All
POST/api/v1/api-keys

Create an API key for programmatic access

AuthPro+
GET/api/v1/users/me

Get current user profile and subscription details

AuthAll

Public Backlink Check Response

The public backlink check endpoint accepts one target domain and up to 25 known linking-page URLs. Each result includes page-level evidence that can be exported from the web tool or consumed directly.

{
  "domain": "example.com",
  "checked": 1,
  "summary": {
    "alive": 1,
    "dead": 0,
    "withLink": 1,
    "dofollow": 1,
    "indexable": 1,
    "redirected": 0
  },
  "results": [
    {
      "url": "https://directory.example/listing",
      "finalUrl": "https://directory.example/listing",
      "redirectChain": [],
      "httpStatus": 200,
      "domainFound": true,
      "hasLink": true,
      "linkType": "dofollow",
      "targetUrl": "https://example.com/",
      "anchorText": "Example",
      "relAttributes": [],
      "canonicalUrl": "https://directory.example/listing",
      "robotsDirectives": [],
      "indexable": true
    }
  ]
}

Quick Start

Submit your site to directories in 3 API calls:

# 1. Login
curl -X POST https://backlynk.io/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"..."}'

# 2. Add your site
curl -X POST https://backlynk.io/api/v1/sites \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://yoursite.com","name":"Your Site","description":"..."}'

# 3. Start submissions
curl -X POST https://backlynk.io/api/v1/jobs \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"site_id":"<site_id>","directory_ids":[1,2,3,4,5]}'

Store the returned job id and poll the job endpoint until the status becomes completed, canceled, or failed.

Response & Error Patterns

API responses use JSON envelopes with stable ids, timestamps, status fields, and pagination metadata where a list is returned. Validation and authentication failures use the same error shape across endpoints.

{
  "message": "Validation failed",
  "error": {
    "code": "invalid_site_url",
    "field": "url",
    "details": "Use an indexable https URL with a public landing page."
  }
}
400 / 422

Input, quota, or validation issue that can be corrected and retried.

401 / 403

Missing token, expired session, or a plan permission that does not include the endpoint.

429

Rate limit reached. Back off before retrying and keep long-running jobs asynchronous.

Client Examples

Teams can use any HTTP client. For no-code checks, start with the public backlink verification tool. For automated campaigns, use authenticated API calls from your backend.

const res = await fetch('https://backlynk.io/api/v1/jobs/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': process.env.BACKLYNK_API_KEY
  },
  body: JSON.stringify({ site_id: 'site_123' })
});

if (!res.ok) throw new Error(await res.text());
const job = await res.json();