Log in

INTRODUCTION

Intro
Overview

API CONCEPTS

  • Authentication
  • Error Codes
  • Data Models
  • Health-Check GET
  • Credits GET

ENDPOINTS

  • List Target Sites GET
  • Create Task POST
  • Retrieve Task GET
  • List Tasks GET

Introduction

BacklinkBase is a cloud-native link-building platform that turns the tedious, manual process of securing backlinks into a push-button workflow. Instead of negotiating with dozens of site owners or juggling spreadsheets, you purchase flexible “credits,” choose your target pages, and let BacklinkBase handle outreach, placement, and reporting behind the scenes. The system continuously monitors placement health, so every link you generate stays live and compliant with search-engine guidelines.

Built for agencies and solo SEO practitioners alike, BacklinkBase emphasizes transparency and control. You see exactly which sites are available, what each backlink costs in credits, and how every task is progressing—no hidden networks, no mystery metrics. Because the service is delivered entirely through a lightweight REST API and a simple web dashboard, you can integrate link-building seamlessly into existing SEO pipelines, internal tooling, or even client portals.

To get started with the Backlink Base API, you'll need an API key. Simply create a free account at backlinkbase.com to obtain your API key. Once you have it, you can easily start creating backlink campaigns from your own softwares or integration.

API Endpoint
https://backlinkbase.com/api/v1/ 

Overview

The Backlink Base API exposes the same automation layer that powers our dashboard, giving developers programmatic access to every step of the backlink lifecycle. With just a handful of endpoints you can (1) verify service availability with Health-Check, (2) query your remaining Credits, and (3) manage backlink “Tasks” end-to-end—listing eligible target sites, creating new tasks, polling task status, and retrieving completed task details. A dedicated Sandbox Mode lets you test integrations without consuming real credits or triggering live placements, making CI/CD deployment safe and cost-free.

Whether you're building an internal SEO command-line tool, integrating link generation into a campaign-management SaaS, or simply automating weekly backlink purchases, the API provides concise JSON responses, clear rate limits, and predictable task states. The result: reliable, scriptable link-building that scales with your growth instead of slowing it down.

Authentication

https://backlinkbase.com/api/v1/{endpoint}?api_token=YOUR_API_TOKEN[&other_params]

Every BacklinkBase endpoint requires your personal api_token (sometimes called api_key). Because the service doesn't accept authentication headers, the key must be supplied as a query-string parameter (recommended) or a JSON body field for POST calls. Requests that omit or misspell this parameter return 401 Unauthorized.

🚧 IMPORTANT NOTE:

This is just an example to demonstrate how to use other BacklinkBase API endpoints. Make sure to replace {endpoint} with the desired API function and {YOUR_API_TOKEN} with your actual API token.

QUERY PARAMS
api_token string required
Your 40-character secret key found in Dashboard → Profile → API Keys.
RESPONSE PARAMS
PARAMS DESCRIPTION
success If your request is success you will get true else false with http code other than 200 depending on error.
response This array will give you all necessary details about your request.
LANGUAGE
Example
 
HttpURLConnection conn = (HttpURLConnection) new URL(
    "https://backlinkbase.com/api/v1/{endpoint}?api_token=" + accessKey
).openConnection();

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    String response = new BufferedReader(
        new InputStreamReader(conn.getInputStream())
    ).lines().reduce("", String::concat);

    return new JSONObject(response).getJSONObject("response");    
}
$ composer require guzzlehttp/guzzle

require_once("vendor/autoload.php");
                                
$client = new \GuzzleHttp\Client();
    
$response = $client->get("https://backlinkbase.com/api/v1/{endpoint}", [
    "query" => ["api_token" => $accessKey]
]);
    
echo json_decode($response->getBody(), true);
$ npm install axios

const axios = require('axios');
const response = await axios.get('https://backlinkbase.com/api/v1/{endpoint}', {
    params: { api_token: accessKey }
});

return response.data.response;    
$ pip install requests

url = 'https://backlinkbase.com/api/v1/{endpoint}'
response = requests.get(url, params={'api_token': api_token})
data = response.json()
return data['response']
JSON
  HTTP/1.1 200 Success

                                                {
                                                    "success": true,
                                                    "message": "*****************"
                                                }
    

Error Codes

