SMS, USSD, OTP and Voice APIs for Nigeria

Reaching someone in Nigeria means SMS, USSD, OTP or voice, and Arkesel puts all four behind one REST endpoint. Send a POST with your api-key header and a JSON body. That is all there is to it. Delivery reports come back over a webhook, and you can run the whole thing against the sandbox before you spend anything.

Built for volume

If you are sending at any real volume, the shape of the API starts to matter. Bulk sends go out in a single call rather than a loop. Delivery status is pushed to your webhook instead of polled, and your own sender ID goes on the message. The OTP endpoint sits separately at /api/otp/generate and issues codes of six to fifteen digits, expiring on a window you choose between one and ten minutes.

SMS

The send endpoint takes one recipient or a list of them, so a campaign and a single receipt use the same code path. Sender ID is yours to set. Delivery status comes back on a webhook, which means you are not holding a polling loop open waiting for a state to change.

Voice

Voice SMS delivers a recorded message as a call. It is worth reaching for when a text will not do the job, whether that is an older handset, a customer who would rather listen than read, or something urgent enough that you want it heard.

OTP and phone verification

Two calls do the whole job. POST /api/otp/generate issues and sends the code, POST /api/otp/verify confirms what the user entered. You set the length anywhere from six to fifteen digits and the expiry from one to ten minutes. The code is generated and held on Arkesel’s side, so you are not storing one-time secrets yourself.

Email marketing

Email runs on its own API, aimed at campaigns rather than receipts. Lists, subscribers, campaigns and automations are all REST endpoints, so a sign-up captured in your product can land in the right list without a manual export. Most teams point it at their CRM and leave it. What it does not do is transactional send, so order confirmations and password resets still belong elsewhere.

If you get stuck

Each endpoint in the documentation comes with a request and the response it returns, so you can copy one and adapt it. Where behaviour does not match the docs, support can trace the request you actually sent instead of working from a description of it.
Scroll to Top