REST API

LinkPanel API reference

List services, create single or bulk orders, track delivery, retrieve reports, and generate optional planner recommendations.

request.sh
curl https://linkpanel.io/api/v1/services \
  -H "Authorization: Bearer blnk_live_sk_your_key"

{
  "data": {
    "services": [...]
  }
}
Quick Start

Start making requests in minutes.

1

Create API key

Create one full-access key from your LinkPanel account.

2

Read services

Fetch live service ids, pricing, delivery windows, and limits.

3

Create orders

Submit one order or many rows through the bulk endpoint.

4

Track results

Read order status and delivered backlink reports.

API Key

Full API access

Use one key for services, projects, orders, reports, planner calls, and child-panel integrations.

Included scopes

services:read

Read active services, customer pricing, delivery, and quantity limits.

projects:read

Read projects owned by the API key user.

projects:write

Create and update projects for order organization.

orders:read

Read order status, reports, and delivered backlink rows.

orders:write

Create single and bulk orders when wallet balance is available.

reports:read

Read completed order reports and delivered backlink data.

planner:generate

Generate AI planner recommendations without saving a plan.

planner:read

Read saved AI planner plans owned by the API key user.

planner:write

Generate and save AI planner plans.

Logged-in users can create a full-access key from Connectors.

Capabilities

Service catalog

List active services with customer pricing, quantity limits, and delivery windows.

Single orders

Create one backlink order with service, target URL, anchor, keywords, and quantity.

Bulk orders

Create multiple orders in one request from your own rows or planner recommendations.

Reports

Retrieve order status, report URLs, and delivered backlink result rows.

Planner recommendations

Optionally generate keyword, service, and quantity recommendations before ordering.

One API key

Use one full-access key for services, planner, orders, and reports.

Automation ready

Use the API from internal dashboards, scripts, Make, Zapier, or server jobs.

API Reference

Endpoints

Base URL: https://linkpanel.io

MethodEndpointAccessDescription
GET/api/v1/servicesFull API keyReturns all active services available for ordering.
POST/api/v1/planner/generateFull API keyGenerates keywords, service recommendations, quantities, and a recommended wallet deposit. This does not save a plan, create orders, or take payment.
POST/api/v1/planner/plansFull API keyGenerates a planner recommendation and saves it as a BacklinkPlan owned by the API key user.
GET/api/v1/planner/plans/{id}Full API keyReads one saved AI planner plan owned by the API key user. The response includes snapshot URLs only, not raw page text.
POST/api/v1/ordersFull API keyCreates a backlink order from a service, target URL, anchor, and quantity. If the service allows it, submit_for_indexation adds $0.10 per ordered link.
POST/api/v1/orders/bulkFull API keyCreates multiple backlink orders in one request. Each row may include submit_for_indexation when the selected service allows it. For planner recommendations, do not send the full plan_items array; copy each recommended service_id and quantity into rows for POST /api/v1/orders/bulk.
GET/api/v1/ordersFull API keyLists orders for the API key user.
GET/api/v1/orders/{id}Full API keyReads one order, including timeline and backlink results when available.
GET/api/v1/reportsFull API keyReturns completed orders and report-ready data.
GET

Read services

/api/v1/services

Returns all active services available for ordering.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer full-access API key.
Example request
curl https://linkpanel.io/api/v1/services \
  -H "Authorization: Bearer blnk_live_sk_your_key"
Example response
{
  "data": {
    "services": [
      {
        "id": "service_id",
        "name": "Guest Posting - General Blogs DR 25+",
        "group": "Guest Posts",
        "niche": "General",
        "pricePerLink": 12,
        "deliveryDays": { "min": 5, "max": 10 },
        "indexability": 85,
        "indexationAddonEnabled": true,
        "indexationUnitPrice": 0.1,
        "description": "Guest post placement on general blogs."
      }
    ]
  }
}
POST

Generate planner recommendation

/api/v1/planner/generate