Code Meaning Typical cause
200 OK GET/POST success
201 Created Task created
401 Bad token missing/invalid/inactive/out of credits
404 Not found Task UUID not owned by caller
409 Conflict Selected targets > remaining credits
422 Validation Body failed field rules
429 Rate limit >60 req/min or >3 bad tokens
500 Server Unexpected exception

HTTP/1.1 200 OK:

Indicates that the request has succeeded.

JSON
HTTP/1.1 200 OK
{
    "success": true,
    "message": "*******************"
}

HTTP/1.1 201 Created:

Indicates that the request has succeeded and a new resource has been created as a result.

JSON
HTTP/1.1 201 Created
{
    "success": true,
    "message": "Task created successfully.",
    "task_id": "**********"
}

HTTP/1.1 401 Unauthorized:

Returned when the token is missing, invalid, inactive, or the user is out of credits.

JSON
HTTP/1.1 401 Unauthorized
{
    "success": false,
    "message": "API Token Verification Error",
    "errors": {
        "api_token": "API Token is not a valid"
    }
}

HTTP/1.1 404 Not Found:

Returned when the requested Task UUID is not owned by the caller.

JSON
HTTP/1.1 404 Not Found
{
    "success": false,
    "message": "API resource not found"
}

HTTP/1.1 409 Conflict:

Returned when the selected targets exceed the remaining credits.

JSON
HTTP/1.1 409 Conflict
{
    "success": false,
    "message": "Out of credits.",
    "errors": {
        "target_website_ids": "You don't have enough credits to choose this many targets. Please lower the number of targets to match your credit limit"
    }
}

HTTP/1.1 422 Unprocessable Entity:

Indicates that the request body failed one or more field validation rules.

JSON
HTTP/1.1 422 Unprocessable Entity
{
    "success": false,
    "message": "Input Fields Validation Error",
    "errors": {
        "target_website_ids": [
            "The target_website_ids must be a JSON array."
        ]
    }
}

HTTP/1.1 429 Too Many Requests:

Indicates the client sent too many requests in a given time frame (rate limiting).

JSON
HTTP/1.1 429 Too Many Requests
{
    "success": false,
    "message": "Rate limit exceeded. Please try again later.",
    "errors": {
        "api_token": "Rate limit exceeded. Please try again later."
    }
}

HTTP/1.1 500 Internal Server Error:

Indicates an unexpected exception or server-side error occurred.

JSON
HTTP/1.1 500 Internal Server Error
{
    "success": false,
    "message": "Internal Server Error.",
}

Data Models

Task
Field Type Description
id uuid Primary identifier
name string Campaign label
status enum queued, running, completed, failed, cancelled
created_at datetime ISO-8601 UTC
updated_at datetime —
last_run_at datetime? Last attempt
completed_at datetime? When finished/cancelled
article object See Article
sites array One row per target website
Site
Field Type Description
id int Internal row id
backlink_website_id int Catalogue id
status enum Queued Publishing, Publishing, Published, Cancelled, Failed
result_url string? Final backlink URL
schedule_at datetime Planned execution time
last_run_at datetime? Last processing attempt time
completed_at datetime? Success/failure time
Article
Field Type Description
title string 4-50 words
body string ≤400 words (HTML allowed)
urls array 1-5 absolute URLs

HTTP/1.1 200 Task Details :

The HTTP/1.1 200 Task Details response is returned when the task is successfully fetched. The response contains a JSON object with the following fields:

JSON
  HTTP/1.1 200 Task Details 
    
{
    "success": true,
    "message": {
        "id": "6825c868ac395",
        "name": "API - Task Name",
        "status": "Queued Publishing",
        "created_at": "2025-05-15T10:56:40.000000Z",
        "updated_at": "2025-05-15T10:56:40.000000Z",
        "last_run_at": "2025-05-15T10:56:40.000000Z",
        "completed_at": "2025-05-15T10:56:40.000000Z",
        "article": {
            "title": "Article Title",
            "body": "Article Body",
            "urls": [
                "https://example.com",
                "https://example.org"
            ]
        },
        "sites": [
            {
                "backlink_website_id": 1,
                "status": "Published",
                "result_url": "https://example.com/backlink",
                "last_run_at": "2025-05-15T10:56:40.000000Z",
                "schedule_at": "2025-05-15T10:56:40.000000Z",
                "completed_at": "2025-05-15T10:56:40.000000Z"
            },
            {
                "backlink_website_id": 2,
                "status": "Queued Publishing",
                "result_url": null,
                "last_run_at": null,
                "schedule_at": "2025-05-15T11:26:40.000000Z",
                "completed_at": null
            }
        ]
    }
}
    

