API Documentation Token auth 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/*.

1) Create your account
To use private endpoints, you must be logged in.
Register
2) Copy your API token
After registering and logging in, open your Profile and copy your API token (API key).
Profile → API Token
3) Call the API
Send the token as a request header on protected endpoints (examples are shown below).
Authorization: TOKEN {TOKEN} (or as specified per endpoint)
Base URL
https://databoomnigeria.ng/api
Try it
Default content type
application/json
Authentication
Authorization: Token {TOKEN}
Quick tip
Use /api/network-details, /api/data-plans, /api/cable-details, /api/electricity-providers, and /api/exam-providers to discover provider IDs & plan IDs.
Last updated
2026-04-04
Bootstrap 5
Support email
hello@databoomnigeria.ng
WhatsApp
07025073473
Never share your API token publicly. For demos, use a restricted or test token.
Getting started Auth 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 an API token. If you don’t have one yet, register here, log in, then copy your token from your Profile.
Supported header formats:
  • Authorization: Token {TOKEN}
  • Token: {TOKEN}
Error handling
On failure, you’ll receive a JSON body like:
{ "status": "fail", "msg": "…" }
and an appropriate HTTP status (400/401/500).

Quickstart (cURL)

curl -X GET "https://databoomnigeria.ng/api/transactions?limit=10" \
  -H "Authorization: Token YOUR_TOKEN"

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 & 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_TOKENMost private endpoints
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.

Code examples

curl -X POST "https://databoomnigeria.ng/api/user" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token YOUR_TOKEN"
$url = "https://databoomnigeria.ng/api/user";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/user";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/user"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
  • data.name = {sLname} {sFname}
  • data.balance = your wallet balance (formatted)
  • data.referral_balance = your referral wallet balance (formatted)
{
    "status": "success",
    "data": {
        "name": "Doe John",
        "balance": "1200.50",
        "referral_balance": "80.00",
        "email": "john@example.com",
        "phone": "08012345678"
    }
}
Fail
401
{
    "status": "fail",
    "msg": "Your authorization token is required."
}
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

Code examples

curl -X GET "https://databoomnigeria.ng/api/network-details" 
$url = "https://databoomnigeria.ng/api/network-details";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/network-details";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/network-details"
headers = {"Content-Type": "application/json"}
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "msg": "Networks fetched successfully",
    "requestId": "a1b2c3d4e5f6a7b8",
    "data": [
        {
            "nId": 1,
            "network": "MTN",
            "logo": "/uploads/networks/mtn.png",
            "networkStatus": "On",
            "vtuStatus": "On",
            "sharesellStatus": "Off",
            "smeStatus": "On",
            "giftingStatus": "On",
            "corporateStatus": "On",
            "datapinStatus": "Off",
            "airtimepinStatus": "Off",
            "ids": {
                "networkid": "...",
                "smeId": "...",
                "giftingId": "...",
                "corporateId": "...",
                "vtuId": "...",
                "sharesellId": "..."
            }
        }
    ]
}
Not Modified
304
{
    "status": "success",
    "msg": "Not modified",
    "requestId": "a1b2c3d4e5f6a7b8",
    "data": []
}
/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

Code examples

curl -X GET "https://databoomnigeria.ng/api/data-plans" \
  -H "Authorization: Token YOUR_TOKEN"
$url = "https://databoomnigeria.ng/api/data-plans";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/data-plans";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/data-plans"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "msg": "Data plans fetched successfully",
    "requestId": "a1b2c3d4e5f6a7b8",
    "networks": [
        {
            "nId": 1,
            "network": "MTN",
            "plans": [
                {
                    "pId": 12,
                    "name": "MTN 1GB",
                    "bytes": 1024,
                    "type": "SME",
                    "day": 1,
                    "price": 213
                }
            ]
        }
    ],
    "data": "(same as networks)"
}
Fail
401
{
    "status": "fail",
    "msg": "Your authorization token is required.",
    "requestId": "a1b2c3d4e5f6a7b8"
}
/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

Code examples

curl -X GET "https://databoomnigeria.ng/api/cable-details" 
$url = "https://databoomnigeria.ng/api/cable-details";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/cable-details";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/cable-details"
headers = {"Content-Type": "application/json"}
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "msg": "Cable details fetched successfully",
    "requestId": "a1b2c3d4e5f6a7b8",
    "data": [
        {
            "providerId": "1",
            "provider": "DSTV",
            "providerStatus": "On",
            "plans": [
                {
                    "planId": "101",
                    "name": "DSTV Compact",
                    "day": 30
                }
            ]
        }
    ]
}
/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

Code examples

curl -X GET "https://databoomnigeria.ng/api/electricity-providers" 
$url = "https://databoomnigeria.ng/api/electricity-providers";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/electricity-providers";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/electricity-providers"
headers = {"Content-Type": "application/json"}
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "msg": "Electricity providers fetched successfully",
    "requestId": "a1b2c3d4e5f6a7b8",
    "data": [
        {
            "providerId": "1",
            "provider": "IBEDC",
            "providerStatus": "On"
        }
    ]
}
/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

Code examples

curl -X GET "https://databoomnigeria.ng/api/exam-providers" 
$url = "https://databoomnigeria.ng/api/exam-providers";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/exam-providers";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/exam-providers"
headers = {"Content-Type": "application/json"}
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "msg": "Exam providers fetched successfully",
    "requestId": "a1b2c3d4e5f6a7b8",
    "data": [
        {
            "providerId": "1",
            "provider": "WAEC",
            "providerStatus": "On",
            "price": 3000
        }
    ]
}
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

Code examples

curl -X GET "https://databoomnigeria.ng/api/transactions" \
  -H "Authorization: Token YOUR_TOKEN"
$url = "https://databoomnigeria.ng/api/transactions";
$token = "YOUR_TOKEN";
$payload = null;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/transactions";
const token = "YOUR_TOKEN";
const payload = null;

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/transactions"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload = None

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "msg": "Transactions fetched successfully",
    "requestId": "a191ae0a359d16ce",
    "meta": {
        "page": 1,
        "limit": 50,
        "total": 104,
        "pages": 3,
        "sort_by": "date",
        "sort_dir": "desc"
    },
    "transactions": [
        {
            "reference": "TXN_1735161201",
            "service": "Data",
            "description": "Purchase of MTN 1GB ...",
            "amount": 213,
            "status": "success",
            "before": 5000,
            "after": 4787,
            "date": "2025-12-25 22:40:58"
        }
    ]
}
Fail
401
{
    "status": "fail",
    "msg": "Your authorization token is required.",
    "requestId": "a191ae0a359d16ce"
}
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

Code examples

curl -X POST "https://databoomnigeria.ng/api/airtime" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token YOUR_TOKEN" \
  -d '{"network":1,"phone":"08012345678","amount":100,"airtime_type":"VTU","ported_number":"","ref":1775296531}'
$url = "https://databoomnigeria.ng/api/airtime";
$token = "YOUR_TOKEN";
$payload = {
    "network": 1,
    "phone": "08012345678",
    "amount": 100,
    "airtime_type": "VTU",
    "ported_number": "",
    "ref": 1775296531
};

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/airtime";
const token = "YOUR_TOKEN";
const payload = {
    "network": 1,
    "phone": "08012345678",
    "amount": 100,
    "airtime_type": "VTU",
    "ported_number": "",
    "ref": 1775296531
};

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/airtime"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload_json = r"""{
    "network": 1,
    "phone": "08012345678",
    "amount": 100,
    "airtime_type": "VTU",
    "ported_number": "",
    "ref": 1775296531
}"""
payload = json.loads(payload_json)

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "Status": "successful"
}
Fail
400
{
    "status": "fail",
    "msg": "Insufficient balance fund your wallet and try again"
}
/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

Code examples

curl -X POST "https://databoomnigeria.ng/api/data" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token YOUR_TOKEN" \
  -d '{"network":1,"phone":"08012345678","data_plan":"1","ported_number":"","ref":1775296531}'
$url = "https://databoomnigeria.ng/api/data";
$token = "YOUR_TOKEN";
$payload = {
    "network": 1,
    "phone": "08012345678",
    "data_plan": "1",
    "ported_number": "",
    "ref": 1775296531
};

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/data";
const token = "YOUR_TOKEN";
const payload = {
    "network": 1,
    "phone": "08012345678",
    "data_plan": "1",
    "ported_number": "",
    "ref": 1775296531
};

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/data"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload_json = r"""{
    "network": 1,
    "phone": "08012345678",
    "data_plan": "1",
    "ported_number": "",
    "ref": 1775296531
}"""
payload = json.loads(payload_json)

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "Status": "successful"
}
Fail
400
{
    "status": "fail",
    "msg": "The Data Plan ID : 999 is invalid"
}
/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

Code examples

curl -X POST "https://databoomnigeria.ng/api/cabletv" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token YOUR_TOKEN" \
  -d '{"provider":"1","iucnumber":"","plan":"1","ref":1775296531,"phone":"08012345678","subtype":""}'
$url = "https://databoomnigeria.ng/api/cabletv";
$token = "YOUR_TOKEN";
$payload = {
    "provider": "1",
    "iucnumber": "",
    "plan": "1",
    "ref": 1775296531,
    "phone": "08012345678",
    "subtype": ""
};

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/cabletv";
const token = "YOUR_TOKEN";
const payload = {
    "provider": "1",
    "iucnumber": "",
    "plan": "1",
    "ref": 1775296531,
    "phone": "08012345678",
    "subtype": ""
};

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/cabletv"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload_json = r"""{
    "provider": "1",
    "iucnumber": "",
    "plan": "1",
    "ref": 1775296531,
    "phone": "08012345678",
    "subtype": ""
}"""
payload = json.loads(payload_json)

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "Status": "successful"
}
Fail
400
{
    "status": "fail",
    "Status": "failed",
    "msg": "The Cable Plan ID is invalid"
}
/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 appended into the transaction description (servicedesc).
  • 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

Code examples

curl -X POST "https://databoomnigeria.ng/api/electricity" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token YOUR_TOKEN" \
  -d '{"provider":"1","meternumber":"12345678901","metertype":"12345678901","amount":100,"phone":"08012345678","ref":1775296531}'
$url = "https://databoomnigeria.ng/api/electricity";
$token = "YOUR_TOKEN";
$payload = {
    "provider": "1",
    "meternumber": "12345678901",
    "metertype": "12345678901",
    "amount": 100,
    "phone": "08012345678",
    "ref": 1775296531
};

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/electricity";
const token = "YOUR_TOKEN";
const payload = {
    "provider": "1",
    "meternumber": "12345678901",
    "metertype": "12345678901",
    "amount": 100,
    "phone": "08012345678",
    "ref": 1775296531
};

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/electricity"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload_json = r"""{
    "provider": "1",
    "meternumber": "12345678901",
    "metertype": "12345678901",
    "amount": 100,
    "phone": "08012345678",
    "ref": 1775296531
}"""
payload = json.loads(payload_json)

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "Status": "successful"
}
Fail
400
{
    "status": "fail",
    "msg": "Minimum Unit Purchase Is N1000"
}
/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

Code examples

curl -X POST "https://databoomnigeria.ng/api/exam" \
  -H "Content-Type: application/json" \
  -H "Authorization: Token YOUR_TOKEN" \
  -d '{"provider":"1","quantity":1,"ref":1775296531}'
$url = "https://databoomnigeria.ng/api/exam";
$token = "YOUR_TOKEN";
$payload = {
    "provider": "1",
    "quantity": 1,
    "ref": 1775296531
};

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Authorization: Token YOUR_TOKEN",
]);
$resp = curl_exec($ch);
$err  = curl_error($ch);
curl_close($ch);

if ($err) { die($err); }
header("Content-Type: application/json");
echo $resp;
const url = "https://databoomnigeria.ng/api/exam";
const token = "YOUR_TOKEN";
const payload = {
    "provider": "1",
    "quantity": 1,
    "ref": 1775296531
};

const res = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Token YOUR_TOKEN",
  },
  body: JSON.stringify(payload),
});
const data = await res.json();
console.log(data);
import requests, json

url = "https://databoomnigeria.ng/api/exam"
headers = {"Content-Type": "application/json"}
headers["Authorization"] = "Token YOUR_TOKEN"
payload_json = r"""{
    "provider": "1",
    "quantity": 1,
    "ref": 1775296531
}"""
payload = json.loads(payload_json)

r = requests.post(url, headers=headers, json=payload, timeout=60)
print(r.status_code)
print(r.text)

Responses

Success
200
{
    "status": "success",
    "Status": "successful",
    "msg": "1234-5678-9012",
    "pin": "1234-5678-9012",
    "pins": "1234-5678-9012",
    "token": "1234-5678-9012"
}
Fail
400
{
    "status": "fail",
    "Status": "failed",
    "msg": "The Provider id is invalid"
}
Try‑it console

Send live requests from this page

This runs in your browser (fetch). Your token stays in your browser only (optionally saved in localStorage if you enable it).
No server storage
Token
Enter your API token (API token) to call private endpoints.
If you’re testing a purchase endpoint, ensure the wallet has enough balance. Duplicate refs are rejected.
Request builder
Pro tip: Use unique ref values for purchase endpoints (e.g. 1775296531).
Response
—
{}
That’s it

Production‑ready integration tips

Finish strong: best practices, safe retries, idempotency, and how to keep your integration reliable.
Idempotency & 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 07025073473.
DataBoom🇳🇬 Docs