KudiSMS Logo

Voice

Place voice calls, convert text to speech, and deliver voice OTPs.

Send Voice

POST/voice
FieldExampleDescription
token*api keyYour KudiSMS API key.
callerID*234xxxxxxxxxxApproved Custom, Default, or Dedicated Caller ID — get it from /user/callerids.
recipients*234xxxxxxxxxx,234xxxxxxxxxxRecipient phone numbers.
audio*http://example.com/audio.mp3Audio URL. Max file size 2MB, max duration 120 seconds.
Example response — 200 OK
{
  "status": "success",
  "error_code": "000",
  "cost": "30.00",
  "data": ["234703xxxxx|38e29805-8251-77ce-a5e7-0d20ac94d7e5"],
  "msg": "Message received Successfully",
  "balance": "102,857.90"
}

Send TextToSpeech

POST/texttospeech
FieldExampleDescription
token*xxxxxYour KudiSMS API key.
callerID*234xxxxxApproved Custom, Default, or Dedicated Caller ID — get it from /user/callerids.
recipients*234xxxxxxxxxx,234xxxxxxxxxxRecipient phone numbers.
message*xxxxxText to convert to speech and read out by a robot on the call.
Example response — 200 OK
{
  "status": "success",
  "error_code": "000",
  "cost": "30.00",
  "data": ["234703xxxxx|a1b5de20-d0e5-8b72-460b-7bb1fd2a4f90"],
  "msg": "Message sent Successfully"
}

Voice OTP

POST/voiceotp
FieldExampleDescription
token*xxxxYour API token.
recipients*234xxxxxxxxxxRecipient number.
otp*xxxxxxNumeric value, 4 to 6 digits only.

Voice Webhooks (inbound)

POSThttps://your-server.com/webhooks/kudisms

KudiSMS sends a POST webhook to your configured callback URL when the voice provider reports a final delivery status. Set the URL in the dashboard, or via POST /callback (see Callback). Match webhooks to your send using api_reference — from the send response data field: recipient|api_reference.

Respond with HTTP 200

Acknowledge receipt of the webhook with a 200 response.

type values you may receive

typeSend API
voice/voice, /sendrobocall
tts/texttospeech
voice_otp/voiceotp

Status & codes

StatusCodeDescription
DELIVERED / completed000Call delivered successfully
UNDELIVRD (DND)99Recipient is on DND
UNDELIVRD100Call could not be delivered
EXPIRED101Call has expired
Other150Unrecognized or other provider status
Example payload
{
  "type": "voice",
  "status": "DELIVERED",
  "api_reference": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "data": {
    "code": "000",
    "cost": "15.50",
    "recipient": "234XXXXXXXXXX",
    "time": "2026-06-23 14:32:10",
    "network": "mtn",
    "country": "Nigeria",
    "description": "Recipient has received message successfully"
  },
  "vendor": "Kudisms"
}

Updated at, Sunday, July 19, 2026