GET - Health Check

https://backlinkbase.com/api/v1/health-check?api_token=api_token

The /health-check endpoint allows you to retrieve the health status of the API. Server sends current timestamp and success status. This endpoint is useful for checking if the API is up and running.

QUERY PARAMS
api_token string optional
The api access key from backlink base.
RESPONSE PARAMS
PARAMS DESCRIPTION
success If your request is success you will get true else false with http code other than 200 depending on error.
timestamp Returns servers current timestamp.
LANGUAGE
Example
 
HttpURLConnection conn = (HttpURLConnection) new URL(
    "https://backlinkbase.com/api/v1/health-check?api_token=" + accessKey
).openConnection();

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    String response = new BufferedReader(
        new InputStreamReader(conn.getInputStream())
    ).lines().reduce("", String::concat);

    return new JSONObject(response).getJSONObject("response");    
}
$ composer require guzzlehttp/guzzle

require_once('vendor/autoload.php');
                                
$client = new \GuzzleHttp\Client();
    
$response = $client->get('https://backlinkbase.com/api/v1/health-check', [
    'query' => ['api_token' => $accessKey]
]);
    
echo json_decode($response->getBody(), true);        

$ npm install axios

const axios = require('axios');
const response = await axios.get('https://backlinkbase.com/api/v1/health-check', {
    params: { api_token: accessKey }
});

return response.data.response;    
    
$ pip install requests

url = 'https://backlinkbase.com/api/v1/health-check'
response = requests.get(url, params={'api_token': api_token})
data = response.json()
return data['response']
    
JSON
  HTTP/1.1 200 Success

{
  "success": true,
  "timestamp": "Thu, May 15, 2025 5:36 PM"
}

GET - Credits

https://backlinkbase.com/api/v1/credits?api_token=api_token

The /credits endpoint allows you to check the current available balance of your account.

QUERY PARAMS
api_token string required
The api access key from backlink base.
RESPONSE PARAMS
PARAMS DESCRIPTION
success If your request is success you will get true else false with http code other than 200 depending on error.
message This array will give you all necessary details about your request.
credits This id will return your current available Credits.
LANGUAGE
Example
 
HttpURLConnection conn = (HttpURLConnection) new URL(
    "https://backlinkbase.com/api/v1/credits?api_token=" + accessKey
).openConnection();

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    String response = new BufferedReader(
        new InputStreamReader(conn.getInputStream())
    ).lines().reduce("", String::concat);

    return new JSONObject(response).getJSONObject("response");    
}
$ composer require guzzlehttp/guzzle

use GuzzleHttp\Client;
$apiToken = '***********************';  // ← replace with your real API token
$client = new Client();
$response = $client->get('https://backlinkbase.com/api/v1/credits', [
    'headers' => [
        'Accept' => 'application/json',
    ],
    'query' => [
        'api_token' => $apiToken,
    ],
]);
$body = (string) $response->getBody();
$data = json_decode($body, true);
var_dump($data);
$ npm install axios

const axios = require('axios');
const response = await axios.get('https://backlinkbase.com/api/v1/credits', {
    params: { api_token: accessKey }
});

return response.data.response;    
    
$ pip install requests

url = 'https://backlinkbase.com/api/v1/credits'
response = requests.get(url, params={'api_token': api_token})
data = response.json()
return data['response']
    
JSON
  HTTP/1.1 200 Success

{
    "success": true,
    "message": {
        "credits": 5
    }
}
    

List Target Sites

GEThttps://backlinkbase.com/v1/task/sites

Retrieve the full list of target sites available to your account.


The /task/sites endpoint returns the entire list of target websites available for your API account. There is no pagination — all entries are returned in a single response. This is useful for managing or displaying linked sites from the dashboard or API clients.

🚧 IMPORTANT NOTE:

Ensure you pass a valid API token with every request. Unauthorized or expired tokens will result in a 401 error.

REQUEST BODY PARAMS
api_token uuid string required
Your API token for authentication.
RESPONSE PARAMS
PARAMS DESCRIPTION
success Indicates whether the request was successful. Returns true on success.
message An array of site data including:
id Unique identifier for the site.
url URL of the site.
da Domain Authority (DA) score of the site.
pa Page Authority (PA) score of the site.
spam_score Spam score of the site.
status Status of the site if its enabled or disabled.
limited If its limited because you have low credits or not.
LANGUAGE
Example

