API Documentation Token authentication Advanced filters ETag caching

DataBoom🇳🇬 API Documentation

DataBoom🇳🇬 is a modern, multi-channel bills payment platform you can use on the Web, WhatsApp and Telegram. Upgraded users (called Vendors) can run their own WhatsApp/Telegram bots with zero monthly fees — keeping more profit as they grow. This documentation shows you how to connect your app, site, or bot to the API endpoints under /api/*.

Back to DataBoom🇳🇬 home Return to the main DataBoom website.
1) Create your account
To use private endpoints, you must be logged in.
Register
2) Copy your API keys
Your Profile shows a live key for production and a separate sandbox key for safe simulated requests.
Profile → Live API key / Sandbox API key
3) Call the API
Use your live key for real transactions or your sandbox key to test the same endpoint without production side effects.
Authorization: Token {API_KEY}
Base URL
https://databoomnigeria.ng/api
Try it
Default content type
application/json
Authentication
Authorization: Token {LIVE_OR_SANDBOX_API_KEY}
Quick tip
Use /api/network-details, /api/data-plans, /api/cable-details, /api/electricity-providers, and /api/exam-providers to discover provider IDs and plan IDs.
Last updated
2026-07-11
Bootstrap 5
Support email
hello@databoomnigeria.ng
WhatsApp
2347025073473
Never share either API key publicly. Use the sandbox key for demos, development and integration testing.
Contents
Search
Tip: Press / to focus search, and Esc to clear.
Try-it console Copy buttons OpenAPI
Getting started Authentication Errors

How to integrate

This API uses JSON and token authentication. Many list endpoints support filters, sorting, pagination, and ETag caching for ultra-fast clients.
Authentication
Private endpoints require either your live API key or your sandbox API key. After registration, both keys are available securely from your Profile.
Supported header formats:
  • Authorization: Token {API_KEY}
  • Token: {API_KEY}
  • X-API-KEY: {API_KEY}
Error handling
On failure, you will receive a JSON body like:
{ "status": "fail", "msg": "…" }
and an appropriate HTTP status (400/401/500).

Live and sandbox quickstart (cURL)

Live API — returns real account data and can perform real actions.
curl -X GET "https://databoomnigeria.ng/api/transactions?limit=10" \
  -H "Authorization: Token YOUR_LIVE_API_KEY"
Sandbox API — returns realistic simulated data without changing production.
curl -X GET "https://databoomnigeria.ng/api/transactions?limit=10" \
  -H "Authorization: Token YOUR_SANDBOX_API_KEY" \
  -H "X-API-Environment: sandbox"
Production-safe sandbox
Every documented endpoint supports sandbox execution. Sandbox write requests return endpoint-specific simulated results but never debit wallets, contact external providers, send campaigns, or modify production records.

ETag caching (performance boost)

Some list endpoints return an ETag. Reuse it in If-None-Match to get 304 Not Modified.
curl -X GET "https://databoomnigeria.ng/api/data-plans" \
  -H "Authorization: Token YOUR_TOKEN" \
  -H 'If-None-Match: "etag-value-here"'

Pagination and sorting

Many endpoints accept page, limit, sort_by, sort_dir.
curl -X GET "https://databoomnigeria.ng/api/transactions?page=2&limit=50&sort_by=amount&sort_dir=desc" \
  -H "Authorization: Token YOUR_TOKEN"

Common request headers

HeaderExampleNotes
Content-Typeapplication/jsonRequired for JSON POST bodies
AuthorizationToken YOUR_LIVE_API_KEYLive production requests
AuthorizationToken YOUR_SANDBOX_API_KEYSafe sandbox requests
X-API-EnvironmentsandboxOptional explicit sandbox marker; the sandbox key is still required.
X-Idempotency-Keyyour-unique-request-idRecommended for write and payment requests to prevent accidental duplicates.
If-None-Match"etag-value"Optional for list endpoints that support ETag

Status codes used

200 OK 304 Not Modified 400 Bad Request 401 Unauthorized 500 Server Error
Auth & User

Auth & User

Auth & User endpoints.
Mobile ready Copy buttons Code samples
/user POST Token required

User details

Fetch the logged-in user’s profile and balances using your API Token.
Endpoint URL
https://databoomnigeria.ng/api/user
Base: https://databoomnigeria.ng/api + Path: /user
Key notes
  • Your API token identifies your account (only active accounts can call private endpoints).
  • Response formats monetary values with 2 decimal places (string).

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: send the header as Token: {TOKEN}
Content-Type application/json Required

Request body (JSON)

FieldTypeDescription
(none) - This endpoint only needs your token header. Body is optional.

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{}

Code examples

curl -X POST "https://databoomnigeria.ng/api/user" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "X-Idempotency-Key: user-details-10001"
$url = "https://databoomnigeria.ng/api/user";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "X-Idempotency-Key: user-details-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/user";
const payload = {};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "X-Idempotency-Key": "user-details-10001",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/user"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","X-Idempotency-Key":"user-details-10001"}')
payload = None

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "id": 1001,
        "name": "Doe John",
        "first_name": "John",
        "last_name": "Doe",
        "email": "john@example.com",
        "phone": "08012345678",
        "account_type": 1,
        "balance": "50000.00",
        "commission_balance": "3500.00",
        "referral_balance": "750.00"
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
Catalog / Lookups

Catalog / Lookups

Catalog / Lookups endpoints.
Mobile ready Copy buttons Code samples
/network-details GET POST OPTIONS Public

Network details

List available networks and service toggles (VTU, SME, Gifting, Corporate, Share-sell, etc.).
Endpoint URL
https://databoomnigeria.ng/api/network-details
Base: https://databoomnigeria.ng/api + Path: /network-details
Key notes
  • Supports pagination, sorting, search (q), filters, and ETag caching (If-None-Match).
  • Debug logging: ?debug=1 writes to /api/network-details/network_details_error_log.txt

Query parameters

ParameterTypeDescription
q string Search in network name and key IDs (networkid/smeId/etc.)
status On|Off Filter networks by networkStatus
service vtu|sharesell|sme|gifting|corporate|datapin|airtimepin Filter by availability for a service
page int Default 1
limit int Default 50, max 200
sort_by network|nId|status Default network
sort_dir asc|desc Default asc

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "only_active": 1,
        "service": "data",
        "page": 1,
        "limit": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/network-details?only_active=1&service=data&page=1&limit=50"
$url = "https://databoomnigeria.ng/api/network-details?only_active=1&service=data&page=1&limit=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [

  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/network-details?only_active=1&service=data&page=1&limit=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {

  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/network-details?only_active=1&service=data&page=1&limit=50"
headers = json.loads('[]')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "msg": "Sandbox networks fetched successfully",
    "networks": [
        {
            "nId": 1,
            "network": "MTN",
            "logo": "/uploads/networks/mtn.png",
            "networkStatus": "On",
            "vtuStatus": "On",
            "sharesellStatus": "Off",
            "smeStatus": "On",
            "giftingStatus": "On",
            "corporateStatus": "On",
            "datapinStatus": "On",
            "airtimepinStatus": "On",
            "ids": {
                "networkid": "1",
                "smeId": "1",
                "giftingId": "1",
                "corporateId": "1",
                "vtuId": "1",
                "sharesellId": "1"
            }
        },
        {
            "nId": 2,
            "network": "Airtel",
            "logo": "/uploads/networks/airtel.png",
            "networkStatus": "On",
            "vtuStatus": "On",
            "sharesellStatus": "Off",
            "smeStatus": "On",
            "giftingStatus": "On",
            "corporateStatus": "On",
            "datapinStatus": "Off",
            "airtimepinStatus": "On",
            "ids": {
                "networkid": "2",
                "smeId": "2",
                "giftingId": "2",
                "corporateId": "2",
                "vtuId": "2",
                "sharesellId": "2"
            }
        }
    ],
    "count": 2,
    "airtimeType": "VTU"
}
Not Modified
304
{
    "status": "success",
    "msg": "Not modified",
    "requestId": "a1b2c3d4e5f6a7b8",
    "data": []
}
Fail
422
{
    "status": "fail",
    "code": "validation_error",
    "message": "One or more request values are invalid."
}
/data-plans GET POST OPTIONS Token required

Data plans (by network)

Fetch data plans grouped by network, with advanced filters and ETag caching.
Endpoint URL
https://databoomnigeria.ng/api/data-plans
Base: https://databoomnigeria.ng/api + Path: /data-plans
Key notes
  • Requires token: used to determine user type (user/agent/vendor) and return the correct price tier.
  • Returns networks[] and also mirrors it into data[] for compatibility.
  • Debug logging: ?debug=1 writes to /api/data-plans/data_plans_error_log.txt

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}

Query parameters

ParameterTypeDescription
network int|csv Filter by one or multiple network IDs (nId). Examples: 1 or 1,2,3
type SME|Gifting|Corporate Filter plan type
day int Filter by validity in days
max_price number Only return plans <= max_price (based on your tier price)
plan_limit int Limit plans per network (default 40; max 200)
page int Default 1
limit int Default 50; max 200 networks per page
sort_by network|nId|price Default network
sort_dir asc|desc Default asc

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "network": 1,
        "only_active": 1,
        "page": 1,
        "limit": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/data-plans?network=1&only_active=1&page=1&limit=50" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/data-plans?network=1&only_active=1&page=1&limit=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/data-plans?network=1&only_active=1&page=1&limit=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/data-plans?network=1&only_active=1&page=1&limit=50"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "msg": "Sandbox data plans fetched successfully",
    "networks": [
        {
            "networkId": 1,
            "networkName": "MTN",
            "dataplans": [
                {
                    "planId": 101,
                    "planName": "500MB SME",
                    "planType": "SME",
                    "planSize": "500MB",
                    "planValidity": "30 Days",
                    "userPrice": 160,
                    "agentPrice": 155,
                    "vendorPrice": 150,
                    "planStatus": "On"
                },
                {
                    "planId": 102,
                    "planName": "1GB Corporate",
                    "planType": "Corporate",
                    "planSize": "1GB",
                    "planValidity": "30 Days",
                    "userPrice": 320,
                    "agentPrice": 310,
                    "vendorPrice": 300,
                    "planStatus": "On"
                }
            ]
        },
        {
            "networkId": 2,
            "networkName": "Airtel",
            "dataplans": [
                {
                    "planId": 201,
                    "planName": "1GB Gifting",
                    "planType": "Gifting",
                    "planSize": "1GB",
                    "planValidity": "30 Days",
                    "userPrice": 350,
                    "agentPrice": 340,
                    "vendorPrice": 330,
                    "planStatus": "On"
                }
            ]
        }
    ],
    "count": 3
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/cable-details GET POST OPTIONS Public

Cable TV details

List cable TV providers and their plan metadata (plan IDs, names, validity).
Endpoint URL
https://databoomnigeria.ng/api/cable-details
Base: https://databoomnigeria.ng/api + Path: /cable-details
Key notes
  • Use planId from this endpoint when calling /api/cabletv.
  • Supports filters: q, provider, status; pagination, sorting, ETag caching.

Query parameters

ParameterTypeDescription
provider string|id Filter by provider ID (cId)
status On|Off Filter by provider status
q string Search provider/plan names
page int Default 1
limit int Default 50; max 200

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "providerIds": "1,2",
        "only_active": 1,
        "page": 1,
        "limit": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/cable-details?providerIds=1%2C2&only_active=1&page=1&limit=50"
$url = "https://databoomnigeria.ng/api/cable-details?providerIds=1%2C2&only_active=1&page=1&limit=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [

  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/cable-details?providerIds=1%2C2&only_active=1&page=1&limit=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {

  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/cable-details?providerIds=1%2C2&only_active=1&page=1&limit=50"
headers = json.loads('[]')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "msg": "Sandbox cable plans fetched successfully",
    "providers": [
        {
            "providerId": 1,
            "providerName": "DStv",
            "providerStatus": "On",
            "plans": [
                {
                    "planId": 11,
                    "planProvider": "DStv",
                    "planName": "DStv Padi",
                    "planUserPrice": 3600,
                    "planAgentPrice": 3550,
                    "planVendorPrice": 3500,
                    "planValidity": "30 Days"
                }
            ]
        },
        {
            "providerId": 2,
            "providerName": "GOtv",
            "providerStatus": "On",
            "plans": [
                {
                    "planId": 21,
                    "planProvider": "GOtv",
                    "planName": "GOtv Jolli",
                    "planUserPrice": 5000,
                    "planAgentPrice": 4950,
                    "planVendorPrice": 4900,
                    "planValidity": "30 Days"
                }
            ]
        }
    ],
    "count": 2
}
Fail
422
{
    "status": "fail",
    "code": "validation_error",
    "message": "One or more request values are invalid."
}
/electricity-providers GET POST OPTIONS Public

Electricity providers

List electricity discos/providers and their service status.
Endpoint URL
https://databoomnigeria.ng/api/electricity-providers
Base: https://databoomnigeria.ng/api + Path: /electricity-providers
Key notes
  • Use provider id (eId) when calling /api/electricity.
  • Supports filters, pagination, sorting, ETag caching.

Query parameters

ParameterTypeDescription
status On|Off Filter by providerStatus
q string Search provider name
page int Default 1
limit int Default 50; max 200

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "only_active": 1,
        "sort_by": "providerName",
        "sort_dir": "asc"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/electricity-providers?only_active=1&sort_by=providerName&sort_dir=asc"
$url = "https://databoomnigeria.ng/api/electricity-providers?only_active=1&sort_by=providerName&sort_dir=asc";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [

  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/electricity-providers?only_active=1&sort_by=providerName&sort_dir=asc";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {

  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/electricity-providers?only_active=1&sort_by=providerName&sort_dir=asc"
headers = json.loads('[]')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "msg": "Sandbox electricity providers fetched successfully",
    "providers": [
        {
            "providerId": 1,
            "providerName": "EEDC",
            "providerStatus": "On",
            "providerDiscount": 0.5,
            "providerCharges": 100
        },
        {
            "providerId": 2,
            "providerName": "IKEDC",
            "providerStatus": "On",
            "providerDiscount": 0.5,
            "providerCharges": 100
        }
    ],
    "count": 2
}
Fail
422
{
    "status": "fail",
    "code": "validation_error",
    "message": "One or more request values are invalid."
}
/exam-providers GET POST OPTIONS Public

Exam providers

List exam providers (WAEC, NECO, etc.) and their pricing metadata.
Endpoint URL
https://databoomnigeria.ng/api/exam-providers
Base: https://databoomnigeria.ng/api + Path: /exam-providers
Key notes
  • Use providerId (eId) when calling /api/exam.
  • Supports filters, pagination, sorting, ETag caching.

Query parameters

ParameterTypeDescription
status On|Off Filter by providerStatus
q string Search provider name
page int Default 1
limit int Default 50; max 200

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "only_active": 1,
        "sort_by": "providerPrice",
        "sort_dir": "asc"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/exam-providers?only_active=1&sort_by=providerPrice&sort_dir=asc"
$url = "https://databoomnigeria.ng/api/exam-providers?only_active=1&sort_by=providerPrice&sort_dir=asc";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [

  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/exam-providers?only_active=1&sort_by=providerPrice&sort_dir=asc";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {

  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/exam-providers?only_active=1&sort_by=providerPrice&sort_dir=asc"
headers = json.loads('[]')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "msg": "Sandbox exam providers fetched successfully",
    "providers": [
        {
            "providerId": 1,
            "providerName": "WAEC Result Checker",
            "providerPrice": 3900,
            "providerStatus": "On"
        },
        {
            "providerId": 2,
            "providerName": "NECO Result Checker",
            "providerPrice": 1200,
            "providerStatus": "On"
        }
    ],
    "count": 2
}
Fail
422
{
    "status": "fail",
    "code": "validation_error",
    "message": "One or more request values are invalid."
}
Transactions

Transactions

Transactions endpoints.
Mobile ready Copy buttons Code samples
/transactions GET POST OPTIONS Token required

List transactions

Fetch wallet transactions for the token owner with powerful filtering, sorting, pagination and ETag caching.
Endpoint URL
https://databoomnigeria.ng/api/transactions
Base: https://databoomnigeria.ng/api + Path: /transactions
Key notes
  • AUTH RULE: finds subscriber via subscribers.sApiKey = {TOKEN}, then returns transactions by subscribers.sId.
  • Output fields are intentionally minimal (only 8 per transaction), but filters are advanced.
  • Debug logging: ?debug=1 writes to /api/transactions/transactions_error_log.txt

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}

Query parameters

ParameterTypeDescription
status success|fail|processing|unknown OR 0|1|5 Filter by status
service string Exact match on servicename
q string Search in reference/service/description
min_amount number Minimum amount
max_amount number Maximum amount
date_from YYYY-MM-DD or YYYY-MM-DD HH:MM:SS Start date filter
date_to YYYY-MM-DD or YYYY-MM-DD HH:MM:SS End date filter
refs csv OR array Filter by specific transref(s)
sort_by date|amount|reference|service|status Default date
sort_dir asc|desc Default desc
page int Default 1
limit int Default 50; max 200

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "status": "success",
        "page": 1,
        "limit": 20,
        "sort_by": "date",
        "sort_dir": "desc"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/transactions?status=success&page=1&limit=20&sort_by=date&sort_dir=desc" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/transactions?status=success&page=1&limit=20&sort_by=date&sort_dir=desc";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/transactions?status=success&page=1&limit=20&sort_by=date&sort_dir=desc";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/transactions?status=success&page=1&limit=20&sort_by=date&sort_dir=desc"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "msg": "Sandbox transactions fetched successfully",
    "transactions": [
        {
            "reference": "SBX-TXN-001",
            "service": "Data",
            "description": "1GB MTN SME to 08012345678",
            "amount": "320.00",
            "status": "success",
            "before": "50320.00",
            "after": "50000.00",
            "date": "2026-07-11 09:45:00"
        },
        {
            "reference": "SBX-TXN-002",
            "service": "Wallet Funding",
            "description": "Sandbox AutoStatement credit",
            "amount": "5000.00",
            "status": "success",
            "before": "45000.00",
            "after": "50000.00",
            "date": "2026-07-11 09:00:00"
        }
    ],
    "count": 2,
    "pagination": {
        "page": 1,
        "limit": 50,
        "total": 2,
        "pages": 1
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
Customer verification

Customer verification

Customer verification endpoints.
Mobile ready Copy buttons Code samples
/cabletv/verify GET POST Token required

Verify Cable TV customer

Validate a Cable TV smart card or IUC number and return the registered customer name before subscription.
Endpoint URL
https://databoomnigeria.ng/api/cabletv/verify
Base: https://databoomnigeria.ng/api + Path: /cabletv/verify
Key notes
  • This endpoint only verifies customer details. It does not debit the wallet or create a subscription transaction.
  • Use the provider ID returned by /api/cable-details. The compatibility field cablename also accepts DSTV, GOTV or STARTIMES.
  • Both live and sandbox API keys are supported. Sandbox returns realistic customer data without contacting a provider.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required. Use a live API key or sandbox API key.
Content-Type application/json Required for POST JSON requests.

Query parameters

ParameterTypeDescription
provider int|string Cable provider ID. Get it from /api/cable-details.
iucnumber string Smart card or IUC number to verify.
cablename string Optional provider-name alias: DSTV, GOTV or STARTIMES.
smart_card_number string Optional alias for iucnumber.

Request body (JSON)

FieldTypeDescription
provider int|string Cable provider ID. Get it from /api/cable-details.
iucnumber string Smart card or IUC number to verify.
ref string Optional client reference used for request tracing.
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
iuc iucnumber Short compatibility alias.
smart_card_number iucnumber Common provider compatibility alias.
smartcard_number iucnumber Compatibility alias without an underscore after smart.
cablename provider Accepts a provider ID or DSTV, GOTV or STARTIMES.
cable_provider provider Descriptive provider-field alias.

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "provider": 1,
    "iucnumber": "1234567890"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/cabletv/verify" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: verify-cable-customer-10001" \
  -d '{"provider":1,"iucnumber":"1234567890"}'
$url = "https://databoomnigeria.ng/api/cabletv/verify";
$payload = array (
  'provider' => 1,
  'iucnumber' => '1234567890',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: verify-cable-customer-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/cabletv/verify";
const payload = {
    "provider": 1,
    "iucnumber": "1234567890"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "verify-cable-customer-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/cabletv/verify"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"verify-cable-customer-10001"}')
payload = json.loads('{"provider":1,"iucnumber":"1234567890"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "SANDBOX CUSTOMER",
    "name": "SANDBOX CUSTOMER",
    "Customer_Name": "SANDBOX CUSTOMER",
    "customer_name": "SANDBOX CUSTOMER",
    "provider_id": "1",
    "provider": "DStv",
    "iucnumber": "1234567890",
    "smart_card_number": "1234567890",
    "verification_reference": "CV-SBX-8F1A2C3D4E5F6789"
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/electricity/verify GET POST Token required

Verify electricity meter

Validate an electricity meter number and return the customer name and address before payment.
Endpoint URL
https://databoomnigeria.ng/api/electricity/verify
Base: https://databoomnigeria.ng/api + Path: /electricity/verify
Key notes
  • This endpoint only verifies meter details. It does not debit the wallet or purchase electricity units.
  • Use the provider ID returned by /api/electricity-providers. Provider names and abbreviations are also accepted where configured.
  • Meter type must be PREPAID or POSTPAID.
  • Both live and sandbox API keys are supported. Sandbox returns realistic meter data without contacting a provider.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required. Use a live API key or sandbox API key.
Content-Type application/json Required for POST JSON requests.

Query parameters

ParameterTypeDescription
provider int|string Electricity provider ID, name or abbreviation. Get IDs from /api/electricity-providers.
meternumber string Electricity meter number to verify.
metertype PREPAID|POSTPAID Meter type.
meter_number string Optional alias for meternumber.
mtype string Optional alias for metertype.

Request body (JSON)

FieldTypeDescription
provider int|string Electricity provider ID, name or abbreviation. Get IDs from /api/electricity-providers.
meternumber string Electricity meter number to verify.
metertype PREPAID|POSTPAID Meter type.
ref string Optional client reference used for request tracing.
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
meter_number meternumber Common meter-number compatibility alias.
meter meternumber Short meter-number alias.
meter_type metertype Snake-case meter-type alias.
mtype metertype Provider compatibility alias.
MeterType metertype Case-sensitive provider compatibility alias.
disco provider Electricity distribution-company alias.
disconame provider Electricity distribution-company name alias.
disco_name provider Snake-case distribution-company alias.

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "provider": 1,
    "meternumber": "12345678901",
    "metertype": "PREPAID"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/electricity/verify" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: verify-electricity-meter-10001" \
  -d '{"provider":1,"meternumber":"12345678901","metertype":"PREPAID"}'
$url = "https://databoomnigeria.ng/api/electricity/verify";
$payload = array (
  'provider' => 1,
  'meternumber' => '12345678901',
  'metertype' => 'PREPAID',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: verify-electricity-meter-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/electricity/verify";
const payload = {
    "provider": 1,
    "meternumber": "12345678901",
    "metertype": "PREPAID"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "verify-electricity-meter-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/electricity/verify"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"verify-electricity-meter-10001"}')
payload = json.loads('{"provider":1,"meternumber":"12345678901","metertype":"PREPAID"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "SANDBOX CUSTOMER @ 1 Sandbox Avenue",
    "name": "SANDBOX CUSTOMER @ 1 Sandbox Avenue",
    "Customer_Name": "SANDBOX CUSTOMER @ 1 Sandbox Avenue",
    "customer_name": "SANDBOX CUSTOMER",
    "customer_address": "1 Sandbox Avenue",
    "provider_id": "1",
    "provider": "EEDC",
    "meter_number": "12345678901",
    "meternumber": "12345678901",
    "meter_type": "PREPAID",
    "verification_reference": "EV-SBX-9A8B7C6D5E4F3210"
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
Purchases (Debit wallet)

Purchases (Debit wallet)

Purchases (Debit wallet) endpoints.
Mobile ready Copy buttons Code samples
/airtime POST Token required

Buy airtime

Purchase airtime (VTU or Share & Sell). Debits wallet and records a transaction.
Endpoint URL
https://databoomnigeria.ng/api/airtime
Base: https://databoomnigeria.ng/api + Path: /airtime
Key notes
  • Minimum/maximum purchase limits are enforced by the platform configuration.
  • Airtime type must be exactly: "VTU" or "Share And Sell".
  • Optional: set ported_number="true" to skip network prefix validation.
  • Transaction ref (ref) must be unique; duplicates return an error.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}
Content-Type application/json Required

Request body (JSON)

FieldTypeDescription
network int Network nId. Get from /api/network-details
phone string Recipient phone number (11 digits).
amount number Airtime amount (naira).
airtime_type string Exactly "VTU" or "Share And Sell". Default is "VTU" if omitted.
ported_number string Optional. "true" to skip prefix validation. Default "false".
ref string|int Unique transaction reference. If omitted, it auto-uses time().
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
mobile_number phone Alternate field name supported by the endpoint
Ported_number ported_number Alternate field name supported by the endpoint

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "network": 1,
    "amount": 1000,
    "phone": "08012345678",
    "airtime_type": "VTU",
    "ref": "ORDER-10001"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/airtime" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: buy-airtime-10001" \
  -d '{"network":1,"amount":1000,"phone":"08012345678","airtime_type":"VTU","ref":"ORDER-10001"}'
$url = "https://databoomnigeria.ng/api/airtime";
$payload = array (
  'network' => 1,
  'amount' => 1000,
  'phone' => '08012345678',
  'airtime_type' => 'VTU',
  'ref' => 'ORDER-10001',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: buy-airtime-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/airtime";
const payload = {
    "network": 1,
    "amount": 1000,
    "phone": "08012345678",
    "airtime_type": "VTU",
    "ref": "ORDER-10001"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "buy-airtime-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/airtime"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"buy-airtime-10001"}')
payload = json.loads('{"network":1,"amount":1000,"phone":"08012345678","airtime_type":"VTU","ref":"ORDER-10001"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "Sandbox transaction completed successfully",
    "reference": "ORDER-10001",
    "transaction_reference": "ORDER-10001",
    "amount": "1000.00",
    "phone": "08012345678",
    "balance_before": "50000.00",
    "balance_after": "49000.00",
    "service": "airtime",
    "network": 1,
    "airtime_type": "VTU"
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/data POST Token required

Buy data

Purchase mobile data bundle using a plan ID. Debits wallet and records a transaction.
Endpoint URL
https://databoomnigeria.ng/api/data
Base: https://databoomnigeria.ng/api + Path: /data
Key notes
  • Network must be active (networkStatus = On).
  • Plan must exist for that network (datanetwork) and must be enabled per group (SME/Gifting/Corporate) on the networkid flags.
  • Optional: set ported_number="true" to skip phone network validation.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}
Content-Type application/json Required

Request body (JSON)

FieldTypeDescription
network int Network nId. Get from /api/network-details
phone string Recipient phone number
data_plan int Data plan pId. Get from /api/data-plans for your network
ported_number string Optional. "true" to skip prefix validation. Default "false".
ref string|int Unique transaction reference. If omitted, it auto-uses time().
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
mobile_number phone Alternate field name
plan data_plan Alternate field name
Ported_number ported_number Alternate field name

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "network": 1,
    "data_plan": 101,
    "phone": "08012345678",
    "ref": "ORDER-10003"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/data" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: buy-data-10001" \
  -d '{"network":1,"data_plan":101,"phone":"08012345678","ref":"ORDER-10003"}'
$url = "https://databoomnigeria.ng/api/data";
$payload = array (
  'network' => 1,
  'data_plan' => 101,
  'phone' => '08012345678',
  'ref' => 'ORDER-10003',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: buy-data-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/data";
const payload = {
    "network": 1,
    "data_plan": 101,
    "phone": "08012345678",
    "ref": "ORDER-10003"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "buy-data-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/data"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"buy-data-10001"}')
payload = json.loads('{"network":1,"data_plan":101,"phone":"08012345678","ref":"ORDER-10003"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "Sandbox transaction completed successfully",
    "reference": "ORDER-10003",
    "transaction_reference": "ORDER-10003",
    "amount": "320.00",
    "phone": "08012345678",
    "balance_before": "50000.00",
    "balance_after": "49680.00",
    "service": "data",
    "network": 1,
    "data_plan": 101,
    "plan_name": "1GB SME",
    "validity": "30 Days"
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/cabletv POST Token required

Cable TV subscription

Subscribe a smartcard/IUC number to a cable plan. Debits wallet and records a transaction.
Endpoint URL
https://databoomnigeria.ng/api/cabletv
Base: https://databoomnigeria.ng/api + Path: /cabletv
Key notes
  • Use /api/cable-details to discover provider IDs and plan IDs.
  • Records the transaction as processing (status 5) before contacting the provider, then updates status to 0/1.
  • The endpoint supports alternate body keys for compatibility.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}
Content-Type application/json Required

Request body (JSON)

FieldTypeDescription
provider string|int Cable provider id (cId)
iucnumber string Smart card / IUC number
plan string|int Cable plan ID (planid)
ref string|int Unique transaction reference. If omitted, it auto-uses time().
phone string Optional (not required by the code).
subtype string Optional (not required by the code).
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
smart_card_number iucnumber Alternate key
cablename provider Alternate key
cableplan plan Alternate key
cable_plan plan Alternate key

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "provider": 1,
    "plan": 11,
    "iuc": "1234567890",
    "phone": "08012345678",
    "ref": "ORDER-10005"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/cabletv" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: buy-cable-10001" \
  -d '{"provider":1,"plan":11,"iuc":"1234567890","phone":"08012345678","ref":"ORDER-10005"}'
$url = "https://databoomnigeria.ng/api/cabletv";
$payload = array (
  'provider' => 1,
  'plan' => 11,
  'iuc' => '1234567890',
  'phone' => '08012345678',
  'ref' => 'ORDER-10005',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: buy-cable-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/cabletv";
const payload = {
    "provider": 1,
    "plan": 11,
    "iuc": "1234567890",
    "phone": "08012345678",
    "ref": "ORDER-10005"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "buy-cable-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/cabletv"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"buy-cable-10001"}')
payload = json.loads('{"provider":1,"plan":11,"iuc":"1234567890","phone":"08012345678","ref":"ORDER-10005"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "Sandbox transaction completed successfully",
    "reference": "ORDER-10005",
    "transaction_reference": "ORDER-10005",
    "amount": "3600.00",
    "phone": "08012345678",
    "balance_before": "50000.00",
    "balance_after": "46400.00",
    "service": "cable_tv",
    "provider": 1,
    "plan": 11,
    "iuc": "1234567890",
    "customer_name": "SANDBOX CUSTOMER"
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/electricity POST Token required

Electricity token

Buy electricity units for a meter number. Debits wallet and records a transaction.
Endpoint URL
https://databoomnigeria.ng/api/electricity
Base: https://databoomnigeria.ng/api + Path: /electricity
Key notes
  • Minimum purchase enforced: ₦1000.
  • Extra charges may apply based on platform configuration and provider rates.
  • On success, the unit token is returned immediately in msg and token, and is appended into the transaction description (servicedesc).
  • The success response also includes ref, reference and description so applications can show a complete receipt immediately.
  • To retrieve the token later, call /api/transactions and read description for that reference.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}
Content-Type application/json Required

Request body (JSON)

FieldTypeDescription
provider string|int Electricity provider id (eId). Use /api/electricity-providers
meternumber string Meter number
metertype string Meter type (e.g., PREPAID or POSTPAID)
amount number Amount to buy (naira). Minimum 1000
phone string Optional
ref string|int Unique transaction reference. If omitted, it auto-uses time().
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
MeterType metertype Alternate key
disco_name provider Alternate key
meter_number meternumber Alternate key

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "provider": 1,
    "meter_number": "12345678901",
    "metertype": "PREPAID",
    "amount": 5000,
    "phone": "08012345678",
    "ref": "ORDER-10006"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/electricity" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: buy-electricity-10001" \
  -d '{"provider":1,"meter_number":"12345678901","metertype":"PREPAID","amount":5000,"phone":"08012345678","ref":"ORDER-10006"}'
$url = "https://databoomnigeria.ng/api/electricity";
$payload = array (
  'provider' => 1,
  'meter_number' => '12345678901',
  'metertype' => 'PREPAID',
  'amount' => 5000,
  'phone' => '08012345678',
  'ref' => 'ORDER-10006',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: buy-electricity-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/electricity";
const payload = {
    "provider": 1,
    "meter_number": "12345678901",
    "metertype": "PREPAID",
    "amount": 5000,
    "phone": "08012345678",
    "ref": "ORDER-10006"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "buy-electricity-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/electricity"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"buy-electricity-10001"}')
payload = json.loads('{"provider":1,"meter_number":"12345678901","metertype":"PREPAID","amount":5000,"phone":"08012345678","ref":"ORDER-10006"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "Sandbox transaction completed successfully",
    "reference": "ORDER-10006",
    "transaction_reference": "ORDER-10006",
    "amount": "5000.00",
    "phone": "08012345678",
    "balance_before": "50000.00",
    "balance_after": "45000.00",
    "service": "electricity",
    "provider": 1,
    "meter_number": "12345678901",
    "meter_type": "PREPAID",
    "customer_name": "SANDBOX CUSTOMER",
    "token": "1234-5678-9012-3456-7890",
    "units": "42.50"
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/exam POST Token required

Exam PIN

Buy one or more exam PIN tokens.
Endpoint URL
https://databoomnigeria.ng/api/exam
Base: https://databoomnigeria.ng/api + Path: /exam
Key notes
  • Provider must be available (providerStatus = On).
  • On success, the PIN is returned in multiple keys for compatibility: msg, pin, pins, token.
  • The PIN is also appended into the transaction description (servicedesc).

Headers

HeaderValueNotes
Authorization Token {TOKEN} Alternative: Token: {TOKEN}
Content-Type application/json Required

Request body (JSON)

FieldTypeDescription
provider string|int Exam provider id (eId). Use /api/exam-providers
quantity int How many PINs to buy
ref string|int Unique transaction reference. If omitted, it auto-uses time().
Alternate field names supported
These aliases are explicitly supported by the endpoint code for compatibility with other providers:
AlternateMaps toNotes
exam_name provider Alternate key

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "provider": 1,
    "quantity": 1,
    "ref": "ORDER-10007"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/exam" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: buy-exam-10001" \
  -d '{"provider":1,"quantity":1,"ref":"ORDER-10007"}'
$url = "https://databoomnigeria.ng/api/exam";
$payload = array (
  'provider' => 1,
  'quantity' => 1,
  'ref' => 'ORDER-10007',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: buy-exam-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/exam";
const payload = {
    "provider": 1,
    "quantity": 1,
    "ref": "ORDER-10007"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "buy-exam-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/exam"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"buy-exam-10001"}')
payload = json.loads('{"provider":1,"quantity":1,"ref":"ORDER-10007"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "Status": "successful",
    "msg": "SBX-1234-5678-9012",
    "pin": "SBX-1234-5678-9012",
    "pins": [
        "SBX-1234-5678-9012"
    ],
    "token": "SBX-1234-5678-9012",
    "reference": "ORDER-10007",
    "provider": 1,
    "quantity": 1
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
Vendor-specific API

Vendor-specific API

Vendor-specific API endpoints.
Mobile ready Copy buttons Code samples
/vendor/dashboard GET Vendor token required

Vendor dashboard

Balances, users, transactions, payment and withdrawal KPIs plus recent transactions.
Endpoint URL
https://databoomnigeria.ng/api/vendor/dashboard
Base: https://databoomnigeria.ng/api + Path: /vendor/dashboard
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "period": "30d"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/dashboard?period=30d" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/dashboard?period=30d";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/dashboard?period=30d";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/dashboard?period=30d"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "vendor": {
            "id": 1001,
            "name": "John Doe",
            "type": "vendor"
        },
        "balances": {
            "main_wallet": "50000.00",
            "commission_wallet": "3500.00",
            "referral_wallet": "750.00"
        },
        "kpis": {
            "users": 125,
            "transactions": 1840,
            "successful_transactions": 1772,
            "payments_received": "425000.00",
            "pending_withdrawals": "0.00"
        },
        "recent_transactions": [
            {
                "id": 7001,
                "reference": "SBX-TXN-001",
                "service": "Data",
                "description": "1GB MTN SME to 08012345678",
                "amount": "320.00",
                "status": "success",
                "date": "2026-07-11 09:45:00"
            }
        ]
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/quick-setup GET Vendor token required

Vendor quick setup

Return the same setup checks and incomplete-item guidance used by the vendor quick-setup page.
Endpoint URL
https://databoomnigeria.ng/api/vendor/quick-setup
Base: https://databoomnigeria.ng/api + Path: /vendor/quick-setup
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {}
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/quick-setup" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/quick-setup";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/quick-setup";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/quick-setup"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "completion_percent": 86,
        "completed_steps": 6,
        "total_steps": 7,
        "checks": [
            {
                "key": "website",
                "label": "Configure VTUPlug website",
                "complete": true,
                "url": "/user/vendor-website"
            },
            {
                "key": "payment_method",
                "label": "Enable a payment method",
                "complete": true,
                "url": "/user/vendor-payment-methods"
            },
            {
                "key": "telegram",
                "label": "Connect Telegram BOT",
                "complete": false,
                "url": "/user/vendor-telegram-bot-settings"
            }
        ],
        "next_action": {
            "key": "telegram",
            "label": "Connect Telegram BOT",
            "url": "/user/vendor-telegram-bot-settings"
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/website GET POST PATCH Vendor token required

Vendor website

Read or update the vendor VTUPlug website, CMS, branding, SEO and PWA configuration.
Endpoint URL
https://databoomnigeria.ng/api/vendor/website
Base: https://databoomnigeria.ng/api + Path: /vendor/website
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save_website
CMS/settings fields mixed Send only fields being changed. GET returns the full safe payload.

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save_website",
    "site_name": "My VTU Store",
    "hero_title": "Instant digital services",
    "primary_color": "#2563eb",
    "pwa_enabled": true
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/website" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-website-10001" \
  -d '{"action":"save_website","site_name":"My VTU Store","hero_title":"Instant digital services","primary_color":"#2563eb","pwa_enabled":true}'
$url = "https://databoomnigeria.ng/api/vendor/website";
$payload = array (
  'action' => 'save_website',
  'site_name' => 'My VTU Store',
  'hero_title' => 'Instant digital services',
  'primary_color' => '#2563eb',
  'pwa_enabled' => true,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-website-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/website";
const payload = {
    "action": "save_website",
    "site_name": "My VTU Store",
    "hero_title": "Instant digital services",
    "primary_color": "#2563eb",
    "pwa_enabled": true
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-website-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/website"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-website-10001"}')
payload = json.loads('{"action":"save_website","site_name":"My VTU Store","hero_title":"Instant digital services","primary_color":"#2563eb","pwa_enabled":true}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "website": {
            "domain": "sandbox-vendor.example.test",
            "site_name": "Sandbox VTU Store",
            "status": "active",
            "theme": "premium",
            "primary_color": "#2563eb",
            "pwa_enabled": true,
            "seo_title": "Sandbox VTU Store"
        },
        "cms": {
            "hero_title": "Instant airtime, data and bill payments",
            "hero_subtitle": "Fast and secure digital services"
        },
        "action_result": {
            "saved": true,
            "message": "Sandbox website settings validated; no production data was changed."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/website-traffic GET Vendor token required

Website traffic analytics

Return vendor website visits, visitors, devices, referrers, locations and period comparisons.
Endpoint URL
https://databoomnigeria.ng/api/vendor/website-traffic
Base: https://databoomnigeria.ng/api + Path: /vendor/website-traffic
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "period": "30d",
        "compare": 1
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/website-traffic?period=30d&compare=1" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/website-traffic?period=30d&compare=1";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/website-traffic?period=30d&compare=1";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/website-traffic?period=30d&compare=1"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "period": {
            "from": "2026-07-05",
            "to": "2026-07-11"
        },
        "totals": {
            "visits": 4200,
            "unique_visitors": 2850,
            "pageviews": 9600,
            "bounce_rate": 28.4
        },
        "devices": [
            {
                "name": "Mobile",
                "visits": 3400
            },
            {
                "name": "Desktop",
                "visits": 800
            }
        ],
        "top_pages": [
            {
                "path": "/",
                "pageviews": 3500
            },
            {
                "path": "/data",
                "pageviews": 1900
            }
        ],
        "referrers": [
            {
                "source": "Direct",
                "visits": 2300
            },
            {
                "source": "Google",
                "visits": 1200
            }
        ]
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/whatsapp-bot GET POST PATCH Vendor token required

WhatsApp BOT settings

Read/update the BOT number and session duration; securely reveal, lock or regenerate the vendor webhook secret.
Endpoint URL
https://databoomnigeria.ng/api/vendor/whatsapp-bot
Base: https://databoomnigeria.ng/api + Path: /vendor/whatsapp-bot
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save_bot_whatsapp_number, update_bot_whatsapp_number, unlock_sensitive, get_sensitive, lock_sensitive or regen_secret
bot_whatsapp_number string Vendor BOT phone number
bot_session_expires int Session lifetime in hours
password / pin string Required when revealing or regenerating the secret

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save_bot_whatsapp_number",
    "bot_whatsapp_number": "2348012345678",
    "bot_session_expires": 24
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/whatsapp-bot" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-whatsapp-bot-10001" \
  -d '{"action":"save_bot_whatsapp_number","bot_whatsapp_number":"2348012345678","bot_session_expires":24}'
$url = "https://databoomnigeria.ng/api/vendor/whatsapp-bot";
$payload = array (
  'action' => 'save_bot_whatsapp_number',
  'bot_whatsapp_number' => '2348012345678',
  'bot_session_expires' => 24,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-whatsapp-bot-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/whatsapp-bot";
const payload = {
    "action": "save_bot_whatsapp_number",
    "bot_whatsapp_number": "2348012345678",
    "bot_session_expires": 24
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-whatsapp-bot-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/whatsapp-bot"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-whatsapp-bot-10001"}')
payload = json.loads('{"action":"save_bot_whatsapp_number","bot_whatsapp_number":"2348012345678","bot_session_expires":24}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "enabled": true,
        "bot_whatsapp_number": "2348012345678",
        "session_expires_hours": 24,
        "webhook_url": "https://example.test/webhook/vendor/whatsapp/1001",
        "secret": {
            "configured": true,
            "masked": "abcd****************wxyz"
        },
        "action_result": {
            "saved": true,
            "message": "Sandbox validation completed."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/telegram-bot GET POST PATCH Vendor token required

Telegram BOT settings

Read/update the Telegram BOT token, profile, commands, menu button, webhook, test messages and secret key.
Endpoint URL
https://databoomnigeria.ng/api/vendor/telegram-bot
Base: https://databoomnigeria.ng/api + Path: /vendor/telegram-bot
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action / telegram_action string save_token, set_description, set_short_description, set_commands, clear_commands, set_menu_webapp, clear_menu_button, test_send_message, regenerate_bot_secret_key, set_webhook_now, delete_webhook or webhook_info
telegram_bot_token string Telegram BOT token
commands array Command and description objects
webapp_url string HTTPS Telegram menu Web App URL

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "set_commands",
    "commands": [
        {
            "command": "balance",
            "description": "Check wallet balance"
        },
        {
            "command": "data",
            "description": "Buy data"
        }
    ]
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/telegram-bot" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-telegram-bot-10001" \
  -d '{"action":"set_commands","commands":[{"command":"balance","description":"Check wallet balance"},{"command":"data","description":"Buy data"}]}'
$url = "https://databoomnigeria.ng/api/vendor/telegram-bot";
$payload = array (
  'action' => 'set_commands',
  'commands' => 
  array (
    0 => 
    array (
      'command' => 'balance',
      'description' => 'Check wallet balance',
    ),
    1 => 
    array (
      'command' => 'data',
      'description' => 'Buy data',
    ),
  ),
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-telegram-bot-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/telegram-bot";
const payload = {
    "action": "set_commands",
    "commands": [
        {
            "command": "balance",
            "description": "Check wallet balance"
        },
        {
            "command": "data",
            "description": "Buy data"
        }
    ]
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-telegram-bot-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/telegram-bot"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-telegram-bot-10001"}')
payload = json.loads('{"action":"set_commands","commands":[{"command":"balance","description":"Check wallet balance"},{"command":"data","description":"Buy data"}]}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "enabled": true,
        "bot_username": "sandbox_databoom_bot",
        "description": "Sandbox vendor assistant",
        "commands": [
            {
                "command": "start",
                "description": "Start the BOT"
            },
            {
                "command": "balance",
                "description": "Check wallet balance"
            }
        ],
        "menu_button": {
            "type": "web_app",
            "url": "https://sandbox.example.test/bot"
        },
        "webhook": {
            "configured": true,
            "pending_update_count": 0
        },
        "token_masked": "1234************abcd",
        "action_result": {
            "ok": true,
            "description": "Sandbox Telegram action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/help GET Vendor token required

Vendor help catalogue

Return the full vendor help catalogue and setup diagnostics.
Endpoint URL
https://databoomnigeria.ng/api/vendor/help
Base: https://databoomnigeria.ng/api + Path: /vendor/help
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "category": "getting-started"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/help?category=getting-started" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/help?category=getting-started";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/help?category=getting-started";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/help?category=getting-started"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "categories": [
            {
                "id": "getting-started",
                "title": "Getting started",
                "description": "Set up the essential parts of your vendor account.",
                "articles": [
                    {
                        "title": "Configure your website",
                        "slug": "configure-website",
                        "summary": "Set branding, domain, PWA and contact details."
                    },
                    {
                        "title": "Enable payment collection",
                        "slug": "enable-payment-collection",
                        "summary": "Choose and configure AutoStatement or PocketFi."
                    }
                ]
            },
            {
                "id": "bots",
                "title": "BOT channels",
                "description": "Connect and manage WhatsApp and Telegram.",
                "articles": [
                    {
                        "title": "Connect Telegram BOT",
                        "slug": "connect-telegram-bot",
                        "summary": "Add a BOT token, commands, menu and webhook."
                    }
                ]
            }
        ],
        "diagnostics": {
            "website_ready": true,
            "payment_collection_ready": true,
            "whatsapp_ready": true,
            "telegram_ready": false
        },
        "support": {
            "email": "support@example.test",
            "whatsapp": "2348012345678"
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/withdrawals GET POST DELETE Vendor token required

Vendor withdrawals

List balances, accounts and withdrawals; add/delete accounts, transfer commission or request withdrawal.
Endpoint URL
https://databoomnigeria.ng/api/vendor/withdrawals
Base: https://databoomnigeria.ng/api + Path: /vendor/withdrawals
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string bank_resolve, paystack_resolve, security_send_token, kyc_finalize, add_account, delete_account, withdraw or transfer_to_main
password string Required for account and money mutations
pin string Required for account and money mutations
bank_code / account_number string Used for bank resolution and account creation
amount number Withdrawal or commission-to-main-wallet transfer amount
account_id int Withdrawal account ID

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "withdraw",
    "account_id": 91,
    "amount": 2000,
    "password": "YOUR_PASSWORD",
    "pin": "1234"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/withdrawals" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-withdrawals-10001" \
  -d '{"action":"withdraw","account_id":91,"amount":2000,"password":"YOUR_PASSWORD","pin":"1234"}'
$url = "https://databoomnigeria.ng/api/vendor/withdrawals";
$payload = array (
  'action' => 'withdraw',
  'account_id' => 91,
  'amount' => 2000,
  'password' => 'YOUR_PASSWORD',
  'pin' => '1234',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-withdrawals-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/withdrawals";
const payload = {
    "action": "withdraw",
    "account_id": 91,
    "amount": 2000,
    "password": "YOUR_PASSWORD",
    "pin": "1234"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-withdrawals-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/withdrawals"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-withdrawals-10001"}')
payload = json.loads('{"action":"withdraw","account_id":91,"amount":2000,"password":"YOUR_PASSWORD","pin":"1234"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "balances": {
            "commission_wallet": "3500.00",
            "main_wallet": "50000.00"
        },
        "limits": {
            "minimum": "1000.00",
            "maximum": "500000.00",
            "interval_hours": 24
        },
        "accounts": [
            {
                "id": 91,
                "bank_name": "Access Bank",
                "account_number": "0123456789",
                "account_name": "SANDBOX VENDOR",
                "status": "verified"
            }
        ],
        "withdrawals": [
            {
                "id": 81,
                "reference": "SBX-WD-001",
                "amount": "2000.00",
                "status": "paid",
                "created_at": "2026-07-10 14:00:00"
            }
        ],
        "action_result": {
            "reference": "SBX-DA7008DE12D91E",
            "status": "simulated",
            "message": "Sandbox withdrawal action accepted without moving funds."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/bot-business GET POST PATCH DELETE Vendor token required

BOT business console

Expose business settings, commands, broadcasts, tickets, schedules, analytics and supported console actions.
Endpoint URL
https://databoomnigeria.ng/api/vendor/bot-business
Base: https://databoomnigeria.ng/api + Path: /vendor/bot-business
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string Any supported business-console action
action fields mixed Same fields used by the matching vendor-panel business-console action

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save_business_settings",
    "business_name": "My VTU Store",
    "timezone": "Africa/Lagos"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/bot-business" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-bot-business-10001" \
  -d '{"action":"save_business_settings","business_name":"My VTU Store","timezone":"Africa/Lagos"}'
$url = "https://databoomnigeria.ng/api/vendor/bot-business";
$payload = array (
  'action' => 'save_business_settings',
  'business_name' => 'My VTU Store',
  'timezone' => 'Africa/Lagos',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-bot-business-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/bot-business";
const payload = {
    "action": "save_business_settings",
    "business_name": "My VTU Store",
    "timezone": "Africa/Lagos"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-bot-business-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/bot-business"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-bot-business-10001"}')
payload = json.loads('{"action":"save_business_settings","business_name":"My VTU Store","timezone":"Africa/Lagos"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "settings": {
            "business_name": "Sandbox VTU Store",
            "timezone": "Africa/Lagos",
            "currency": "NGN"
        },
        "metrics": {
            "conversations": 620,
            "resolved": 580,
            "open_tickets": 8,
            "automation_rate": 92.5
        },
        "commands": [
            {
                "command": "data",
                "enabled": true
            },
            {
                "command": "airtime",
                "enabled": true
            }
        ],
        "broadcasts": [
            {
                "id": 1,
                "title": "Weekend promo",
                "status": "sent",
                "recipients": 420
            }
        ],
        "tickets": [
            {
                "id": 11,
                "subject": "Data delay",
                "status": "open",
                "priority": "high"
            }
        ],
        "action_result": {
            "ok": true,
            "message": "Sandbox business-console action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/bot-staff GET POST PATCH DELETE Vendor token required

BOT staff management

List and manage vendor BOT staff and delegated web access through the business-console action engine.
Endpoint URL
https://databoomnigeria.ng/api/vendor/bot-staff
Base: https://databoomnigeria.ng/api + Path: /vendor/bot-staff
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save_staff, set_staff_status, reset_staff_web_password or another supported staff-console action

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save_staff",
    "name": "Ada Support",
    "email": "ada@example.com",
    "role": "support",
    "permissions": [
        "view_conversations",
        "reply"
    ]
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/bot-staff" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-bot-staff-10001" \
  -d '{"action":"save_staff","name":"Ada Support","email":"ada@example.com","role":"support","permissions":["view_conversations","reply"]}'
$url = "https://databoomnigeria.ng/api/vendor/bot-staff";
$payload = array (
  'action' => 'save_staff',
  'name' => 'Ada Support',
  'email' => 'ada@example.com',
  'role' => 'support',
  'permissions' => 
  array (
    0 => 'view_conversations',
    1 => 'reply',
  ),
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-bot-staff-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/bot-staff";
const payload = {
    "action": "save_staff",
    "name": "Ada Support",
    "email": "ada@example.com",
    "role": "support",
    "permissions": [
        "view_conversations",
        "reply"
    ]
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-bot-staff-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/bot-staff"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-bot-staff-10001"}')
payload = json.loads('{"action":"save_staff","name":"Ada Support","email":"ada@example.com","role":"support","permissions":["view_conversations","reply"]}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "staff": [
            {
                "id": 41,
                "name": "Ada Support",
                "email": "ada@example.test",
                "role": "support",
                "status": "active",
                "permissions": [
                    "view_conversations",
                    "reply",
                    "view_orders"
                ]
            }
        ],
        "settings": {
            "maximum_staff": 10
        },
        "metrics": {
            "active_staff": 1,
            "pending_invites": 0
        },
        "action_result": {
            "ok": true,
            "message": "Sandbox staff action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/settings GET POST PATCH DELETE Vendor token required

Vendor settings

Read redacted settings; save business/referral/pricing values, per-network markups, SMTP configuration and branding.
Endpoint URL
https://databoomnigeria.ng/api/vendor/settings
Base: https://databoomnigeria.ng/api + Path: /vendor/settings
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save_settings, smtp_test, smtp_clear or logo_clear
network_percentages object Per-network user, agent and vendor percentage markups
logo_light file/string Multipart image upload or saved logo path
Supported setting fields mixed Business, contact, referral, pricing, SMTP and automatic plan-update fields

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save_settings",
    "business_name": "My VTU Store",
    "support_email": "support@example.com",
    "network_percentages": {
        "mtn": {
            "user": 5,
            "agent": 3,
            "vendor": 1.5
        }
    }
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/settings" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-settings-10001" \
  -d '{"action":"save_settings","business_name":"My VTU Store","support_email":"support@example.com","network_percentages":{"mtn":{"user":5,"agent":3,"vendor":1.5}}}'
$url = "https://databoomnigeria.ng/api/vendor/settings";
$payload = array (
  'action' => 'save_settings',
  'business_name' => 'My VTU Store',
  'support_email' => 'support@example.com',
  'network_percentages' => 
  array (
    'mtn' => 
    array (
      'user' => 5,
      'agent' => 3,
      'vendor' => 1.5,
    ),
  ),
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-settings-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/settings";
const payload = {
    "action": "save_settings",
    "business_name": "My VTU Store",
    "support_email": "support@example.com",
    "network_percentages": {
        "mtn": {
            "user": 5,
            "agent": 3,
            "vendor": 1.5
        }
    }
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-settings-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/settings"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-settings-10001"}')
payload = json.loads('{"action":"save_settings","business_name":"My VTU Store","support_email":"support@example.com","network_percentages":{"mtn":{"user":5,"agent":3,"vendor":1.5}}}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "business": {
            "name": "Sandbox VTU Store",
            "email": "support@example.test",
            "phone": "2348012345678",
            "address": "1 Sandbox Avenue"
        },
        "pricing": {
            "automatic_updates": true,
            "network_percentages": {
                "mtn": {
                    "user": 5,
                    "agent": 3,
                    "vendor": 1.5
                }
            }
        },
        "referral": {
            "enabled": true,
            "bonus_percent": 1
        },
        "smtp": {
            "configured": true,
            "host": "smtp.example.test",
            "port": 587,
            "username": "support@example.test",
            "password": "********"
        },
        "branding": {
            "logo_light": "/uploads/vendor/sandbox-logo.png"
        },
        "action_result": {
            "saved": true,
            "message": "Sandbox settings validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/payment-methods GET POST PATCH DELETE Vendor token required

Vendor payment methods

List/configure DataBoom AutoStatement, private AutoStatement and PocketFi; search vendor users, manage private accounts, notifications, imports, matching and linked virtual accounts.
Endpoint URL
https://databoomnigeria.ng/api/vendor/payment-methods
Base: https://databoomnigeria.ng/api + Path: /vendor/payment-methods
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
q / user_q string GET-only vendor-user search used when assigning deposits or creating linked accounts
action string save_method, save_methods, save_order, save_pocketfi_settings, test_pocketfi_connection, save_notifications, save_private_bank, toggle_private_bank, test_private_bank, delete_private_bank, import_private_deposits, private_process, assign_private_deposit, cancel_private_request or create_pocketfi_account
method_key string databoom_autostatement, private_autostatement or pocketfi
settings object Method settings; submitted masked secrets preserve their existing values
user_id int Needed for PocketFi account creation or deposit assignment

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save_method",
    "method_key": "private_autostatement",
    "enabled": true,
    "settings": {
        "request_expiry_minutes": 30,
        "exact_amount_margin": 50
    }
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/payment-methods" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-payment-methods-10001" \
  -d '{"action":"save_method","method_key":"private_autostatement","enabled":true,"settings":{"request_expiry_minutes":30,"exact_amount_margin":50}}'
$url = "https://databoomnigeria.ng/api/vendor/payment-methods";
$payload = array (
  'action' => 'save_method',
  'method_key' => 'private_autostatement',
  'enabled' => true,
  'settings' => 
  array (
    'request_expiry_minutes' => 30,
    'exact_amount_margin' => 50,
  ),
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-payment-methods-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/payment-methods";
const payload = {
    "action": "save_method",
    "method_key": "private_autostatement",
    "enabled": true,
    "settings": {
        "request_expiry_minutes": 30,
        "exact_amount_margin": 50
    }
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-payment-methods-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/payment-methods"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-payment-methods-10001"}')
payload = json.loads('{"action":"save_method","method_key":"private_autostatement","enabled":true,"settings":{"request_expiry_minutes":30,"exact_amount_margin":50}}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "methods": [
            {
                "key": "databoom_autostatement",
                "name": "DataBoom AutoStatement",
                "enabled": true,
                "priority": 1
            },
            {
                "key": "private_autostatement",
                "name": "Private AutoStatement",
                "enabled": true,
                "priority": 2
            },
            {
                "key": "pocketfi",
                "name": "PocketFi",
                "enabled": true,
                "priority": 3
            }
        ],
        "private_banks": [
            {
                "id": 10,
                "bank_name": "Providus Bank",
                "account_number": "9999999999",
                "account_name": "SANDBOX COLLECTIONS",
                "enabled": true
            }
        ],
        "pocketfi": {
            "configured": true,
            "business_id": "SBX-BUSINESS",
            "api_token": "25459|********",
            "secret_key": "********"
        },
        "notification_settings": {
            "email": true,
            "telegram": true,
            "web_push": true
        },
        "users": [
            {
                "id": 9001,
                "vendor_sId": 1001,
                "first_name": "Sandbox",
                "last_name": "Customer",
                "name": "Sandbox Customer",
                "email": "customer@example.test",
                "phone": "2348012345678",
                "status": "active",
                "wallet": "12500.00",
                "referral_wallet": "450.00",
                "created_at": "2026-07-11 10:00:00"
            }
        ],
        "action_result": {
            "ok": true,
            "message": "Sandbox payment-method action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/payment-requests GET POST Vendor token required

Vendor payment requests

List private payment requests or create exact-amount DataBoom AutoStatement, private AutoStatement or PocketFi instructions for a vendor user.
Endpoint URL
https://databoomnigeria.ng/api/vendor/payment-requests
Base: https://databoomnigeria.ng/api + Path: /vendor/payment-requests
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
user_id int Vendor-owned user ID
amount number Requested amount
method_key string databoom_autostatement, private_autostatement or pocketfi

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "user_id": 9001,
    "amount": 5000,
    "method_key": "private_autostatement"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/payment-requests" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-payment-requests-10001" \
  -d '{"user_id":9001,"amount":5000,"method_key":"private_autostatement"}'
$url = "https://databoomnigeria.ng/api/vendor/payment-requests";
$payload = array (
  'user_id' => 9001,
  'amount' => 5000,
  'method_key' => 'private_autostatement',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-payment-requests-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/payment-requests";
const payload = {
    "user_id": 9001,
    "amount": 5000,
    "method_key": "private_autostatement"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-payment-requests-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/payment-requests"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-payment-requests-10001"}')
payload = json.loads('{"user_id":9001,"amount":5000,"method_key":"private_autostatement"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "request": {
            "id": 501,
            "reference": "SBX-787AE517FE74BB",
            "user": {
                "id": 9001,
                "vendor_sId": 1001,
                "first_name": "Sandbox",
                "last_name": "Customer",
                "name": "Sandbox Customer",
                "email": "customer@example.test",
                "phone": "2348012345678",
                "status": "active",
                "wallet": "12500.00",
                "referral_wallet": "450.00",
                "created_at": "2026-07-11 10:00:00"
            },
            "method_key": "private_autostatement",
            "requested_amount": "5000.00",
            "exact_amount": "5017.43",
            "bank": {
                "name": "Providus Bank",
                "account_number": "9999999999",
                "account_name": "SANDBOX COLLECTIONS"
            },
            "status": "pending",
            "expires_at": "2026-07-28 06:13:17"
        },
        "instructions": "Transfer the exact amount before the expiry time."
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/payments GET Vendor token required

Vendor payments received

Query private bank deposits, normalized payment events and wallet transactions with detailed user and status filters.
Endpoint URL
https://databoomnigeria.ng/api/vendor/payments
Base: https://databoomnigeria.ng/api + Path: /vendor/payments
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
source string all, private, events, wallet or databoom
user_id int Optional vendor-owned user filter
q / status / method_key string Detailed payment filters
date_from / date_to date Inclusive YYYY-MM-DD range

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "source": "all",
        "status": "credited",
        "date_from": "2026-07-01",
        "date_to": "2026-07-11",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/payments?source=all&status=credited&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/payments?source=all&status=credited&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/payments?source=all&status=credited&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/payments?source=all&status=credited&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "summary": {
            "total_received": "125000.00",
            "matched": "118000.00",
            "unmatched": "7000.00"
        },
        "payments": [
            {
                "id": 601,
                "source": "private_autostatement",
                "reference": "SBX-PAY-001",
                "vendor_user": {
                    "id": 9001,
                    "vendor_sId": 1001,
                    "first_name": "Sandbox",
                    "last_name": "Customer",
                    "name": "Sandbox Customer",
                    "email": "customer@example.test",
                    "phone": "2348012345678",
                    "status": "active",
                    "wallet": "12500.00",
                    "referral_wallet": "450.00",
                    "created_at": "2026-07-11 10:00:00"
                },
                "bank_name": "Providus Bank",
                "sender_name": "SANDBOX CUSTOMER",
                "amount": "5017.43",
                "expected_amount": "5017.43",
                "status": "credited",
                "received_at": "2026-07-11 09:30:00",
                "credited_transaction_reference": "SBX-CREDIT-001"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/linked-accounts GET POST Vendor token required

Vendor user linked accounts

Return a vendor user’s linked private payer names, PocketFi virtual accounts and DataBoom AutoStatement accounts.
Endpoint URL
https://databoomnigeria.ng/api/vendor/linked-accounts
Base: https://databoomnigeria.ng/api + Path: /vendor/linked-accounts
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
user_id int Vendor-owned user ID

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "user_id": 9001
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/linked-accounts" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-linked-accounts-10001" \
  -d '{"user_id":9001}'
$url = "https://databoomnigeria.ng/api/vendor/linked-accounts";
$payload = array (
  'user_id' => 9001,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-linked-accounts-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/linked-accounts";
const payload = {
    "user_id": 9001
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-linked-accounts-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/linked-accounts"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-linked-accounts-10001"}')
payload = json.loads('{"user_id":9001}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "user": {
            "id": 9001,
            "vendor_sId": 1001,
            "first_name": "Sandbox",
            "last_name": "Customer",
            "name": "Sandbox Customer",
            "email": "customer@example.test",
            "phone": "2348012345678",
            "status": "active",
            "wallet": "12500.00",
            "referral_wallet": "450.00",
            "created_at": "2026-07-11 10:00:00"
        },
        "private_payer_names": [
            {
                "id": 71,
                "payer_name": "SANDBOX CUSTOMER",
                "bank_name": "Access Bank",
                "status": "verified"
            }
        ],
        "pocketfi_accounts": [
            {
                "id": 72,
                "bank_name": "Wema Bank",
                "account_number": "1234567890",
                "account_name": "SANDBOX CUSTOMER",
                "status": "active"
            }
        ],
        "databoom_accounts": [
            {
                "bank_name": "Moniepoint",
                "account_number": "8888888888",
                "account_name": "DATABOOM / SANDBOX CUSTOMER",
                "status": "active"
            }
        ]
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/users GET POST PATCH DELETE Vendor token required

Vendor users

List, inspect, create, update, block, securely adjust wallets or delete vendor users without transaction history.
Endpoint URL
https://databoomnigeria.ng/api/vendor/users
Base: https://databoomnigeria.ng/api + Path: /vendor/users
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string create_user, update_user, set_status, update_wallet, update_refwallet, send, pause, resume, meta or delete
user_id int Required except when creating; conversation controls may also use sender
password / pin string Required for wallet and delete actions
amount / wallet mixed Wallet adjustment amount and main/referral wallet selection

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "create_user",
    "first_name": "Sandbox",
    "last_name": "Customer",
    "email": "customer@example.com",
    "phone": "08012345678",
    "password": "StrongPassword123!",
    "pin": "1234",
    "wallet": 0
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/users" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-users-10001" \
  -d '{"action":"create_user","first_name":"Sandbox","last_name":"Customer","email":"customer@example.com","phone":"08012345678","password":"StrongPassword123!","pin":"1234","wallet":0}'
$url = "https://databoomnigeria.ng/api/vendor/users";
$payload = array (
  'action' => 'create_user',
  'first_name' => 'Sandbox',
  'last_name' => 'Customer',
  'email' => 'customer@example.com',
  'phone' => '08012345678',
  'password' => 'StrongPassword123!',
  'pin' => '1234',
  'wallet' => 0,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-users-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/users";
const payload = {
    "action": "create_user",
    "first_name": "Sandbox",
    "last_name": "Customer",
    "email": "customer@example.com",
    "phone": "08012345678",
    "password": "StrongPassword123!",
    "pin": "1234",
    "wallet": 0
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-users-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/users"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-users-10001"}')
payload = json.loads('{"action":"create_user","first_name":"Sandbox","last_name":"Customer","email":"customer@example.com","phone":"08012345678","password":"StrongPassword123!","pin":"1234","wallet":0}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "users": [
            {
                "id": 9001,
                "vendor_sId": 1001,
                "first_name": "Sandbox",
                "last_name": "Customer",
                "name": "Sandbox Customer",
                "email": "customer@example.test",
                "phone": "2348012345678",
                "status": "active",
                "wallet": "12500.00",
                "referral_wallet": "450.00",
                "created_at": "2026-07-11 10:00:00"
            }
        ],
        "user": {
            "id": 9001,
            "vendor_sId": 1001,
            "first_name": "Sandbox",
            "last_name": "Customer",
            "name": "Sandbox Customer",
            "email": "customer@example.test",
            "phone": "2348012345678",
            "status": "active",
            "wallet": "12500.00",
            "referral_wallet": "450.00",
            "created_at": "2026-07-11 10:00:00"
        },
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "action_result": {
            "ok": true,
            "message": "Sandbox vendor-user action simulated.",
            "user": {
                "id": 9001,
                "vendor_sId": 1001,
                "first_name": "Sandbox",
                "last_name": "Customer",
                "name": "Sandbox Customer",
                "email": "customer@example.test",
                "phone": "2348012345678",
                "status": "active",
                "wallet": "12500.00",
                "referral_wallet": "450.00",
                "created_at": "2026-07-11 10:00:00"
            }
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/users/list GET Vendor token required

List vendor users

Return every user owned by the authenticated vendor by default, with optional search, filters, balances and activity metrics.
Endpoint URL
https://databoomnigeria.ng/api/vendor/users/list
Base: https://databoomnigeria.ng/api + Path: /vendor/users/list
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search by user ID, name, username, email or phone. Quick tokens such as id:123, ref:123 and email:name@example.com are supported, and Nigerian local and international phone formats are matched.
status int|string Optional: 0/active, 1/blocked or 3/verification_required. Omit it or use all/any for no status filter.
type int|string Optional: 1/user/customer, 2/agent or 3/vendor. Omit it or use all/any for no type filter.
country / state / city string Optional exact location filters
has_balance boolean|string Applied only when explicitly supplied. Use true/positive for users with a balance, false/zero for zero balance, or all/any for no balance filter.
min_wallet / max_wallet number Optional main-wallet range. The panel aliases minw and maxw are also accepted.
min_referral_wallet / max_referral_wallet number Optional referral-wallet range. The panel aliases minrw and maxrw are also accepted.
referrer_user_id int Return users referred by this vendor-owned user. The panel alias ref is also accepted.
only_with_transactions boolean When true, return only users who already have vendor transaction history. The panel alias only_tx is also accepted.
registered_from / registered_to date Inclusive registration-date range in YYYY-MM-DD format. The panel aliases reg_from and reg_to are also accepted.
last_activity_from / last_activity_to date Inclusive last-activity range in YYYY-MM-DD format. The panel aliases act_from and act_to are also accepted.
sort_by string id, name, email, phone, type, status, wallet, referral_wallet, registered_at, last_activity_at, tx or spent. The sort/dir and panel aliases sId, refwallet, reg and last are also accepted.
sort_dir string ASC or DESC
page / per_page int Pagination values; per_page supports 1 to 200

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/users/list?page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/users/list?page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/users/list?page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/users/list?page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "vendor_id": 1001,
        "users": [
            {
                "id": 9001,
                "vendor_sId": 1001,
                "first_name": "Sandbox",
                "last_name": "Customer",
                "name": "Sandbox Customer",
                "email": "customer@example.test",
                "phone": "2348012345678",
                "status": {
                    "code": 0,
                    "key": "active",
                    "label": "Active"
                },
                "wallet": "12500.00",
                "referral_wallet": "450.00",
                "created_at": "2026-07-11 10:00:00",
                "account_type": {
                    "code": 1,
                    "key": "user",
                    "label": "User"
                },
                "total_balance": "12950.00",
                "transaction_count": 24,
                "successful_transaction_count": 22,
                "transaction_volume": "18450.00",
                "payment_count": 3,
                "payments_received": "15000.00",
                "last_transaction_at": "2026-07-11 09:45:00",
                "last_payment_at": "2026-07-11 09:30:00"
            }
        ],
        "summary": {
            "vendor_total": 1,
            "filtered_total": 1,
            "active": 1,
            "blocked": 0,
            "verification_required": 0,
            "wallet_total": "12500.00",
            "referral_wallet_total": "450.00",
            "combined_user_balance": "12950.00"
        },
        "filters": {
            "q": "",
            "status": null,
            "type": null,
            "has_balance": null,
            "min_wallet": null,
            "max_wallet": null,
            "min_referral_wallet": null,
            "max_referral_wallet": null,
            "referrer_user_id": null,
            "only_with_transactions": false,
            "sort_by": "id",
            "sort_dir": "DESC"
        },
        "notice": "",
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/users/view GET Vendor token required

View vendor user

View one vendor-owned user by ID, email, phone, username or identifier, including balances, security state, transactions, payments, referrals and linked payment accounts.
Endpoint URL
https://databoomnigeria.ng/api/vendor/users/view
Base: https://databoomnigeria.ng/api + Path: /vendor/users/view
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
user_id int|string Vendor-owned user ID. The special value latest returns the vendor’s newest user for safe testing.
email / phone / username / identifier string Alternative vendor-scoped user lookup fields when user_id is not supplied
recent_limit int Number of recent transactions, payments and referrals to return; 1 to 100

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "user_id": "latest",
        "recent_limit": 20
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/users/view?user_id=latest&recent_limit=20" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/users/view?user_id=latest&recent_limit=20";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/users/view?user_id=latest&recent_limit=20";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/users/view?user_id=latest&recent_limit=20"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "vendor_id": 1001,
        "user": {
            "id": 9001,
            "vendor_sId": 1001,
            "first_name": "Sandbox",
            "last_name": "Customer",
            "name": "Sandbox Customer",
            "email": "customer@example.test",
            "phone": "2348012345678",
            "status": {
                "code": 0,
                "key": "active",
                "label": "Active"
            },
            "wallet": "12500.00",
            "referral_wallet": "450.00",
            "created_at": "2026-07-11 10:00:00",
            "account_type": {
                "code": 1,
                "key": "user",
                "label": "User"
            },
            "total_balance": "12950.00"
        },
        "all_safe_fields": {
            "sId": 9001,
            "vendor_sId": 1001,
            "sApiKey": "1234************************7890",
            "sFname": "Sandbox",
            "sLname": "Customer",
            "sUsername": "sandbox.customer",
            "sEmail": "customer@example.test",
            "sPhone": "2348012345678",
            "sCountry": "Nigeria",
            "sState": "Anambra",
            "sCity": "Awka",
            "sAddress": "1 Sandbox Avenue",
            "sType": 1,
            "sWallet": "12500.00",
            "sRefWallet": "450.00",
            "sRegStatus": 0,
            "sRegDate": "2026-07-01 10:00:00",
            "sLastActivity": "2026-07-11 09:45:00",
            "sReferal": ""
        },
        "security": {
            "api_key_masked": "1234************************7890",
            "sandbox_api_key_masked": "sbx_************************7890",
            "pin_configured": true,
            "password_configured": true,
            "force_password_change": false,
            "pin_status": 1
        },
        "balances": {
            "main": "12500.00",
            "referral": "450.00",
            "total": "12950.00"
        },
        "transactions": {
            "summary": {
                "total": 24,
                "successful": 22,
                "pending": 0,
                "processing": 1,
                "failed": 1,
                "reversed": 0,
                "successful_volume": "18450.00",
                "profit": "680.00",
                "last_transaction_at": "2026-07-11 09:45:00"
            },
            "recent": [
                {
                    "id": 7001,
                    "reference": "SBX-TXN-001",
                    "transref": "SBX-TXN-001",
                    "servicename": "Data",
                    "servicedesc": "1GB MTN SME to 08012345678",
                    "amount": "320.00",
                    "status": 0,
                    "oldbal": "12820.00",
                    "newbal": "12500.00",
                    "profit": "20.00",
                    "date": "2026-07-11 09:45:00",
                    "autostatement_transid": "",
                    "status_meta": {
                        "code": 0,
                        "key": "successful",
                        "label": "Successful"
                    }
                }
            ]
        },
        "payments": {
            "summary": {
                "count": 3,
                "amount": "15000.00",
                "last_payment_at": "2026-07-11 09:30:00"
            },
            "recent": [
                {
                    "id": 601,
                    "method_key": "private_autostatement",
                    "reference": "SBX-PAY-001",
                    "amount": "5017.43",
                    "bank_name": "Providus Bank",
                    "account_number": "9999999999",
                    "vendor_alert_status": "sent",
                    "created_at": "2026-07-11 09:30:00"
                }
            ]
        },
        "referrals": {
            "referrer": null,
            "count": 1,
            "recent": [
                {
                    "id": 9002,
                    "name": "Sandbox Referral",
                    "email": "referral@example.test",
                    "phone": "2348099999999",
                    "wallet": "2500.00",
                    "referral_wallet": "0.00",
                    "status": {
                        "code": 0,
                        "key": "active",
                        "label": "Active"
                    }
                }
            ]
        },
        "linked_accounts": {
            "user": {
                "id": 9001,
                "name": "Sandbox Customer",
                "email": "customer@example.test",
                "phone": "2348012345678"
            },
            "private_autostatement": [
                {
                    "id": 71,
                    "sender_name": "SANDBOX CUSTOMER",
                    "bank_name": "Access Bank",
                    "account_number": "0123456789",
                    "account_name": "SANDBOX COLLECTIONS"
                }
            ],
            "pocketfi": [
                {
                    "id": 72,
                    "bank_name": "Wema Bank",
                    "account_number": "1234567890",
                    "account_name": "SANDBOX CUSTOMER",
                    "status": "active"
                }
            ],
            "databoom_autostatement": {
                "linked_names": [
                    "SANDBOX CUSTOMER"
                ],
                "accounts": [
                    {
                        "bank_name": "Moniepoint",
                        "account_number": "8888888888",
                        "account_name": "DATABOOM / SANDBOX CUSTOMER"
                    }
                ],
                "message": "Sandbox linked accounts returned."
            }
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/users/manage POST PUT PATCH DELETE Vendor token required

Manage vendor user

Create or securely manage one vendor-owned user through profile, status, wallet, password, PIN, messaging and deletion actions.
Endpoint URL
https://databoomnigeria.ng/api/vendor/users/manage
Base: https://databoomnigeria.ng/api + Path: /vendor/users/manage
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string capabilities, create_user, update_user, set_status, block, activate, require_verification, update_wallet, update_refwallet, set_password, set_pin, send, pause, resume, meta or delete
user_id / email / phone / username / identifier mixed Use any one of these fields to identify a vendor-owned user; create_user and capabilities do not require a user identifier
first_name / last_name / email / phone string User identity fields used by create_user and update_user
username / country / state / city / address string Optional profile fields
type int|string 1/user/customer, 2/agent or 3/vendor
status int|string 0/active, 1/blocked or 3/verification_required
vendor_password / vendor_pin string Required only for wallet adjustments and deletion; password and pin remain accepted as compatibility aliases
new_password / force_password_change mixed Used by set_password or update_user when changing the user password
new_pin string Exactly four digits for set_pin or update_user
amount / wallet mixed Wallet adjustment amount and main/referral wallet selection
reason string Optional transaction description for a main-wallet adjustment
X-Idempotency-Key header Recommended for every management mutation

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "capabilities"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/users/manage" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-users-manage-10001" \
  -d '{"action":"capabilities"}'
$url = "https://databoomnigeria.ng/api/vendor/users/manage";
$payload = array (
  'action' => 'capabilities',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-users-manage-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/users/manage";
const payload = {
    "action": "capabilities"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-users-manage-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/users/manage"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-users-manage-10001"}')
payload = json.loads('{"action":"capabilities"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "managed_action": "capabilities",
        "result": {
            "supported_actions": [
                "create_user",
                "update_user",
                "set_status",
                "block",
                "activate",
                "require_verification",
                "update_wallet",
                "update_refwallet",
                "set_password",
                "set_pin",
                "send",
                "pause",
                "resume",
                "meta",
                "delete"
            ],
            "user_lookup_fields": [
                "user_id",
                "email",
                "phone",
                "username",
                "identifier"
            ],
            "security_required_for": [
                "update_wallet",
                "update_refwallet",
                "delete"
            ],
            "wallets": [
                "main",
                "referral"
            ],
            "statuses": [
                {
                    "code": 0,
                    "key": "active",
                    "label": "Active"
                },
                {
                    "code": 1,
                    "key": "blocked",
                    "label": "Blocked"
                },
                {
                    "code": 3,
                    "key": "verification_required",
                    "label": "Email verification required"
                }
            ],
            "account_types": [
                {
                    "code": 1,
                    "key": "user",
                    "label": "User"
                },
                {
                    "code": 2,
                    "key": "agent",
                    "label": "Agent"
                },
                {
                    "code": 3,
                    "key": "vendor",
                    "label": "Vendor"
                }
            ]
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/airtime GET Vendor token required

Vendor airtime catalogue

Read the vendor’s complete airtime catalogue with network, package type, subscriber, agent and vendor charge percentages, margins and optional amount quotations.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/airtime
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/airtime
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search network name, package type, catalogue ID or system ID.
network_id / network int|string Filter by network ID, external network ID or network name.
type / airtime_type string Filter by package type such as VTU or Share And Sell.
amount number Optional face value used to calculate exact subscriber, agent, vendor and buying quotations.
min_buy / max_buy number Filter the vendor buying charge percentage.
min_subscriber / max_subscriber number Filter the subscriber charge percentage.
min_agent / max_agent number Filter the agent charge percentage.
min_vendor / max_vendor number Filter the vendor-level user charge percentage.
status boolean|string Filter by effective availability after both vendor and central network/service switches are applied.
price_for string subscriber, agent or vendor; adds selected_price to every row.
group_by string network or type.
sort_by / sort_dir string Sort by network, type, buy, subscriber, agent, vendor or margin in ASC/DESC order.
page / per_page / all mixed Pagination. all=true returns up to 5,000 matching rows.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "network": "MTN",
        "amount": 1000,
        "group_by": "network",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/airtime?network=MTN&amount=1000&group_by=network&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/airtime?network=MTN&amount=1000&group_by=network&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/airtime?network=MTN&amount=1000&group_by=network&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/airtime?network=MTN&amount=1000&group_by=network&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "catalog": "airtime",
        "read_only": true,
        "currency": "NGN",
        "items": [
            {
                "id": 1,
                "system_id": 1,
                "network": {
                    "id": 1,
                    "vendor_network_row_id": 1,
                    "external_id": "1",
                    "name": "MTN",
                    "logo": "/assets/logo/mtn.png",
                    "vendor_active": true,
                    "system_active": true,
                    "active": true
                },
                "package": {
                    "type": "VTU",
                    "vendor_service_active": true,
                    "system_service_active": true,
                    "active": true
                },
                "pricing": {
                    "currency": "NGN",
                    "model": "percentage_of_face_value",
                    "vendor_cost_percent": 98,
                    "subscriber_charge_percent": 99,
                    "agent_charge_percent": 98.8,
                    "vendor_charge_percent": 98.5,
                    "subscriber_discount_percent": 1,
                    "agent_discount_percent": 1.2,
                    "vendor_discount_percent": 1.5,
                    "subscriber_margin_percent": 1,
                    "agent_margin_percent": 0.8,
                    "vendor_margin_percent": 0.5
                },
                "selected_price": {
                    "role": "subscriber",
                    "charge_percent": 99,
                    "discount_percent": 1
                },
                "quote": {
                    "face_value": 1000,
                    "vendor_cost": 980,
                    "subscriber_price": 990,
                    "agent_price": 988,
                    "vendor_price": 985
                }
            }
        ],
        "groups": [],
        "facets": {
            "networks": [
                {
                    "id": 1,
                    "name": "MTN",
                    "active": true,
                    "count": 1
                }
            ],
            "types": [
                {
                    "name": "VTU",
                    "count": 1
                }
            ]
        },
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "filters_applied": {
            "network": "MTN",
            "amount": 1000
        },
        "all_results": false
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/data-plans GET Vendor token required

Vendor data-plan catalogue

Read all vendor data plans with network metadata, package details, subscriber, agent and vendor prices, margins, status, grouping and advanced filters.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/data-plans
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/data-plans
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search plan name, provider plan ID, type, network, catalogue ID or system ID.
network_id / network / datanetwork int|string Filter by network. Use all_for_network=true to return every matching plan for one network in one response.
all_for_network boolean Return all plans associated with the selected network, up to 5,000 rows.
status boolean|string Filter the vendor plan row: active/on/1, inactive/off/0 or all.
effective_status boolean|string Filter effective purchase availability after vendor plan, central plan, network and service switches are combined.
type / category / variant_group string Filter plan type, plan category or smart-variant group.
plan_id / system_id / provider_plan_id int|string Filter by vendor catalogue ID, DataBoom system ID or provider plan ID.
pId / planId int Vendor-panel aliases that filter by the DataBoom system plan ID.
name / datavalue string|int Filter by plan-name text or exact plan size in megabytes.
min_bytes / max_bytes int Filter plan size in megabytes.
min_days / max_days int Filter validity in days.
min_cost / max_cost number Filter vendor buying price.
min_subscriber / max_subscriber number Filter subscriber price.
min_agent / max_agent number Filter agent price.
min_vendor / max_vendor number Filter vendor-level user price.
variant_eligible boolean Filter plans eligible for smart variants.
autoUpdateOverride / userAutoPct / agentAutoPct / vendorAutoPct mixed Filter the per-plan automatic-pricing override and exact role percentage overrides used by the vendor panel.
created_from / created_to / updated_from / updated_to date Inclusive YYYY-MM-DD creation or last-update date ranges.
price_for string subscriber, agent or vendor; adds selected_price to every row.
group_by string network, type, category or variant_group.
sort_by / sort_dir string Sort by network, name, bytes, validity, cost, subscriber, agent, vendor, type, category, created or updated.
page / per_page / all mixed Pagination. all=true returns up to 5,000 matching rows.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "network": "MTN",
        "all_for_network": true,
        "status": "active",
        "price_for": "agent",
        "group_by": "type"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/data-plans?network=MTN&all_for_network=1&status=active&price_for=agent&group_by=type" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/data-plans?network=MTN&all_for_network=1&status=active&price_for=agent&group_by=type";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/data-plans?network=MTN&all_for_network=1&status=active&price_for=agent&group_by=type";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/data-plans?network=MTN&all_for_network=1&status=active&price_for=agent&group_by=type"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "catalog": "data_plans",
        "read_only": true,
        "currency": "NGN",
        "items": [
            {
                "id": 101,
                "system_id": 241,
                "provider_plan_id": "297",
                "name": "1 GB SME",
                "network": {
                    "id": 1,
                    "vendor_network_row_id": 1,
                    "external_id": "1",
                    "name": "MTN",
                    "logo": "/assets/logo/mtn.png",
                    "vendor_active": true,
                    "system_active": true,
                    "active": true
                },
                "package": {
                    "bytes": 1000,
                    "size_mb": 1000,
                    "size_gb": 1,
                    "validity_days": 30,
                    "type": "SME",
                    "category": "normal",
                    "variant_group": "normal",
                    "variant_eligible": true,
                    "variant_note": null,
                    "vendor_service_active": true,
                    "system_service_active": true,
                    "vendor_plan_active": true,
                    "system_plan_active": true,
                    "active": true
                },
                "pricing": {
                    "currency": "NGN",
                    "vendor_cost": 285,
                    "subscriber": 320,
                    "agent": 310,
                    "vendor": 300,
                    "subscriber_margin": 35,
                    "agent_margin": 25,
                    "vendor_margin": 15
                },
                "selected_price": {
                    "role": "agent",
                    "amount": 310,
                    "currency": "NGN"
                },
                "auto_update": {
                    "override": false,
                    "subscriber_profit_percent": 0,
                    "agent_profit_percent": 0,
                    "vendor_profit_percent": 0
                },
                "created_at": "2026-07-01 10:00:00",
                "updated_at": "2026-07-11 10:00:00"
            }
        ],
        "groups": [
            {
                "key": "SME",
                "count": 1,
                "items": []
            }
        ],
        "facets": {
            "networks": [
                {
                    "id": 1,
                    "name": "MTN",
                    "active": true,
                    "count": 1
                }
            ],
            "types": [
                {
                    "name": "SME",
                    "count": 1
                }
            ],
            "categories": [
                {
                    "name": "normal",
                    "count": 1
                }
            ]
        },
        "pagination": {
            "page": 1,
            "per_page": 5000,
            "total": 1,
            "pages": 1
        },
        "filters_applied": {
            "network": "MTN",
            "status": true,
            "price_for": "agent"
        },
        "all_results": true,
        "network_bulk_listing_supported": true
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/cable GET Vendor token required

Vendor cable-plan catalogue

Read all vendor cable packages with correctly resolved providers, subscriber, agent and vendor prices, API cost, margins and advanced filters.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/cable
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/cable
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search plan name, provider plan ID, provider name, catalogue ID or system ID.
provider_id / provider / cableprovider int|string Filter by provider row ID, system ID, provider code or provider name.
all_for_provider boolean Return all packages associated with the selected provider, up to 5,000 rows. A provider filter is required.
status boolean|string Filter by effective provider availability after vendor and central provider switches are combined.
plan_id / system_id / provider_plan_id int|string Filter by vendor package ID, DataBoom system package ID or provider plan ID.
min_days / max_days int Filter package validity.
min_cost / max_cost number Filter API buying price.
min_subscriber / max_subscriber number Filter subscriber price.
min_agent / max_agent number Filter agent price.
min_vendor / max_vendor number Filter vendor-level user price.
price_for string subscriber, agent or vendor; adds selected_price to every row.
group_by string provider.
sort_by / sort_dir string Sort by provider, name, validity, cost, subscriber, agent or vendor.
page / per_page / all mixed Pagination. all=true returns up to 5,000 matching rows.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "provider": "DSTV",
        "status": "active",
        "price_for": "subscriber",
        "group_by": "provider",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/cable?provider=DSTV&status=active&price_for=subscriber&group_by=provider&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/cable?provider=DSTV&status=active&price_for=subscriber&group_by=provider&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/cable?provider=DSTV&status=active&price_for=subscriber&group_by=provider&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/cable?provider=DSTV&status=active&price_for=subscriber&group_by=provider&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "catalog": "cable_plans",
        "read_only": true,
        "currency": "NGN",
        "items": [
            {
                "id": 11,
                "system_id": 6,
                "provider_plan_id": "33",
                "name": "DStv Padi",
                "type": null,
                "validity_days": 30,
                "provider": {
                    "id": 2,
                    "system_id": 2,
                    "provider_code": "2",
                    "name": "DSTV",
                    "logo": "/assets/logo/dstv.png",
                    "vendor_active": true,
                    "system_active": true,
                    "active": true
                },
                "pricing": {
                    "currency": "NGN",
                    "vendor_cost": 4400,
                    "subscriber": 4500,
                    "agent": 4475,
                    "vendor": 4450,
                    "subscriber_margin": 100,
                    "agent_margin": 75,
                    "vendor_margin": 50
                },
                "selected_price": {
                    "role": "subscriber",
                    "amount": 4500,
                    "currency": "NGN"
                }
            }
        ],
        "groups": [],
        "facets": {
            "providers": [
                {
                    "id": 2,
                    "system_id": 2,
                    "provider_code": "2",
                    "name": "DSTV",
                    "active": true,
                    "count": 1
                }
            ]
        },
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "filters_applied": {
            "provider": "DSTV",
            "status": true,
            "price_for": "subscriber"
        },
        "all_results": false,
        "provider_bulk_listing_supported": true
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/electricity GET Vendor token required

Vendor electricity catalogue

Read the vendor’s electricity providers, availability, amount-based pricing formula and optional quotations for subscribers, agents and vendor-level users.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/electricity
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/electricity
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search provider name, abbreviation, provider code, catalogue ID or system ID.
provider_id / provider int|string Filter by provider row ID, system ID, provider code, name or abbreviation.
status boolean|string Filter by provider availability.
amount number Optional electricity face value used to calculate subscriber, agent and vendor quotations.
min_discount / max_discount number Filter the vendor discount percentage.
min_profit / max_profit number Filter the configured profit percentage.
sort_by / sort_dir string Sort by provider, abbreviation, status, discount or profit.
page / per_page / all mixed Pagination.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "status": "active",
        "amount": 5000,
        "sort_by": "provider",
        "sort_dir": "asc"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/electricity?status=active&amount=5000&sort_by=provider&sort_dir=asc" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/electricity?status=active&amount=5000&sort_by=provider&sort_dir=asc";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/electricity?status=active&amount=5000&sort_by=provider&sort_dir=asc";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/electricity?status=active&amount=5000&sort_by=provider&sort_dir=asc"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "catalog": "electricity_providers",
        "read_only": true,
        "currency": "NGN",
        "items": [
            {
                "id": 9,
                "system_id": 9,
                "provider_code": "26",
                "name": "Enugu Electric",
                "abbreviation": "ENUGU",
                "logo": "/assets/logo/enuguelectric.png",
                "vendor_active": true,
                "system_active": true,
                "active": true,
                "pricing": {
                    "currency": "NGN",
                    "model": "variable_amount",
                    "service_charge": 100,
                    "discount_percent": 0,
                    "profit_percent": 0.5,
                    "subscriber_formula": "amount + service_charge - (amount \u00d7 discount_percent \u00f7 100)",
                    "agent_formula": "same_as_subscriber",
                    "vendor_formula": "same_as_subscriber",
                    "roles_share_same_price": true
                },
                "quote": {
                    "face_value": 5000,
                    "service_charge": 100,
                    "discount_amount": 0,
                    "subscriber_price": 5100,
                    "agent_price": 5100,
                    "vendor_price": 5100,
                    "system_cost": 5025,
                    "vendor_gross_margin": 75,
                    "legacy_profit_formula_result": 125
                }
            }
        ],
        "groups": [],
        "pricing_note": "Electricity uses an amount-based formula. The current vendor panel applies the same payable amount to all three roles.",
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "filters_applied": {
            "status": true,
            "amount": 5000
        },
        "all_results": false
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/exams GET Vendor token required

Vendor exam catalogue

Read the vendor’s exam providers with buying price, subscriber, agent and vendor selling prices, margins, availability and advanced filters.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/exams
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/exams
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search provider name, provider code, catalogue ID or system ID.
provider_id / provider int|string Filter by provider row ID, system ID, provider code or provider name.
status boolean|string Filter by provider availability.
min_buying_price / max_buying_price number Filter buying price.
min_price / max_price number Filter subscriber, agent and vendor selling price.
sort_by / sort_dir string Sort by provider, status, buying_price, price, margin or markup.
page / per_page / all mixed Pagination.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "status": "active",
        "sort_by": "price",
        "sort_dir": "asc",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/exams?status=active&sort_by=price&sort_dir=asc&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/exams?status=active&sort_by=price&sort_dir=asc&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/exams?status=active&sort_by=price&sort_dir=asc&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/exams?status=active&sort_by=price&sort_dir=asc&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "catalog": "exam_pins",
        "read_only": true,
        "currency": "NGN",
        "items": [
            {
                "id": 1,
                "system_id": 1,
                "provider_code": "1",
                "name": "WAEC",
                "logo": "/assets/logo/waec.png",
                "vendor_active": true,
                "system_active": true,
                "active": true,
                "pricing": {
                    "currency": "NGN",
                    "panel_buying_price": 5100,
                    "system_cost": 5500,
                    "subscriber": 5600,
                    "agent": 5600,
                    "vendor": 5600,
                    "roles_share_same_price": true,
                    "panel_margin": 500,
                    "effective_margin": 100,
                    "markup_percent": 9.8
                }
            }
        ],
        "groups": [],
        "pricing_note": "The current vendor panel stores one selling price per exam provider, so all three role prices are identical.",
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "filters_applied": {
            "status": true
        },
        "all_results": false
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/networks GET Vendor token required

Vendor network availability catalogue

Read vendor and central network/service availability switches, identifiers and airtime/data-plan counts for every network.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/networks
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/networks
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
q string Search network name, external network code, vendor network row ID or DataBoom system network ID.
network_id / network int|string Filter by vendor network row ID, DataBoom system network ID, external network code or network name.
status boolean|string Filter effective whole-network availability after vendor and central network switches are combined.
service string network, vtu, share_and_sell, airtime_pin, sme, gifting, corporate or data_pin.
service_status boolean|string Filter effective availability of the selected service after vendor and central switches are combined.
min_airtime_packages / max_airtime_packages int Filter the number of vendor airtime packages associated with a network.
min_data_plans / max_data_plans int Filter the total number of vendor data plans associated with a network.
min_active_data_plans / max_active_data_plans int Filter data plans that are enabled both on the vendor row and central DataBoom plan.
sort_by / sort_dir string Sort by network, status, airtime_packages, data_plans or active_data_plans in ASC/DESC order.
page / per_page / all mixed Pagination. all=true returns every matching network up to the endpoint limit.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "service": "sme",
        "service_status": "active",
        "sort_by": "network",
        "sort_dir": "asc",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/networks?service=sme&service_status=active&sort_by=network&sort_dir=asc&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/networks?service=sme&service_status=active&sort_by=network&sort_dir=asc&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/networks?service=sme&service_status=active&sort_by=network&sort_dir=asc&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/networks?service=sme&service_status=active&sort_by=network&sort_dir=asc&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "catalog": "networks_and_service_availability",
        "read_only": true,
        "items": [
            {
                "id": 1,
                "system_id": 1,
                "external_id": "1",
                "name": "MTN",
                "logo": "/assets/logo/mtn.png",
                "active": true,
                "services": {
                    "network": {
                        "vendor_active": true,
                        "system_active": true,
                        "active": true
                    },
                    "vtu": {
                        "vendor_active": true,
                        "system_active": true,
                        "active": true
                    },
                    "share_and_sell": {
                        "vendor_active": true,
                        "system_active": true,
                        "active": true
                    },
                    "airtime_pin": {
                        "vendor_active": false,
                        "system_active": true,
                        "active": false
                    },
                    "sme": {
                        "vendor_active": true,
                        "system_active": true,
                        "active": true
                    },
                    "gifting": {
                        "vendor_active": true,
                        "system_active": true,
                        "active": true
                    },
                    "corporate": {
                        "vendor_active": true,
                        "system_active": true,
                        "active": true
                    },
                    "data_pin": {
                        "vendor_active": false,
                        "system_active": false,
                        "active": false
                    }
                },
                "catalogue_counts": {
                    "airtime_packages": 2,
                    "data_plans": 210,
                    "active_data_plans": 205
                },
                "identifiers": {
                    "sme": "1",
                    "gifting": "1",
                    "corporate": "1",
                    "vtu": "1",
                    "share_and_sell": "1"
                }
            }
        ],
        "facets": {
            "service_totals": {
                "network": {
                    "total": 1,
                    "active": 1
                },
                "vtu": {
                    "total": 1,
                    "active": 1
                },
                "share_and_sell": {
                    "total": 1,
                    "active": 1
                },
                "airtime_pin": {
                    "total": 1,
                    "active": 0
                },
                "sme": {
                    "total": 1,
                    "active": 1
                },
                "gifting": {
                    "total": 1,
                    "active": 1
                },
                "corporate": {
                    "total": 1,
                    "active": 1
                },
                "data_pin": {
                    "total": 1,
                    "active": 0
                }
            }
        },
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "filters_applied": {
            "service": "sme",
            "service_status": true
        },
        "all_results": false
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/catalog/summary GET Vendor token required

Vendor catalogue summary

Return service counts, active counts, network data-plan totals, upgrade fees and direct links to every read-only vendor catalogue endpoint.
Endpoint URL
https://databoomnigeria.ng/api/vendor/catalog/summary
Base: https://databoomnigeria.ng/api + Path: /vendor/catalog/summary
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {}
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/catalog/summary" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/catalog/summary";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/catalog/summary";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/catalog/summary"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "read_only": true,
        "catalog_counts": {
            "airtime": {
                "total": 8,
                "effective_active": 8
            },
            "data_plans": {
                "total": 630,
                "vendor_enabled": 612,
                "effective_active": 598
            },
            "cable_plans": {
                "total": 15,
                "providers": 3,
                "vendor_enabled_providers": 3,
                "effective_active_providers": 3,
                "effective_active_plans": 15
            },
            "electricity": {
                "total": 11,
                "vendor_enabled": 11,
                "effective_active": 11
            },
            "exams": {
                "total": 4,
                "vendor_enabled": 4,
                "effective_active": 4
            },
            "networks": {
                "total": 4,
                "effective_active": 4
            }
        },
        "networks": [
            {
                "vendor_network_row_id": 1,
                "id": 1,
                "name": "MTN",
                "external_id": "1",
                "logo": "/assets/logo/mtn.png",
                "data_plan_count": 210,
                "enabled_data_plan_count": 205,
                "vendor_active": true,
                "system_active": true,
                "active": true
            }
        ],
        "upgrade_fees": {
            "agent": 100,
            "vendor": 200,
            "referral_bonus_percent": 100
        },
        "electricity_service_charge": 100,
        "endpoints": {
            "airtime": "/api/vendor/catalog/airtime",
            "data_plans": "/api/vendor/catalog/data-plans",
            "cable": "/api/vendor/catalog/cable",
            "electricity": "/api/vendor/catalog/electricity",
            "exams": "/api/vendor/catalog/exams",
            "networks": "/api/vendor/catalog/networks",
            "upgrade_plans": "/api/vendor/upgrade-plans"
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/upgrade-plans GET Vendor token required

Vendor upgrade plans

List the vendor’s Subscriber, Agent and Vendor plans, configured upgrade fees, referral upgrade bonus and an optional quote for one vendor-owned user.
Endpoint URL
https://databoomnigeria.ng/api/vendor/upgrade-plans
Base: https://databoomnigeria.ng/api + Path: /vendor/upgrade-plans
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
user_id / email / phone / username / identifier mixed Optional vendor-owned user lookup. When supplied, the response includes eligibility, wallet balance and upgrade shortfalls.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "user_id": "latest"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/upgrade-plans?user_id=latest" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/upgrade-plans?user_id=latest";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/upgrade-plans?user_id=latest";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/upgrade-plans?user_id=latest"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "currency": "NGN",
        "plans": [
            {
                "key": "subscriber",
                "type": 1,
                "name": "Subscriber",
                "fee": 0,
                "can_upgrade_to": false,
                "can_downgrade_to": true,
                "is_current": true,
                "direction": "current"
            },
            {
                "key": "agent",
                "type": 2,
                "name": "Agent",
                "fee": 100,
                "can_upgrade_to": true,
                "can_downgrade_to": true,
                "is_current": false,
                "direction": "upgrade"
            },
            {
                "key": "vendor",
                "type": 3,
                "name": "Vendor",
                "fee": 200,
                "can_upgrade_to": true,
                "can_downgrade_to": false,
                "is_current": false,
                "direction": "upgrade"
            }
        ],
        "referral_upgrade_bonus_percent": 100,
        "billing_modes": {
            "user_wallet": "Charges the vendor user wallet and requires the user transaction PIN.",
            "no_charge": "Vendor-authorized manual plan change requiring the vendor password and PIN; no automatic downgrade refund."
        },
        "user": {
            "id": 9001,
            "vendor_sId": 1001,
            "first_name": "Sandbox",
            "last_name": "Customer",
            "name": "Sandbox Customer",
            "email": "customer@example.test",
            "phone": "2348012345678",
            "status": "active",
            "wallet": "12500.00",
            "referral_wallet": "450.00",
            "created_at": "2026-07-11 10:00:00"
        },
        "quote": {
            "current_level": "Customer",
            "current_type": 1,
            "wallet": 12500,
            "referral_upgrade_bonus_percent": 100,
            "options": {
                "agent": {
                    "key": "agent",
                    "label": "Agent",
                    "target_type": 2,
                    "fee": 100,
                    "configured": true,
                    "eligible": true,
                    "balance_ok": true,
                    "shortfall": 0
                },
                "vendor": {
                    "key": "vendor",
                    "label": "Vendor",
                    "target_type": 3,
                    "fee": 200,
                    "configured": true,
                    "eligible": true,
                    "balance_ok": true,
                    "shortfall": 0
                }
            }
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/users/plan GET POST PATCH Vendor token required

Upgrade or downgrade vendor user

Quote, upgrade or downgrade a vendor-owned user. Wallet upgrades use the configured fee and user PIN; vendor-authorized manual changes require the vendor password and PIN.
Endpoint URL
https://databoomnigeria.ng/api/vendor/users/plan
Base: https://databoomnigeria.ng/api + Path: /vendor/users/plan
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
user_id / email / phone / username / identifier mixed Vendor-owned user lookup used by GET quote requests.
action string GET defaults to quote.

Request body (JSON)

FieldTypeDescription
action string quote, upgrade, downgrade or change
user_id / email / phone / username / identifier mixed Vendor-scoped user lookup; one lookup value is required.
target_plan / target_type string|int subscriber/1, agent/2 or vendor/3
billing_mode string user_wallet or no_charge. Wallet upgrades require user_pin. Manual changes and every downgrade require the vendor password and PIN.
user_pin string The vendor user’s four-digit transaction PIN for a wallet-funded upgrade.
vendor_password / vendor_pin string Required for no-charge upgrades and every downgrade.
reason string Optional audit explanation for a vendor-authorized plan change.

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "upgrade",
    "user_id": "latest",
    "target_plan": "agent",
    "billing_mode": "user_wallet",
    "user_pin": "1234"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/users/plan" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-user-plan-10001" \
  -d '{"action":"upgrade","user_id":"latest","target_plan":"agent","billing_mode":"user_wallet","user_pin":"1234"}'
$url = "https://databoomnigeria.ng/api/vendor/users/plan";
$payload = array (
  'action' => 'upgrade',
  'user_id' => 'latest',
  'target_plan' => 'agent',
  'billing_mode' => 'user_wallet',
  'user_pin' => '1234',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-user-plan-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/users/plan";
const payload = {
    "action": "upgrade",
    "user_id": "latest",
    "target_plan": "agent",
    "billing_mode": "user_wallet",
    "user_pin": "1234"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-user-plan-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/users/plan"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-user-plan-10001"}')
payload = json.loads('{"action":"upgrade","user_id":"latest","target_plan":"agent","billing_mode":"user_wallet","user_pin":"1234"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "action": "upgrade",
        "billing_mode": "user_wallet",
        "reference": "SBX-VPLAN-001",
        "amount_charged": 100,
        "automatic_refund": false,
        "previous_plan": {
            "type": 1,
            "name": "Customer"
        },
        "new_plan": {
            "type": 2,
            "name": "agent"
        },
        "user": {
            "id": 9001,
            "vendor_sId": 1001,
            "first_name": "Sandbox",
            "last_name": "Customer",
            "name": "Sandbox Customer",
            "email": "customer@example.test",
            "phone": "2348012345678",
            "status": "active",
            "wallet": "12500.00",
            "referral_wallet": "450.00",
            "created_at": "2026-07-11 10:00:00",
            "account_type": {
                "code": 2,
                "key": "agent",
                "label": "Agent"
            }
        },
        "message": "Sandbox plan change simulated. No production user or wallet was changed."
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/users/plan-history GET Vendor token required

Vendor user plan history

List vendor-owned user upgrade and downgrade records with user, amount, balance, date and action filters.
Endpoint URL
https://databoomnigeria.ng/api/vendor/users/plan-history
Base: https://databoomnigeria.ng/api + Path: /vendor/users/plan-history
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Query parameters

ParameterTypeDescription
user_id / email / phone / username / identifier mixed Optional vendor-owned user filter.
action_type / direction string upgrade or downgrade.
q string Search reference, description, user name, email or phone.
date_from / date_to date Inclusive YYYY-MM-DD range.
page / per_page int Pagination; per_page supports 1 to 200.

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "action_type": "upgrade",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/users/plan-history?action_type=upgrade&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/users/plan-history?action_type=upgrade&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/users/plan-history?action_type=upgrade&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/users/plan-history?action_type=upgrade&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "items": [
            {
                "id": 37,
                "reference": "SBX-UPGRADE-001",
                "action": "upgrade",
                "description": "Upgraded from Customer to Agent.",
                "amount": 100,
                "status": {
                    "code": 0,
                    "name": "success"
                },
                "old_balance": 12600,
                "new_balance": 12500,
                "created_at": "2026-07-11 10:00:00",
                "user": {
                    "id": 9001,
                    "name": "Sandbox Customer",
                    "email": "customer@example.test",
                    "phone": "2348012345678",
                    "current_type": 2
                }
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "filters_applied": []
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/transactions GET POST Vendor token required

Vendor transactions

Query detailed vendor transactions; generate printable receipt payloads and paginated CSV exports.
Endpoint URL
https://databoomnigeria.ng/api/vendor/transactions
Base: https://databoomnigeria.ng/api + Path: /vendor/transactions
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string receipt_html, receipt, export_csv or export for POST; omit for normal GET listing
transaction_id / txid int Transaction to inspect or render as a receipt
filters mixed q, user_id, service, status, date_from, date_to, amount_min and amount_max

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "user_id": 9001,
        "status": "success",
        "date_from": "2026-07-01",
        "date_to": "2026-07-11",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/vendor/transactions?user_id=9001&status=success&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY"
$url = "https://databoomnigeria.ng/api/vendor/transactions?user_id=9001&status=success&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/transactions?user_id=9001&status=success&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/transactions?user_id=9001&status=success&date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "transactions": [
            {
                "id": 7001,
                "reference": "SBX-TXN-001",
                "user": {
                    "id": 9001,
                    "vendor_sId": 1001,
                    "first_name": "Sandbox",
                    "last_name": "Customer",
                    "name": "Sandbox Customer",
                    "email": "customer@example.test",
                    "phone": "2348012345678",
                    "status": "active",
                    "wallet": "12500.00",
                    "referral_wallet": "450.00",
                    "created_at": "2026-07-11 10:00:00"
                },
                "service": "Data",
                "description": "1GB MTN SME to 08012345678",
                "amount": "320.00",
                "old_balance": "12820.00",
                "new_balance": "12500.00",
                "status": "success",
                "date": "2026-07-11 09:45:00"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "export": null
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/airtime GET POST PATCH Vendor token required

Vendor airtime pricing

List or update vendor airtime discounts, including bulk updates with the same discount-order and buy-discount safeguards as the vendor panel.
Endpoint URL
https://databoomnigeria.ng/api/vendor/airtime
Base: https://databoomnigeria.ng/api + Path: /vendor/airtime
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save/update, bulk or bulk_update
id / aId int Vendor airtime row ID
aUserDiscount / aAgentDiscount / aVendorDiscount number Required values from 0 to 120; user ≥ agent ≥ vendor > buy discount
rows array Bulk rows containing aId and all three discount values

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "update",
    "id": 1,
    "aUserDiscount": 2.5,
    "aAgentDiscount": 2,
    "aVendorDiscount": 1.5
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/airtime" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-airtime-10001" \
  -d '{"action":"update","id":1,"aUserDiscount":2.5,"aAgentDiscount":2,"aVendorDiscount":1.5}'
$url = "https://databoomnigeria.ng/api/vendor/airtime";
$payload = array (
  'action' => 'update',
  'id' => 1,
  'aUserDiscount' => 2.5,
  'aAgentDiscount' => 2.0,
  'aVendorDiscount' => 1.5,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-airtime-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/airtime";
const payload = {
    "action": "update",
    "id": 1,
    "aUserDiscount": 2.5,
    "aAgentDiscount": 2,
    "aVendorDiscount": 1.5
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-airtime-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/airtime"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-airtime-10001"}')
payload = json.loads('{"action":"update","id":1,"aUserDiscount":2.5,"aAgentDiscount":2,"aVendorDiscount":1.5}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "networks": [
            {
                "id": 1,
                "name": "MTN",
                "buy_discount": 3,
                "user_discount": 2.5,
                "agent_discount": 2,
                "vendor_discount": 1.5,
                "status": "On"
            }
        ],
        "action_result": {
            "updated": 1,
            "message": "Sandbox airtime pricing validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/data-plans GET POST PATCH Vendor token required

Vendor data plans

List or update vendor data-plan prices, availability and Auto Update overrides; bulk update or reprice using saved per-network percentages and system availability locks.
Endpoint URL
https://databoomnigeria.ng/api/vendor/data-plans
Base: https://databoomnigeria.ng/api + Path: /vendor/data-plans
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save/update, bulk_upsert/bulk_update or reprice
id / pId int Vendor plan row ID
userprice / agentprice / vendorprice number Final prices must satisfy user ≥ agent ≥ vendor
is_active / status boolean A centrally disabled system plan is always forced off
Auto Update overrides mixed autoUpdateOverride and the three per-plan percentage override fields
rows array Bulk plan updates using the same validations
network_id / networkId int 0 reprices all networks using saved per-network rates; a specific ID uses submitted percentages
pctUser / pctAgent / pctVendor number One-network percentages must satisfy user ≥ agent ≥ vendor

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "update",
    "id": 101,
    "userprice": 320,
    "agentprice": 310,
    "vendorprice": 300,
    "is_active": true,
    "autoUpdateOverride": false
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/data-plans" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-data-plans-10001" \
  -d '{"action":"update","id":101,"userprice":320,"agentprice":310,"vendorprice":300,"is_active":true,"autoUpdateOverride":false}'
$url = "https://databoomnigeria.ng/api/vendor/data-plans";
$payload = array (
  'action' => 'update',
  'id' => 101,
  'userprice' => 320,
  'agentprice' => 310,
  'vendorprice' => 300,
  'is_active' => true,
  'autoUpdateOverride' => false,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-data-plans-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/data-plans";
const payload = {
    "action": "update",
    "id": 101,
    "userprice": 320,
    "agentprice": 310,
    "vendorprice": 300,
    "is_active": true,
    "autoUpdateOverride": false
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-data-plans-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/data-plans"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-data-plans-10001"}')
payload = json.loads('{"action":"update","id":101,"userprice":320,"agentprice":310,"vendorprice":300,"is_active":true,"autoUpdateOverride":false}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "plans": [
            {
                "id": 101,
                "network": "MTN",
                "name": "1GB SME",
                "buy_price": "285.00",
                "user_price": "320.00",
                "agent_price": "310.00",
                "vendor_price": "300.00",
                "status": "On",
                "system_status": "On",
                "auto_update": true
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "action_result": {
            "updated": 1,
            "message": "Sandbox data-plan action validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/electricity GET POST PATCH Vendor token required

Vendor electricity services

List, update, toggle and export vendor electricity-provider configuration.
Endpoint URL
https://databoomnigeria.ng/api/vendor/electricity
Base: https://databoomnigeria.ng/api + Path: /vendor/electricity
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string update, toggle, set_status or export
id / eId int Vendor electricity-provider row ID

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "update",
    "id": 1,
    "discount": 0.5,
    "providerStatus": true
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/electricity" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-electricity-10001" \
  -d '{"action":"update","id":1,"discount":0.5,"providerStatus":true}'
$url = "https://databoomnigeria.ng/api/vendor/electricity";
$payload = array (
  'action' => 'update',
  'id' => 1,
  'discount' => 0.5,
  'providerStatus' => true,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-electricity-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/electricity";
const payload = {
    "action": "update",
    "id": 1,
    "discount": 0.5,
    "providerStatus": true
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-electricity-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/electricity"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-electricity-10001"}')
payload = json.loads('{"action":"update","id":1,"discount":0.5,"providerStatus":true}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "providers": [
            {
                "id": 1,
                "name": "EEDC",
                "discount": 0.5,
                "charge": 100,
                "status": "On"
            }
        ],
        "action_result": {
            "updated": 1,
            "message": "Sandbox electricity action validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/cable GET POST PATCH Vendor token required

Vendor cable services

List, update, toggle and export cable providers and plans, including bulk pricing with API-price and role-price safeguards.
Endpoint URL
https://databoomnigeria.ng/api/vendor/cable
Base: https://databoomnigeria.ng/api + Path: /vendor/cable
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string provider_update, toggle, set_status, plan_save, plans_bulk or export
id / cId / cpId int Provider or plan row ID
userprice / agentprice / vendorprice number Each must exceed API price and satisfy user ≥ agent ≥ vendor
rows array Bulk cable-plan price updates using the same safeguards

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "plan_save",
    "cpId": 11,
    "userprice": 3600,
    "agentprice": 3575,
    "vendorprice": 3550,
    "status": true
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/cable" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-cable-10001" \
  -d '{"action":"plan_save","cpId":11,"userprice":3600,"agentprice":3575,"vendorprice":3550,"status":true}'
$url = "https://databoomnigeria.ng/api/vendor/cable";
$payload = array (
  'action' => 'plan_save',
  'cpId' => 11,
  'userprice' => 3600,
  'agentprice' => 3575,
  'vendorprice' => 3550,
  'status' => true,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-cable-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/cable";
const payload = {
    "action": "plan_save",
    "cpId": 11,
    "userprice": 3600,
    "agentprice": 3575,
    "vendorprice": 3550,
    "status": true
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-cable-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/cable"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-cable-10001"}')
payload = json.loads('{"action":"plan_save","cpId":11,"userprice":3600,"agentprice":3575,"vendorprice":3550,"status":true}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "providers": [
            {
                "id": 1,
                "name": "DStv",
                "status": "On",
                "plans": [
                    {
                        "id": 11,
                        "name": "DStv Padi",
                        "api_price": "3500.00",
                        "user_price": "3600.00",
                        "agent_price": "3575.00",
                        "vendor_price": "3550.00",
                        "status": "On"
                    }
                ]
            }
        ],
        "action_result": {
            "updated": 1,
            "message": "Sandbox cable action validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/exams GET POST PATCH Vendor token required

Vendor exam services

List, update, toggle and export vendor exam providers, selling prices and availability; selling price must exceed buying price.
Endpoint URL
https://databoomnigeria.ng/api/vendor/exams
Base: https://databoomnigeria.ng/api + Path: /vendor/exams
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string update, toggle, set_status or export
id / eId int Vendor exam-provider row ID
price number Selling price; must be strictly greater than buying_price
providerStatus boolean 1/0 or a boolean-compatible value
logo file/string Optional provider logo upload or saved path

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "update",
    "id": 1,
    "price": 3900,
    "providerStatus": true
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/exams" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-exams-10001" \
  -d '{"action":"update","id":1,"price":3900,"providerStatus":true}'
$url = "https://databoomnigeria.ng/api/vendor/exams";
$payload = array (
  'action' => 'update',
  'id' => 1,
  'price' => 3900,
  'providerStatus' => true,
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-exams-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/exams";
const payload = {
    "action": "update",
    "id": 1,
    "price": 3900,
    "providerStatus": true
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-exams-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/exams"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-exams-10001"}')
payload = json.loads('{"action":"update","id":1,"price":3900,"providerStatus":true}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "providers": [
            {
                "id": 1,
                "name": "WAEC Result Checker",
                "buy_price": "3800.00",
                "selling_price": "3900.00",
                "status": "On"
            }
        ],
        "action_result": {
            "updated": 1,
            "message": "Sandbox exam action validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/networks GET POST PATCH Vendor token required

Vendor network services

List or update network IDs and per-service availability switches.
Endpoint URL
https://databoomnigeria.ng/api/vendor/networks
Base: https://databoomnigeria.ng/api + Path: /vendor/networks
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string update, set_status, bulk_set_status, reset_to_system, upload_logo, remove_logo or use_system_logo
id / nId int Vendor network row ID
field / value string Network availability field and On/Off value
logo file/string Multipart network logo or path

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "set_status",
    "id": 1,
    "field": "smeStatus",
    "value": "On"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/networks" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-networks-10001" \
  -d '{"action":"set_status","id":1,"field":"smeStatus","value":"On"}'
$url = "https://databoomnigeria.ng/api/vendor/networks";
$payload = array (
  'action' => 'set_status',
  'id' => 1,
  'field' => 'smeStatus',
  'value' => 'On',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-networks-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/networks";
const payload = {
    "action": "set_status",
    "id": 1,
    "field": "smeStatus",
    "value": "On"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-networks-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/networks"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-networks-10001"}')
payload = json.loads('{"action":"set_status","id":1,"field":"smeStatus","value":"On"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "networks": [
            {
                "id": 1,
                "name": "MTN",
                "network_id": "1",
                "sme_id": "1",
                "gifting_id": "1",
                "corporate_id": "1",
                "vtu_id": "1",
                "network_status": "On",
                "sme_status": "On",
                "gifting_status": "On",
                "corporate_status": "On",
                "vtu_status": "On"
            }
        ],
        "action_result": {
            "updated": 1,
            "message": "Sandbox network action validated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/bot-stats GET POST PATCH Vendor token required

Vendor BOT statistics

Return BOT KPIs/logs and use live conversation controls to send, pause or resume Telegram BOT conversations.
Endpoint URL
https://databoomnigeria.ng/api/vendor/bot-stats
Base: https://databoomnigeria.ng/api + Path: /vendor/bot-stats
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
control_action / action string meta, send, pause or resume
log_id / sender / channel mixed Conversation target
message / pause_minutes mixed Live reply or pause duration

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "send",
    "sender": "2348012345678",
    "channel": "telegram",
    "message": "Your request has been resolved."
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/bot-stats" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-bot-stats-10001" \
  -d '{"action":"send","sender":"2348012345678","channel":"telegram","message":"Your request has been resolved."}'
$url = "https://databoomnigeria.ng/api/vendor/bot-stats";
$payload = array (
  'action' => 'send',
  'sender' => '2348012345678',
  'channel' => 'telegram',
  'message' => 'Your request has been resolved.',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-bot-stats-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/bot-stats";
const payload = {
    "action": "send",
    "sender": "2348012345678",
    "channel": "telegram",
    "message": "Your request has been resolved."
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-bot-stats-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/bot-stats"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-bot-stats-10001"}')
payload = json.loads('{"action":"send","sender":"2348012345678","channel":"telegram","message":"Your request has been resolved."}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "kpis": {
            "messages_today": 840,
            "active_conversations": 26,
            "completed_orders": 112,
            "failed_orders": 3,
            "average_response_seconds": 1.4
        },
        "channels": [
            {
                "channel": "Telegram",
                "messages": 520
            },
            {
                "channel": "WhatsApp",
                "messages": 320
            }
        ],
        "conversations": [
            {
                "sender": "2348012345678",
                "channel": "telegram",
                "state": "awaiting_plan",
                "status": "active",
                "updated_at": "2026-07-11 10:00:00"
            }
        ],
        "action_result": {
            "ok": true,
            "message": "Sandbox conversation action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/announcements GET POST PATCH DELETE Vendor token required

Vendor announcements

List, create, edit, enable, disable or delete vendor announcements/notifications.
Endpoint URL
https://databoomnigeria.ng/api/vendor/announcements
Base: https://databoomnigeria.ng/api + Path: /vendor/announcements
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string save, send, update, enable, disable, toggle or delete
ids array Bulk announcement IDs
title / message string Announcement title and body
type string web, telegram or whatsapp

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "save",
    "title": "Scheduled maintenance",
    "message": "Service maintenance begins at 11 PM.",
    "type": "web",
    "status": "active"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/announcements" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-announcements-10001" \
  -d '{"action":"save","title":"Scheduled maintenance","message":"Service maintenance begins at 11 PM.","type":"web","status":"active"}'
$url = "https://databoomnigeria.ng/api/vendor/announcements";
$payload = array (
  'action' => 'save',
  'title' => 'Scheduled maintenance',
  'message' => 'Service maintenance begins at 11 PM.',
  'type' => 'web',
  'status' => 'active',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-announcements-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/announcements";
const payload = {
    "action": "save",
    "title": "Scheduled maintenance",
    "message": "Service maintenance begins at 11 PM.",
    "type": "web",
    "status": "active"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-announcements-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/announcements"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-announcements-10001"}')
payload = json.loads('{"action":"save","title":"Scheduled maintenance","message":"Service maintenance begins at 11 PM.","type":"web","status":"active"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "announcements": [
            {
                "id": 31,
                "title": "Scheduled maintenance",
                "message": "Service maintenance starts at 11:00 PM.",
                "type": "info",
                "audience": "all",
                "status": "active",
                "starts_at": "2026-07-11 20:00:00",
                "ends_at": "2026-07-12 01:00:00"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "action_result": {
            "ok": true,
            "message": "Sandbox announcement action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/campaigns GET POST PATCH DELETE Vendor token required

Vendor campaigns

List/view/create/draft/queue/pause/resume/cancel/delete Telegram, Web Push and In-App campaigns.
Endpoint URL
https://databoomnigeria.ng/api/vendor/campaigns
Base: https://databoomnigeria.ng/api + Path: /vendor/campaigns
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
action string draft, queue, pause, resume, cancel or delete
channel string telegram, web_push or in_app
name / subject / body string Campaign content
filters / options object Audience and delivery options accepted by the panel campaign engine

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "queue",
    "channel": "web_push",
    "name": "Weekend promo",
    "subject": "Discounted data plans",
    "body": "Get discounted data plans this weekend.",
    "filters": {
        "all_active_users": true
    }
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/campaigns" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-campaigns-10001" \
  -d '{"action":"queue","channel":"web_push","name":"Weekend promo","subject":"Discounted data plans","body":"Get discounted data plans this weekend.","filters":{"all_active_users":true}}'
$url = "https://databoomnigeria.ng/api/vendor/campaigns";
$payload = array (
  'action' => 'queue',
  'channel' => 'web_push',
  'name' => 'Weekend promo',
  'subject' => 'Discounted data plans',
  'body' => 'Get discounted data plans this weekend.',
  'filters' => 
  array (
    'all_active_users' => true,
  ),
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-campaigns-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/campaigns";
const payload = {
    "action": "queue",
    "channel": "web_push",
    "name": "Weekend promo",
    "subject": "Discounted data plans",
    "body": "Get discounted data plans this weekend.",
    "filters": {
        "all_active_users": true
    }
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-campaigns-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/campaigns"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-campaigns-10001"}')
payload = json.loads('{"action":"queue","channel":"web_push","name":"Weekend promo","subject":"Discounted data plans","body":"Get discounted data plans this weekend.","filters":{"all_active_users":true}}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "campaigns": [
            {
                "id": 21,
                "channel": "web_push",
                "title": "Weekend data promo",
                "message": "Get discounted data plans this weekend.",
                "status": "sent",
                "estimated_recipients": 420,
                "sent_count": 415,
                "failed_count": 5,
                "created_at": "2026-07-11 08:00:00"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "action_result": {
            "ok": true,
            "message": "Sandbox campaign action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/vendor/push-subscribers GET POST PATCH DELETE Vendor token required

Vendor push subscribers

List push subscribers and safely change or revoke subscription status.
Endpoint URL
https://databoomnigeria.ng/api/vendor/push-subscribers
Base: https://databoomnigeria.ng/api + Path: /vendor/push-subscribers
Key notes
  • A valid active subscribers.sApiKey is required.
  • The authenticated account must have sType = 3. Valid non-vendor API keys receive HTTP 403.
  • Every database operation is automatically scoped to the authenticated vendor_sId; request bodies cannot override the vendor scope.
  • POST/PATCH/DELETE requests may send X-Idempotency-Key to safely replay the same request.
  • Logo actions accept multipart/form-data. Export actions return structured JSON or CSV text inside the normal JSON envelope instead of forcing a browser download.
  • Where documented, sensitive account, wallet, withdrawal and WhatsApp-secret operations require the vendor password and PIN in addition to the vendor API key.

Headers

HeaderValueNotes
Authorization Token {VENDOR_TOKEN} Required vendor API token
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for mutations

Request body (JSON)

FieldTypeDescription
id int Subscription ID
action string activate, disable, status or delete
status string active, disabled, expired, gone or unsubscribed

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "action": "status",
    "id": 11,
    "status": "disabled"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/vendor/push-subscribers" \
  -H "Authorization: Token YOUR_VENDOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: vendor-api-push-subscribers-10001" \
  -d '{"action":"status","id":11,"status":"disabled"}'
$url = "https://databoomnigeria.ng/api/vendor/push-subscribers";
$payload = array (
  'action' => 'status',
  'id' => 11,
  'status' => 'disabled',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_VENDOR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: vendor-api-push-subscribers-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/vendor/push-subscribers";
const payload = {
    "action": "status",
    "id": 11,
    "status": "disabled"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_VENDOR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "vendor-api-push-subscribers-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/vendor/push-subscribers"
headers = json.loads('{"Authorization":"Token YOUR_VENDOR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"vendor-api-push-subscribers-10001"}')
payload = json.loads('{"action":"status","id":11,"status":"disabled"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "subscribers": [
            {
                "id": 11,
                "vendor_user_id": 9001,
                "name": "Sandbox Customer",
                "endpoint": "https://push.example.test/subscription/********",
                "browser": "Chrome",
                "device": "Android",
                "status": "active",
                "subscribed_at": "2026-07-10 12:00:00"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        },
        "action_result": {
            "ok": true,
            "message": "Sandbox subscription action simulated."
        }
    }
}
Fail
403
{
    "status": "fail",
    "code": "vendor_token_required",
    "message": "This endpoint accepts API keys belonging to vendor accounts only.",
    "request_id": "f6de4a7c9a3b4e7d"
}
Payments & AutoStatement

Payments & AutoStatement

Payments & AutoStatement endpoints.
Mobile ready Copy buttons Code samples
/payments/methods GET Token required

Payment Methods

List user-accessible payment methods and current AutoStatement banks.
Endpoint URL
https://databoomnigeria.ng/api/payments/methods
Base: https://databoomnigeria.ng/api + Path: /payments/methods
Key notes
  • Any active DataBoom user API key may use this endpoint.
  • The server forces owner_id=0 and external_user_id to the authenticated user, so one user cannot query another user’s payments.
  • Use X-Idempotency-Key for payment-request POST retries.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for POST

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {}
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/payments/methods" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/payments/methods";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/payments/methods";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/payments/methods"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "methods": [
            {
                "key": "databoom_autostatement",
                "name": "DataBoom AutoStatement",
                "enabled": true
            },
            {
                "key": "bank_transfer",
                "name": "Bank Transfer",
                "enabled": true
            }
        ],
        "recommended": "databoom_autostatement"
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/payments/banks GET Token required

AutoStatement banks

List enabled AutoStatement bank accounts.
Endpoint URL
https://databoomnigeria.ng/api/payments/banks
Base: https://databoomnigeria.ng/api + Path: /payments/banks
Key notes
  • Any active DataBoom user API key may use this endpoint.
  • The server forces owner_id=0 and external_user_id to the authenticated user, so one user cannot query another user’s payments.
  • Use X-Idempotency-Key for payment-request POST retries.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for POST

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {}
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/payments/banks" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/payments/banks";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/payments/banks";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/payments/banks"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "banks": [
            {
                "code": "000013",
                "name": "GTBank"
            },
            {
                "code": "000014",
                "name": "Access Bank"
            },
            {
                "code": "000015",
                "name": "Zenith Bank"
            }
        ]
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/payments/request POST Token required

Create payment request

Create an exact-amount AutoStatement payment request for the authenticated user.
Endpoint URL
https://databoomnigeria.ng/api/payments/request
Base: https://databoomnigeria.ng/api + Path: /payments/request
Key notes
  • Any active DataBoom user API key may use this endpoint.
  • The server forces owner_id=0 and external_user_id to the authenticated user, so one user cannot query another user’s payments.
  • Use X-Idempotency-Key for payment-request POST retries.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for POST

Request body (JSON)

FieldTypeDescription
amount number Required positive NGN amount

Complete request example

POST
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "amount": 5000,
    "reference": "FUND-10001"
}

Code examples

curl -X POST "https://databoomnigeria.ng/api/payments/request" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: payment-request-10001" \
  -d '{"amount":5000,"reference":"FUND-10001"}'
$url = "https://databoomnigeria.ng/api/payments/request";
$payload = array (
  'amount' => 5000,
  'reference' => 'FUND-10001',
);

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  "Content-Type: application/json",
  "X-Idempotency-Key: payment-request-10001",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/payments/request";
const payload = {
    "amount": 5000,
    "reference": "FUND-10001"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
    "Content-Type": "application/json",
    "X-Idempotency-Key": "payment-request-10001",
  },
  body: JSON.stringify(payload),
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/payments/request"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json","X-Idempotency-Key":"payment-request-10001"}')
payload = json.loads('{"amount":5000,"reference":"FUND-10001"}')

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    json=payload,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "payment_request": {
            "reference": "FUND-10001",
            "requested_amount": "5000.00",
            "exact_amount": "5012.37",
            "bank_name": "Moniepoint",
            "account_number": "8888888888",
            "account_name": "DATABOOM / SANDBOX USER",
            "status": "pending",
            "expires_at": "2026-07-28 06:13:17"
        },
        "instructions": "Transfer the exact amount shown. The sandbox will not receive or credit real money."
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/payments/request-status GET POST Token required

Query payment request

Check whether a transfer matching a reference or exact amount has been received.
Endpoint URL
https://databoomnigeria.ng/api/payments/request-status
Base: https://databoomnigeria.ng/api + Path: /payments/request-status
Key notes
  • Any active DataBoom user API key may use this endpoint.
  • The server forces owner_id=0 and external_user_id to the authenticated user, so one user cannot query another user’s payments.
  • Use X-Idempotency-Key for payment-request POST retries.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for POST

Request body (JSON)

FieldTypeDescription
reference string Bank transaction/reference ID
exact_amount number Alternative exact amount lookup

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "reference": "FUND-10001"
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/payments/request-status?reference=FUND-10001" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/payments/request-status?reference=FUND-10001";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/payments/request-status?reference=FUND-10001";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/payments/request-status?reference=FUND-10001"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "found": true,
        "status": "received",
        "request": {
            "reference": "FUND-10001",
            "exact_amount": "1012.37",
            "status": "received",
            "received_at": "2026-07-11 10:05:00"
        },
        "payments": [
            {
                "reference": "SBX-BANK-001",
                "amount": "1012.37",
                "sender_name": "SANDBOX USER",
                "bank_name": "Access Bank",
                "status": "matched"
            }
        ]
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/payments/history GET POST Token required

Bank payment history

List the authenticated user’s AutoStatement bank payments and related wallet transactions.
Endpoint URL
https://databoomnigeria.ng/api/payments/history
Base: https://databoomnigeria.ng/api + Path: /payments/history
Key notes
  • Any active DataBoom user API key may use this endpoint.
  • The server forces owner_id=0 and external_user_id to the authenticated user, so one user cannot query another user’s payments.
  • Use X-Idempotency-Key for payment-request POST retries.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for POST

Request body (JSON)

FieldTypeDescription
page int Page number
per_page int 1 to 50
bank_code string Optional bank filter
date/amount filters mixed Use list-payments filters documented in the response metadata

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {
        "date_from": "2026-07-01",
        "date_to": "2026-07-11",
        "page": 1,
        "per_page": 50
    }
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/payments/history?date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/payments/history?date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/payments/history?date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/payments/history?date_from=2026-07-01&date_to=2026-07-11&page=1&per_page=50"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "payments": [
            {
                "id": 1,
                "reference": "SBX-BANK-001",
                "requested_amount": "1000.00",
                "exact_amount": "1012.37",
                "amount_received": "1012.37",
                "bank_name": "Moniepoint",
                "sender_name": "SANDBOX USER",
                "status": "credited",
                "received_at": "2026-07-11 10:05:00",
                "credited_transaction_reference": "SBX-CREDIT-001"
            }
        ],
        "pagination": {
            "page": 1,
            "per_page": 50,
            "total": 1,
            "pages": 1
        }
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
/payments/linked-accounts GET Token required

Linked payment accounts

List the authenticated user’s verified payer names and enabled bank accounts.
Endpoint URL
https://databoomnigeria.ng/api/payments/linked-accounts
Base: https://databoomnigeria.ng/api + Path: /payments/linked-accounts
Key notes
  • Any active DataBoom user API key may use this endpoint.
  • The server forces owner_id=0 and external_user_id to the authenticated user, so one user cannot query another user’s payments.
  • Use X-Idempotency-Key for payment-request POST retries.

Headers

HeaderValueNotes
Authorization Token {TOKEN} Required
Content-Type application/json Required for JSON requests
X-Idempotency-Key unique-client-key Recommended for POST

Request body (JSON)

Complete request example

GET
GET examples place values under query. Write methods show the JSON body sent to the endpoint.
{
    "query": {}
}

Code examples

curl -X GET "https://databoomnigeria.ng/api/payments/linked-accounts" \
  -H "Authorization: Token YOUR_API_KEY"
$url = "https://databoomnigeria.ng/api/payments/linked-accounts";
$payload = null;

$ch = curl_init($url);
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
  "Authorization: Token YOUR_API_KEY",
  ],
  CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($error) { throw new RuntimeException($error); }
echo $response;
const url = "https://databoomnigeria.ng/api/payments/linked-accounts";
const payload = {};

const response = await fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Token YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(response.status, data);
import json
import requests

url = "https://databoomnigeria.ng/api/payments/linked-accounts"
headers = json.loads('{"Authorization":"Token YOUR_API_KEY"}')
payload = None

response = requests.request(
    method="GET",
    url=url,
    headers=headers,
    timeout=60,
)
print(response.status_code)
print(response.text)

Responses

Success
200
  • The structure shown is specific to this endpoint.
  • request_id is returned for support tracing on extended APIs.
  • Sandbox responses additionally include environment="sandbox" and sandbox=true.
{
    "status": "success",
    "data": {
        "user": {
            "id": 1001,
            "name": "John Doe"
        },
        "accounts": [
            {
                "provider": "databoom_autostatement",
                "bank_name": "Moniepoint",
                "account_number": "8888888888",
                "account_name": "DATABOOM / SANDBOX USER",
                "status": "active"
            },
            {
                "provider": "pocketfi",
                "bank_name": "Wema Bank",
                "account_number": "1234567890",
                "account_name": "SANDBOX USER",
                "status": "active"
            }
        ]
    }
}
Fail
401
{
    "status": "fail",
    "code": "invalid_token",
    "message": "The supplied API key is invalid.",
    "request_id": "f6de4a7c9a3b4e7d"
}
Try-it console

Send live and sandbox requests from this page

This runs in your browser using a secure, non-persistent key field. Choose live or sandbox, select an endpoint and review the request before sending.
No server storage
API key
Enter your API key to call private endpoints.
Live requests use real balances and can perform real actions. Sandbox requests never debit wallets, call providers, or change production records.
Request builder
Pro tip: Use unique ref values for purchase endpoints, for example 1785213797.
Response
—
{}
That is it

Production-ready integration tips

Finish strong with best practices, safe retries, idempotency, and a reliable integration.
Idempotency and duplicate protection
Purchase endpoints require a unique ref. If you retry after a network failure, reuse the same ref and check /api/transactions?refs=YOUR_REF to confirm the final status.
Performance
Use list endpoints with ETag caching. When you receive 304, reuse your cached response instantly.
Need help?
If something is unclear, contact DataBoom🇳🇬 support via email hello@databoomnigeria.ng or WhatsApp 2347025073473.
DataBoom🇳🇬 API Documentation
Back to DataBoom🇳🇬 home