Kpoint Public API

Full API Documentation

Airtime, Data, Electricity, Cable TV and SMS APIs with discovery endpoints.

Base URL

https://kpoint.com.ng/api/public/v1

Authentication

Use your purchased API key in one of these headers:

Authorization: Bearer YOUR_API_KEY
X-API-KEY: YOUR_API_KEY

Getting Started

  1. Create and verify a Kpoint account.
  2. Pay one-time API key fee in dashboard.
  3. Generate API key from API Keys page.
  4. Fetch list endpoints to get valid IDs/codes.
  5. Pass those values into purchase endpoints.

Always call list endpoints first so your integrations stay up-to-date.

Code Playground

curl -X POST "https://kpoint.com.ng/api/public/v1/sms/send-message" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipient":"08012345678","message":"Hello from Kpoint API"}'
const res = await fetch("https://kpoint.com.ng/api/public/v1/sms/send-message", {
  method: "POST",
  headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ recipient: "08012345678", message: "Hello from Kpoint API" })
});
console.log(await res.json());
$response = (new \GuzzleHttp\Client())->post("https://kpoint.com.ng/api/public/v1/sms/send-message", [
  'headers' => ['Authorization' => 'Bearer YOUR_API_KEY', 'Content-Type' => 'application/json'],
  'json' => ['recipient' => '08012345678', 'message' => 'Hello from Kpoint API']
]);
print_r(json_decode($response->getBody(), true));
import requests
res = requests.post(
  "https://kpoint.com.ng/api/public/v1/sms/send-message",
  headers={"Authorization":"Bearer YOUR_API_KEY","Content-Type":"application/json"},
  json={"recipient":"08012345678","message":"Hello from Kpoint API"}
)
print(res.json())

Discovery Endpoints

Use these to fetch the exact data required before making purchases:

  • GET /lists/networks
  • GET /lists/data-plans?network=MTN
  • GET /lists/electricity-providers
  • GET /lists/cable-providers
  • GET /lists/cable-packages?provider=dstv
GET/lists/networks

Get available network codes for airtime/data.

{"status":"success","data":[{"code":"MTN","name":"MTN","is_active":true},{"code":"AIRTEL","name":"Airtel","is_active":true}]}
GET/lists/data-plans?network=MTN

Get plan IDs and prices for selected network.

{"status":"success","network":"MTN","data":[{"plan_id":"MTN_1GB_DAILY","description":"1GB Daily","amount":350,"validity":"1 day"}]}
GET/lists/electricity-providers

Get electricity provider/disco codes.

{"status":"success","data":[{"code":"ikeja","name":"Ikeja Electric"},{"code":"eko","name":"Eko Electric"}]}
GET/lists/cable-providers

Get cable provider codes.

{"status":"success","data":[{"code":"dstv","name":"DSTV"},{"code":"gotv","name":"GOTV"}]}
GET/lists/cable-packages?provider=dstv

Get package codes for selected provider.

{"status":"success","provider":"dstv","data":[{"package_code":"DSTV_COMPACT","name":"Compact","amount":12500}]}

Transaction Endpoints

POST/airtime

Purchase airtime.

{"network":"MTN","phone_number":"08012345678","amount":1000}
POST/data

Purchase data bundle with plan ID from list endpoint.

{"network":"MTN","plan_id":"MTN_1GB_DAILY","phone_number":"08012345678"}
POST/electricity

Pay electricity bill.

{"disco":"ikeja","meter_number":"12345678901","meter_type":"prepaid","amount":5000}
POST/cable-tv

Pay cable TV package.

{"provider":"dstv","smartcard_number":"1234567890","package_code":"DSTV_COMPACT"}
POST/sms/send-message

Send SMS from units balance.

{"recipient":"08012345678","message":"Hello from Kpoint API"}

Error Codes

StatusMeaning
401Missing/invalid API key.
403One-time API fee not paid.
422Validation failed / insufficient SMS units.
500Unexpected server error.