Send SMS from your own application over a plain JSON REST API. No SDK required —
if your language can make an HTTPS request, it can send messages.
Introduction
The Bulk-sms.ng API lets you send bulk SMS and check your credit balance from your own
systems. Every endpoint takes a POST with a JSON body and returns JSON.
There are two SMS routes, and the one you pick matters:
Promotional — marketing and campaign traffic. Subject to
DND filtering and to the delivery window described below.
Transactional — OTPs, alerts and receipts. For messages a
customer is waiting for.
Authentication
There is no separate API key. Every request carries the email address and password of
your Bulk-sms.ng account in the JSON body.
Call the API from your server, never from a browser or mobile app.
Because the credentials are your account password, anything that ships them to a
client device exposes the whole account. Keep them in server-side configuration or a
secrets manager.
Coming soon.
The email endpoints are not yet available. Talk to us if you would like early access.
Status Codes
Every response carries a statusCode. A send is only accepted on
600 or 609.
Code
Meaning
600
Message sent successfully
601
Authentication failed
602
Invalid request
603
Unauthorised user
604
Insufficient balance
605
Error parameters — a required field is missing or empty
606
Internal error, try later
607
Invalid number format, invalid recipient count, or more than 100 recipients
608
Invalid authorisation for this route
609
Accepted but deferred — see Delivery windows below
Rate Limits & Delivery Windows
Maximum 100 recipients per request. Beyond that you get 607.
Abuse may result in API suspension.
Promotional traffic is held overnight.
Nigerian telco policy blocks promotional delivery between 7:00pm and
8:00am. A promotional send in that window is still accepted and charged,
but it is queued and released at 8:30am rather than dispatched
immediately. You can detect this: the response returns
statusCode 609 with "deferred": true and a
scheduledfor timestamp. Transactional traffic is not affected.