Complete REST API reference for automated data bundle & airtime fulfillment with multi-tenant isolation.
MTN 1 · AIRTEL 2 · GLO 3 · 9MOBILE 4
MTN 1 · GLO 2 · 9MOBILE 3 · AIRTEL 4 · SMILE 5
Send the same payload regardless of whether the supplier child belongs to ADEX or MSORG.
POST /api/data
Authorization: Token nx_live_xxxxxxxxx
Content-Type: application/json
{
"network": 1,
"phone": "07062723822",
"data_plan": 1,
"bypass": false,
"request-id": "Data_12345678900"
}POST /api/topup
Authorization: Token nx_live_xxxxxxxxx
Content-Type: application/json
{
"network": 1,
"phone": "08166990365",
"plan_type": "VTU",
"amount": 100,
"bypass": false,
"request-id": "Airtime_12345678900"
}Data: { "network": 1, "phone": "07062723822", "data_plan": 1, "bypass": false, "request-id": "Data_12345678900" }
Airtime: { "network": 1, "phone": "08166990365", "plan_type": "VTU", "amount": 100, "bypass": false, "request-id": "Airtime_12345678900" }Data: { "network": 1, "mobile_number": "09095263835", "plan": 166, "Ported_number": true }
Airtime: { "network": 2, "amount": "100", "mobile_number": "08162269770", "Ported_number": true, "airtime_type": "VTU" }{
"network": "MTN",
"request-id": "Data_12345678900",
"amount": "254.4",
"status": "success",
"message": "Purchase completed",
"response": "Purchase completed",
"phone_number": "09095263835",
"oldbal": "30177.0",
"newbal": "29922.6",
"system": "API",
"plan_type": "DATA",
"wallet_vending": "wallet"
}plan, mobile_number, Ported_number, and airtime_type fields are supplier-side fields. Public API consumers should continue sending data_plan, phone, and plan_type. Responses remain normalized to the ADEX-style public response contract, with synchronous success/failure and status polling for pending requests.Authorization: TokenYour existing API key (e.g., nx_live_xxxxxxxx). X-API-KEY remains supported.X-Idempotency-KeyUnique random string per transaction to ensure retry safety and prevent duplicate billing.Content-TypeMust be application/json.If your application asks for an endpoint, username, and password, create an ADEX client credential in the API Console and use the following connection test. The returned access token can then authenticate data and airtime requests.
curl -X POST "https://api.nexusdatasub.com/api/user" \ -H "Authorization: Basic $(printf '%s' 'username:password' | base64)" \ -H "Content-Type: application/json"
{
"status": "success",
"AccessToken": "db43174b6f8e6748a799ee45159434ce7c72ad2d658b0fe14ce3828a606c",
"balance": "0.00",
"username": "nx_adex_example"
}Use the returned value as Authorization: Token AccessToken for /api/data and /api/topup. Existing nx_live_... API keys remain supported.
/api/v1/reseller/api/accountReturns reseller profile details, wallet balance, active API keys count, and available endpoint URLs.
/api/v1/reseller/api/walletDedicated endpoint returning real-time reseller wallet balance and currency.