HttpURLConnection conn = (HttpURLConnection) new URL(
    "https://backlinkbase.com/api/v1/task/sites?api_token=" + accessKey
).openConnection();

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    String response = new BufferedReader(
        new InputStreamReader(conn.getInputStream())
    ).lines().reduce("", String::concat);

    return new JSONObject(response).getJSONObject("response");    
}
$ composer require guzzlehttp/guzzle
 
require_once('vendor/autoload.php');

use GuzzleHttp\Client;
$apiToken = '***********************';  // ← replace with your real API token
$client = new Client();
$response = $client->get('https://backlinkbase.com/api/v1/task/sites', [
    'headers' => [
        'Accept' => 'application/json',
    ],
    'query' => [
        'api_token' => $apiToken,
    ],
]);
$body = (string) $response->getBody();
$data = json_decode($body, true);
var_dump($data);
$ npm install axios

const axios = require('axios');

const response = await axios.post('https://backlinkbase.com/api/v1/task/sites', {
    api_token: 'your-api-token-here'
}, {
    headers: {
        'Content-Type': 'application/json'
    }
});

console.log(response.data); // contains: success, message[]

$ pip install requests

import requests

url = 'https://backlinkbase.com/api/v1/task/sites'
payload = {
    'api_token': 'your-api-token-here'
}

response = requests.post(url, json=payload)
data = response.json()
print(data) # contains: success, message[]
                                        
JSON
  HTTP/1.1 200 Success

                                           {
  "success": true,
  "message": [
    {
      "id": 388,
      "url": "example.com",
      "da": 24,
      "pa": 31,
      "spam_score": 1,
      "status": 1,
      "limited": false
    },
    {
      "id": 389,
      "url": "example2.com",
      "da": 30,
      "pa": 35,
      "spam_score": 2,
      "status": 1,
      "limited": false
    }
  ]
}

Create Task

POSThttps://backlinkbase.com/api/v1/task/store

This endpoint allows you to create a new task by submitting the required article and target site information. Tasks can optionally be scheduled and run in sandbox mode.


The /v1/task/store endpoint accepts parameters for task metadata and article content. You must provide a valid API token and sufficient credit to submit the request.

🚧 IMPORTANT NOTE:

Ensure your article content is well-formatted and URLs are correctly included. Credits will be deducted per target site unless using sandbox mode.

REQUEST BODY PARAMS
api_token uuid required
Authentication token. Error 401 on invalid token.

name string required
Between 2–10 words, max 100 characters.

article_title string required
Between 4–50 words.

article_body string required
Maximum 400 words.

article_urls string required
1–5 valid URLs (comma-separated or array).

target_website_ids string required
Comma-separated list of integers. Must be permitted and within your credit limits.

schedule_from date optional
Date format: Y-m-d. Must be today or up to 1 month from today.

schedule_till date optional
Date format: Y-m-d. Must be on/after schedule_from and ≤ today + 1 month. Default 1 Day.

sandbox boolean optional
Run task in sandbox mode (no credits deducted). Campaign is marked as cancelled.
POSSIBLE ERRORS
HTTP MESSAGE
401 Invalid API Token
422 Validation error — e.g., “The name must be between 2 and 10 words.”
409 Insufficient credits for the number of target sites selected.
LANGUAGE
Example

URL url = new URL("https://backlinkbase.com/api/v1/task/store");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);

String jsonInput = """
{
    "api_token": "your-api-token",
    "name": "Press release batch",
    "article_title": "Fintech startup Acme raises series A funding",
    "article_body": "

Acme, a Pune based fintech company…

", "article_urls": "https://acme.com, https://acme.com/product", "target_website_ids": "388, 372, 401", "schedule_from": "2025-05-18", "schedule_till": "2025-05-25" } """ try (OutputStream os = conn.getOutputStream()) { byte[] input = jsonInput.getBytes("utf-8"); os.write(input, 0, input.length); } BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); String responseLine; while ((responseLine = br.readLine()) != null) { System.out.println(responseLine.trim()); }
$ composer require guzzlehttp/guzzle
 
$apiToken = 'your-api-token';  // ← replace with your real API token

$client = new Client();