Generates keywords, service recommendations, quantities, and a recommended wallet deposit. This does not save a plan, create orders, or take payment.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer full-access API key.
website_urlstringyesWebsite URL or domain. CamelCase websiteUrl is also accepted.
goalstringyesOne of: Universal Rankings, Local Rankings, Parasite SEO, Google Rankings.
budget_minnumberyesMinimum budget in USD. CamelCase budgetMin is also accepted.
budget_maxnumberyesMaximum budget in USD. CamelCase budgetMax is also accepted.
Example request
curl -X POST https://linkpanel.io/api/v1/planner/generate \
  -H "Authorization: Bearer blnk_live_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "website_url": "https://example.com",
    "goal": "Google Rankings",
    "budget_min": 100,
    "budget_max": 500
  }'
Example response
{
  "data": {
    "website_url": "https://example.com",
    "goal": "Google Rankings",
    "budget": { "min": 100, "max": 500, "currency": "USD" },
    "keywords": [
      { "keyword": "example service", "intent": "Service", "priority": "High" }
    ],
    "selected_keywords": ["example service"],
    "recommended_deposit": 300,
    "plan_total": 300,
    "order_api": {
      "bulk_endpoint": "/api/v1/orders/bulk",
      "single_endpoint": "/api/v1/orders",
      "note": "To create orders from this plan, do not send the full plan_items array. Copy each recommended service_id and quantity into rows for POST /api/v1/orders/bulk."
    },
    "plan_items": [
      {
        "service_id": "service_id",
        "service_name": "Niche Guest Post",
        "quantity": 2,
        "unit_price": 150,
        "estimated_cost": 300,
        "priority": "High",
        "good_for_tags": ["Increase DR & Authority"]
      }
    ],
    "order_drafts": [
      {
        "client_row_id": "service_id",
        "service_id": "service_id",
        "target_url": "https://example.com",
        "keywords": ["example service"],
        "anchor_text": "example service",
        "anchor_type": "Branded",
        "quantity": 2,
        "special_instructions": "AI planner recommendation for Google Rankings. Priority: High."
      }
    ],
    "site_snapshot": {
      "pages_checked": 3,
      "page_urls": ["https://example.com/"]
    }
  }
}
POST

Generate and save planner plan

/api/v1/planner/plans

Generates a planner recommendation and saves it as a BacklinkPlan owned by the API key user.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer full-access API key.
website_urlstringyesWebsite URL or domain. CamelCase websiteUrl is also accepted.
goalstringyesOne of: Universal Rankings, Local Rankings, Parasite SEO, Google Rankings.
budget_minnumberyesMinimum budget in USD. CamelCase budgetMin is also accepted.
budget_maxnumberyesMaximum budget in USD. CamelCase budgetMax is also accepted.
Example request
curl -X POST https://linkpanel.io/api/v1/planner/plans \
  -H "Authorization: Bearer blnk_live_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "website_url": "https://example.com",
    "goal": "Local Rankings",
    "budget_min": 200,
    "budget_max": 800
  }'
Example response
{
  "data": {
    "plan": {
      "id": "plan_id",
      "planner_url": "/planner/plan_id",
      "status": "DRAFT",
      "created_at": "2026-06-08T00:00:00.000Z"
    },
    "website_url": "https://example.com",
    "recommended_deposit": 450,
    "plan_items": []
  }
}
GET

Read saved planner plan

/api/v1/planner/plans/{id}

Reads one saved AI planner plan owned by the API key user. The response includes snapshot URLs only, not raw page text.

Parameters
NameTypeRequiredDescription
idpathyesBacklinkPlan id.
AuthorizationheaderyesBearer full-access API key.
Example request
curl https://linkpanel.io/api/v1/planner/plans/plan_id \
  -H "Authorization: Bearer blnk_live_sk_your_key"
Example response
{
  "data": {
    "plan": {
      "id": "plan_id",
      "planner_url": "/planner/plan_id",
      "status": "DRAFT"
    },
    "website_url": "https://example.com",
    "goal": "Local Rankings",
    "plan_items": [],
    "site_snapshot": {
      "pages_checked": 3,
      "page_urls": ["https://example.com/"]
    }
  }
}
POST

Create order

/api/v1/orders

Creates a backlink order from a service, target URL, anchor, and quantity. If the service allows it, submit_for_indexation adds $0.10 per ordered link.

