LinkPanel API reference
List services, create single or bulk orders, track delivery, retrieve reports, and generate optional planner recommendations.
curl https://linkpanel.io/api/v1/services \
-H "Authorization: Bearer blnk_live_sk_your_key"
{
"data": {
"services": [...]
}
}Start making requests in minutes.
Create API key
Create one full-access key from your LinkPanel account.
Read services
Fetch live service ids, pricing, delivery windows, and limits.
Create orders
Submit one order or many rows through the bulk endpoint.
Track results
Read order status and delivered backlink reports.
Full API access
Use one key for services, projects, orders, reports, planner calls, and child-panel integrations.
Included scopes
services:readRead active services, customer pricing, delivery, and quantity limits.
projects:readRead projects owned by the API key user.
projects:writeCreate and update projects for order organization.
orders:readRead order status, reports, and delivered backlink rows.
orders:writeCreate single and bulk orders when wallet balance is available.
reports:readRead completed order reports and delivered backlink data.
planner:generateGenerate AI planner recommendations without saving a plan.
planner:readRead saved AI planner plans owned by the API key user.
planner:writeGenerate and save AI planner plans.
Logged-in users can create a full-access key from Connectors.
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.
Endpoints
Base URL: https://linkpanel.io
| Method | Endpoint | Access | Description |
|---|---|---|---|
| GET | /api/v1/services | Full API key | Returns all active services available for ordering. |
| POST | /api/v1/planner/generate | Full API key | Generates keywords, service recommendations, quantities, and a recommended wallet deposit. This does not save a plan, create orders, or take payment. |
| POST | /api/v1/planner/plans | Full API key | Generates a planner recommendation and saves it as a BacklinkPlan owned by the API key user. |
| GET | /api/v1/planner/plans/{id} | Full API key | Reads one saved AI planner plan owned by the API key user. The response includes snapshot URLs only, not raw page text. |
| POST | /api/v1/orders | Full API key | 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. |
| POST | /api/v1/orders/bulk | Full API key | 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. |
| GET | /api/v1/orders | Full API key | Lists orders for the API key user. |
| GET | /api/v1/orders/{id} | Full API key | Reads one order, including timeline and backlink results when available. |
| GET | /api/v1/reports | Full API key | Returns completed orders and report-ready data. |
Read services
/api/v1/servicesReturns all active services available for ordering.
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | header | yes | Bearer full-access API key. |
curl https://linkpanel.io/api/v1/services \
-H "Authorization: Bearer blnk_live_sk_your_key"{
"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."
}
]
}
}Generate planner recommendation
/api/v1/planner/generateGenerates keywords, service recommendations, quantities, and a recommended wallet deposit. This does not save a plan, create orders, or take payment.
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | header | yes | Bearer full-access API key. |
| website_url | string | yes | Website URL or domain. CamelCase websiteUrl is also accepted. |
| goal | string | yes | One of: Universal Rankings, Local Rankings, Parasite SEO, Google Rankings. |
| budget_min | number | yes | Minimum budget in USD. CamelCase budgetMin is also accepted. |
| budget_max | number | yes | Maximum budget in USD. CamelCase budgetMax is also accepted. |
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
}'{
"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/"]
}
}
}Generate and save planner plan
/api/v1/planner/plansGenerates a planner recommendation and saves it as a BacklinkPlan owned by the API key user.
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | header | yes | Bearer full-access API key. |
| website_url | string | yes | Website URL or domain. CamelCase websiteUrl is also accepted. |
| goal | string | yes | One of: Universal Rankings, Local Rankings, Parasite SEO, Google Rankings. |
| budget_min | number | yes | Minimum budget in USD. CamelCase budgetMin is also accepted. |
| budget_max | number | yes | Maximum budget in USD. CamelCase budgetMax is also accepted. |
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
}'{
"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": []
}
}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.
| Name | Type | Required | Description |
|---|---|---|---|
| id | path | yes | BacklinkPlan id. |
| Authorization | header | yes | Bearer full-access API key. |
curl https://linkpanel.io/api/v1/planner/plans/plan_id \
-H "Authorization: Bearer blnk_live_sk_your_key"{
"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/"]
}
}
}Create order
/api/v1/ordersCreates 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.
| Name | Type | Required | Description |
|---|---|---|---|
| service_id | string | yes | Service id from GET /api/v1/services. |
| target_url | string | yes | URL where links should point. |
| keywords | array | no | Keywords for the order. |
| anchor_text | string | no | If omitted, the first keyword is used. |
| quantity | number | no | Defaults to 1. Maximum 100. |
| submit_for_indexation | boolean | no | Optional. Adds $0.10 per link when the service response has indexationAddonEnabled: true. CamelCase submitForIndexation is also accepted. |
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
}'{
"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
}
}
}Create bulk orders
/api/v1/orders/bulkCreates 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.
| Name | Type | Required | Description |
|---|---|---|---|
| rows | array | yes | Order 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_invalid | boolean | no | Defaults to true. When false, creation stops at the first invalid row. |
| Authorization | header | yes | Bearer full-access API key. |
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
}
]
}'{
"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": []
}
}Read orders
/api/v1/ordersLists orders for the API key user.
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | header | yes | Bearer full-access API key. |
curl https://linkpanel.io/api/v1/orders \
-H "Authorization: Bearer blnk_live_sk_your_key"{
"data": {
"orders": [
{
"id": "order_id",
"status": "Completed",
"progressPct": 100,
"reportUrl": "https://example.com/report.pdf"
}
]
}
}Get order status
/api/v1/orders/{id}Reads one order, including timeline and backlink results when available.
| Name | Type | Required | Description |
|---|---|---|---|
| id | path | yes | Order id. |
| Authorization | header | yes | Bearer full-access API key. |
curl https://linkpanel.io/api/v1/orders/order_id \
-H "Authorization: Bearer blnk_live_sk_your_key"{
"data": {
"order": {
"id": "order_id",
"status": "Completed",
"progressPct": 100,
"results": []
}
}
}Read reports
/api/v1/reportsReturns completed orders and report-ready data.
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | header | yes | Bearer full-access API key. |
curl https://linkpanel.io/api/v1/reports \
-H "Authorization: Bearer blnk_live_sk_your_key"{
"data": {
"reports": [
{
"id": "order_id",
"status": "Completed",
"reportUrl": "https://example.com/report.pdf"
}
]
}
}Errors return a top-level error object with a message and optional details.
| Status | Meaning |
|---|---|
| 401 | API key is missing or invalid. |
| 403 | API key is active but does not have access to that API. |
| 429 | Rate limit reached. Planner generation is limited per API key. |
| 422 | Request body failed validation. |
| 400 | Database or request error. |
{
"error": {
"message": "API key required"
}
}