Chat with Support
Developer & Reseller API Portal

Reseller API Documentation

Complete REST API reference for automated data bundle & airtime fulfillment with multi-tenant isolation.

ADEX + MSORG
Supplier protocol compatibility
Your integration always uses the Nexus V1 contract. We route each API key to its configured child supplier and adapt the request to ADEX or MSORG internally.

ADEX network IDs

MTN 1 · AIRTEL 2 · GLO 3 · 9MOBILE 4

MSORG network IDs

MTN 1 · GLO 2 · 9MOBILE 3 · AIRTEL 4 · SMILE 5

Stable public request contract

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"
}

ADEX child supplier payload

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" }

MSORG child supplier payload

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" }

Normalized response for both protocols

{
  "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"
}
Important: MSORG's 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.
Authentication & Security Headers
All Reseller API calls are tenant-isolated and authenticated using your API Key.

Required HTTP Headers

  • 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.

ADEX-compatible client authentication

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.

Account & Wallet Endpoints

GET/api/v1/reseller/api/account

Returns reseller profile details, wallet balance, active API keys count, and available endpoint URLs.

GET/api/v1/reseller/api/wallet

Dedicated endpoint returning real-time reseller wallet balance and currency.