REST API

LinkPanel APIreference

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 a scoped 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.

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.

Scoped keys

Grant only the scopes each integration needs.

Automation ready

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

API Reference

Endpoints

Base URL: https://linkpanel.io

MethodEndpointScopeDescription
GET/api/v1/servicesservices:readReturns all active services available for ordering.
POST/api/v1/planner/generateplanner:generateGenerates keywords, service recommendations, quantities, and a recommended wallet deposit. This does not save a plan, create orders, or take payment.
POST/api/v1/planner/plansplanner:writeGenerates a planner recommendation and saves it as a BacklinkPlan owned by the API key user.
GET/api/v1/planner/plans/{id}planner:readReads one saved AI planner plan owned by the API key user. The response includes snapshot URLs only, not raw page text.
POST/api/v1/ordersorders:writeCreates a backlink order from a service, target URL, anchor, and quantity.
POST/api/v1/orders/bulkorders:writeCreates multiple backlink orders in one request. 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/ordersorders:readLists orders for the API key user.
GET/api/v1/orders/{id}orders:readReads one order, including timeline and backlink results when available.
GET/api/v1/reportsreports:readReturns completed orders and report-ready data.
GET

Read services

/api/v1/services

Returns all active services available for ordering.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer API key with services:read scope.
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,
        "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 API key with planner:generate scope.
website_urlstringyesWebsite URL or domain. CamelCase websiteUrl is also accepted.
goalstringyesOne of: Local Rankings, Parasite SEO, Google Rankings, Lead Generation.
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": ["Generating 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 API key with planner:write scope.
website_urlstringyesWebsite URL or domain. CamelCase websiteUrl is also accepted.
goalstringyesOne of: Local Rankings, Parasite SEO, Google Rankings, Lead Generation.
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": "Lead Generation",
    "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 API key with planner:read scope.
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": "Lead Generation",
    "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.

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.
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": 1
  }'
Example response
{
  "data": {
    "order": {
      "id": "order_id",
      "status": "Pending",
      "serviceName": "Guest Posting - General Blogs DR 25+",
      "targetUrl": "https://example.com/pricing",
      "quantity": 1,
      "totalPrice": 12
    }
  }
}
POST

Create bulk orders

/api/v1/orders/bulk

Creates multiple backlink orders in one request. 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 the target_url, anchor_text, keywords, and any instructions for that order.
skip_invalidbooleannoDefaults to true. When false, creation stops at the first invalid row.
AuthorizationheaderyesBearer API key with orders:write scope.
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
      }
    ]
  }'
Example response
{
  "data": {
    "orders": [
      {
        "id": "order_id",
        "status": "Pending",
        "serviceName": "Niche Guest Post",
        "targetUrl": "https://example.com/pricing",
        "quantity": 2,
        "totalPrice": 300
      }
    ],
    "errors": []
  }
}
GET

Read orders

/api/v1/orders

Lists orders for the API key user.

Parameters
NameTypeRequiredDescription
AuthorizationheaderyesBearer API key with orders:read scope.
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 API key with orders:read scope.
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 API key with reports:read scope.
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 does not include the required scope.
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 a scoped API key from your LinkPanel account before sending requests.