Parameters
NameTypeRequiredDescription
service_idstringyesService id from GET /api/v1/services.
target_urlstringyesURL where links should point.
keywordsarraynoKeywords for the order.
anchor_textstringnoIf omitted, the first keyword is used.
quantitynumbernoDefaults to 1. Maximum 100.
submit_for_indexationbooleannoOptional. Adds $0.10 per link when the service response has indexationAddonEnabled: true. CamelCase submitForIndexation is also accepted.
Example request
curl -X POST https://linkpanel.io/api/v1/orders \
  -H "Authorization: Bearer blnk_live_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": "service_id",
    "target_url": "https://example.com/pricing",
    "keywords": ["seo services"],
    "anchor_text": "seo services",
    "quantity": 50,
    "submit_for_indexation": true
  }'
Example response
{
  "data": {
    "order": {
      "id": "order_id",
      "status": "Pending",
      "serviceName": "Guest Posting - General Blogs DR 25+",
      "targetUrl": "https://example.com/pricing",
      "quantity": 50,
      "submitForIndexation": true,
      "indexationUnitPrice": 0.1,
      "indexationTotal": 5,
      "totalPrice": 605
    }
  }
}
POST

Create bulk orders

/api/v1/orders/bulk

Creates multiple backlink orders in one request. Each row may include submit_for_indexation when the selected service allows it. For planner recommendations, do not send the full plan_items array; copy each recommended service_id and quantity into rows for POST /api/v1/orders/bulk.

Parameters
NameTypeRequiredDescription
rowsarrayyesOrder rows. From a plan, use the recommended service_id and quantity, then include target_url, anchor_text, keywords, submit_for_indexation if needed, and any instructions for that order.
skip_invalidbooleannoDefaults to true. When false, creation stops at the first invalid row.
AuthorizationheaderyesBearer full-access API key.
Example request
curl -X POST https://linkpanel.io/api/v1/orders/bulk \
  -H "Authorization: Bearer blnk_live_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "skip_invalid": false,
    "rows": [
      {
        "client_row_id": "planner_draft_1",
        "service_id": "service_id",
        "target_url": "https://example.com/pricing",
        "keywords": ["seo services", "link building"],
        "anchor_text": "seo services",
        "anchor_type": "Branded",
        "quantity": 2,
        "submit_for_indexation": true
      }
    ]
  }'
Example response
{
  "data": {
    "orders": [
      {
        "id": "order_id",
        "status": "Pending",
        "serviceName": "Niche Guest Post",
        "targetUrl": "https://example.com/pricing",
        "quantity": 2,
        "submitForIndexation": true,
        "indexationTotal": 0.2,
        "totalPrice": 300.2
      }
    ],
    "errors": []
  }
}
GET

Read orders

/api/v1/orders

Lists orders for the API key user.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer full-access API key.
Example request
curl https://linkpanel.io/api/v1/orders \
  -H "Authorization: Bearer blnk_live_sk_your_key"
Example response
{
  "data": {
    "orders": [
      {
        "id": "order_id",
        "status": "Completed",
        "progressPct": 100,
        "reportUrl": "https://example.com/report.pdf"
      }
    ]
  }
}
GET

Get order status

/api/v1/orders/{id}

Reads one order, including timeline and backlink results when available.

Parameters
NameTypeRequiredDescription
idpathyesOrder id.
AuthorizationheaderyesBearer full-access API key.
Example request
curl https://linkpanel.io/api/v1/orders/order_id \
  -H "Authorization: Bearer blnk_live_sk_your_key"
Example response
{
  "data": {
    "order": {
      "id": "order_id",
      "status": "Completed",
      "progressPct": 100,
      "results": []
    }
  }
}
GET

Read reports

/api/v1/reports

Returns completed orders and report-ready data.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer full-access API key.
Example request
curl https://linkpanel.io/api/v1/reports \
  -H "Authorization: Bearer blnk_live_sk_your_key"
Example response
{
  "data": {
    "reports": [
      {
        "id": "order_id",
        "status": "Completed",
        "reportUrl": "https://example.com/report.pdf"
      }
    ]
  }
}
Error Handling

Errors return a top-level error object with a message and optional details.

StatusMeaning
401API key is missing or invalid.
403API key is active but does not have access to that API.
429Rate limit reached. Planner generation is limited per API key.
422Request body failed validation.
400Database or request error.
{
  "error": {
    "message": "API key required"
  }
}

API access

Create one full-access API key from your LinkPanel account before sending requests.