$data = [
    'api_token'          => $apiToken,
    'name'               => 'Test From Developers',
    'article_title'      => 'Fintech startup Acme raises series A funding',
    'article_body'       => 'Acme, a Pune based fintech company, Acme, a Pune based fintech company. Lipsum leoram ipsum.',
    'article_urls'       => 'https://acme.com, https://acme.com/product',
    'target_website_ids' => "388, 372, 401",
    'schedule_from'      => date('Y-m-d'),
    // 'schedule_till'      => date('Y-m-d'),
    'sandbox'            => true,                   // ← remove in production use
];

$response = $client->post('https://backlinkbase.com/api/v1/task/store', [
    'json'    => $data,
    'headers' => [
        'Accept' => 'application/json',
    ],
]);

$body = (string) $response->getBody();
$data = json_decode($body, true);
var_dump($data);
$ npm install axios

const axios = require('axios');
const data = {
  api_token: "your-api-token",
  name: "Press release batch",
  article_title: "Fintech startup Acme raises series A funding",
  article_body: "

Acme, a Pune based fintech company…

", article_urls: "https://acme.com, https://acme.com/product", target_website_ids: "388, 372, 401", schedule_from: "2025-05-18", schedule_till: "2025-05-25" }; axios.post('https://backlinkbase.com/api/v1/task/store', data, { headers: { 'Content-Type': 'application/json' } }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error.response?.data || error.message); });
$ pip install requests

import requests

url = "https://backlinkbase.com/api/v1/task/store"

payload = {
    "api_token": "your-api-token",
    "name": "Press release batch",
    "article_title": "Fintech startup Acme raises series A funding",
    "article_body": "

Acme, a Pune based fintech company…

", "article_urls": "https://acme.com, https://acme.com/product", "target_website_ids": "388, 372, 401", "schedule_from": "2025-05-18", "schedule_till": "2025-05-25" } headers = {"Content-Type": "application/json"} response = requests.post(url, json=payload, headers=headers) print(response.json())
JSON
  HTTP/1.1 200 Success

                                           {
  "success": true,
  "message": "Task created successfully.",
  "task_id": "6825f0ba291e7"
}

Possible Errors
JSON
HTTP/1.1 422 Validation Error

{
  "success": false,
  "message": "Validation failed",
  "errors": {
    "article_title": [
      "The article_title must be between 4 and 50 words. You have 2 words."
    ],
    "target_website_ids": [
      "The target_website_ids must be a comma-separated list of integers."
    ]
  }
}

Retrieve Task

GEThttps://backlinkbase.com/api/v1/task/show

Retrieve a specific task and its associated data.


The /v1/task/show endpoint allows you to fetch the full details of a task by providing the task ID. You must supply a valid API token and the task ID that belongs to the caller.

REQUEST BODY PARAMS
api_token uuid string required
Your API token for authentication.

id unique id string required
The unique task ID that must belong to the requester.
RESPONSE PARAMS
PARAMS DESCRIPTION
success Indicates if the request was successful. Returns true on success.
message An object containing task details such as ID, name, status, associated article data, and linked site information.
other Check Data Models tab for more details at #data-models
POSSIBLE ERRORS
HTTP MESSAGE
404 Task not found
422 id field missing/invalid
LANGUAGE
Example

HttpURLConnection conn = (HttpURLConnection) new URL(
    "https://backlinkbase.com/api/v1/task/show?api_token=" + accessKey + "&id=" + id
).openConnection();

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    String response = new BufferedReader(
        new InputStreamReader(conn.getInputStream())
    ).lines().reduce("", String::concat);

    return new JSONObject(response).getJSONObject("message");    
}

$ composer require guzzlehttp/guzzle
 
require_once('vendor/autoload.php');

use GuzzleHttp\Client;
$apiToken = '***************';  // ← replace with your real API token
$taskId = '123abc';             // ← replace with your task id
$client = new Client();
$response = $client->get('https://backlinkbase.com/api/v1/task/show', [
    'headers' => [
        'Accept' => 'application/json',
    ],
    'query' => [
        'api_token' => $apiToken,
        'id' => $taskId,
    ],
]);
$body = (string) $response->getBody();
$data = json_decode($body, true);
var_dump($data);
$ npm install axios

const axios = require('axios');

const response = await axios.post('https://backlinkbase.com/api/v1/task/show', {
    api_token: 'your-api-token',
    id: 'your-task-id'
}, {
    headers: { 'Content-Type': 'application/json' }
});

console.log(response.data.message);


$ pip install requests

import requests

url = 'https://backlinkbase.com/api/v1/task/show'
headers = {'Content-Type': 'application/json'}
payload = {
    'api_token': 'your-api-token',
    'id': 'your-task-id'
}

response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data['message'])

                                        
JSON
  HTTP/1.1 200 Success

