REST API

The PositiveBacklink API lets you programmatically manage sites, request exchanges, read credit balance, and subscribe to watchdog events. Base URL is https://www.positivebacklink.com/api.

Availability: Read-only endpoints are live for all Pro and Agency users in Q2 2026. Write endpoints rolling out Q3 2026.

Authentication

All requests require a bearer token in the Authorization header. Generate tokens in Dashboard › Settings › API Keys.

Authorization: Bearer pbk_live_xxxxxxxxxxxxxxxx

Rate limits

PlanPer minutePer day
Pro6010,000
Agency240100,000

Responses include X-RateLimit-Remaining and X-RateLimit-Reset headers.

Endpoints

GET /api/sites

List all sites owned by the authenticated user.

curl https://www.positivebacklink.com/api/sites \
  -H "Authorization: Bearer pbk_live_xxx"

Response:
{
  "sites": [
    {
      "id": "site_01H...",
      "url": "https://example.com",
      "niche": "saas",
      "dr": 42,
      "verified": true,
      "created_at": "2026-01-15T10:23:00Z"
    }
  ]
}

POST /api/sites

Add a new site to your account. Verification runs asynchronously.

curl -X POST https://www.positivebacklink.com/api/sites \
  -H "Authorization: Bearer pbk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","niche":"saas"}'

GET /api/exchanges

List exchange offers for your sites. Supports filters: ?status=pending|accepted|live|broken.

POST /api/exchanges/:id/accept

Accept an incoming exchange offer. Credits will be deducted on confirmation.

GET /api/credits/balance

Return current credit balance and ledger entries.

{
  "balance": 142,
  "lifetime_earned": 580,
  "lifetime_spent": 438
}

GET /api/watchdog/events

List watchdog events for your earned links. Useful for SIEM integrations.

Webhooks

Subscribe to push notifications instead of polling. Configure endpoint URL in Dashboard › Settings › Webhooks.

EventPayload preview
exchange.requested{id, from_site, to_site, anchor}
exchange.accepted{id, accepted_at}
exchange.published{id, live_url, published_at}
watchdog.alert{exchange_id, severity, type, detail}

All webhook payloads are signed with HMAC-SHA256 in the X-PB-Signature header.

Errors

Standard HTTP status codes apply. Error responses include a JSON body with error.code and error.message.

{
  "error": {
    "code": "insufficient_credits",
    "message": "You need 3 credits but have 1."
  }
}