{
    "success": true,
    "message": {
        "id": "6825c868ac395",
        "name": "API - Task Name",
        "status": "Queued Publishing",
        "created_at": "2025-05-15T10:56:40.000000Z",
        "updated_at": "2025-05-15T10:56:40.000000Z",
        "last_run_at": "2025-05-15T10:56:40.000000Z",
        "completed_at": "2025-05-15T10:56:40.000000Z",
        "article": {
            "title": "Article Title",
            "body": "Article Body",
            "urls": [
                "https://example.com",
                "https://example.org"
            ]
        },
        "sites": [
            {
                "backlink_website_id": 1,
                "status": "Published",
                "result_url": "https://example.com/backlink",
                "last_run_at": "2025-05-15T10:56:40.000000Z",
                "schedule_at": "2025-05-15T10:56:40.000000Z",
                "completed_at": "2025-05-15T10:56:40.000000Z"
            },
            {
                "backlink_website_id": 2,
                "status": "Queued Publishing",
                "result_url": null,
                "last_run_at": null,
                "schedule_at": "2025-05-15T11:26:40.000000Z",
                "completed_at": null
            }
        ]
    }
}

List Tasks

GEThttps://backlinkbase.com/api/v1/tasks

Retrieves all tasks created under the API token provided.


This endpoint returns a full list of your created tasks. It uses the same request body as the /v1/tasks endpoint. There is no pagination — all tasks will be included in the response.

RESPONSE PARAMS
PARAMS DESCRIPTION
success Indicates whether the request was successful. Returns true on success.
message An array of site data including:
id Unique identifier for the task. Use Retrieve Task API to get the task details.
name Name of the task.
status Status of the task. (Queued Publishing, Publishing, Published, Cancelled, Failed)
updated_at Timestamp when the task was last updated.
created_at Timestamp when the task was created.
last_run_at Timestamp when the task was last run.
completed_at Timestamp when the task was completed.
LANGUAGE
Example

HttpURLConnection conn = (HttpURLConnection) new URL(
    "https://backlinkbase.com/api/v1/tasks?api_token=" + accessKey
).openConnection();

conn.setRequestMethod("GET");

if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    String response = new BufferedReader(
        new InputStreamReader(conn.getInputStream())
    ).lines().reduce("", String::concat);

    return new JSONObject(response).getJSONObject("message");    
}
$ composer require guzzlehttp/guzzle
 
require_once('vendor/autoload.php');

use GuzzleHttp\Client;
$apiToken = '***********************';  // ← replace with your real API token
$client = new Client();
$response = $client->get('https://backlinkbase.com/api/v1/tasks', [
    'headers' => [
        'Accept' => 'application/json',
    ],
    'query' => [
        'api_token' => $apiToken,
    ],
]);
$body = (string) $response->getBody();
$data = json_decode($body, true);
var_dump($data);
$ npm install axios

const axios = require('axios');
const response = await axios.post('https://backlinkbase.com/api/v1/tasks?api_token=your-api-token-here', {}, {
    headers: { 'Content-Type': 'application/json' }
});

return response.data.message;


$ pip install requests

import requests

url = 'https://backlinkbase.com/api/v1/tasks?api_token=your-api-token-here'
headers = {'Content-Type': 'application/json'}

response = requests.post(url, json={}, headers=headers)
data = response.json()
return data['message']

                                        
JSON
  HTTP/1.1 200 Success

                                          {
  "success": true,
  "message": [
    {
        "id": "6825f0ba291e7",
        "name": "API - Task Name 2",
        "status": "Queued Publishing",
        "updated_at": "2025-05-15T13:48:42.000000Z",
        "created_at": "2025-05-15T13:48:42.000000Z",
        "last_run_at": null,
        "completed_at": null
    },
    {
        "id": "4825f0ad291e1",
        "name": "API - Task Name 1",
        "status": "Cancelled",
        "created_at": "2025-05-12T09:18:24Z",
        "updated_at": "2025-05-14T06:20:11Z",
        "last_run_at": "2025-05-14T06:20:05Z",
        "completed_at": "2025-05-14T06:20:05Z"
    }
  ]
}