SMS
Send bulk, corporate, international, personalised, and auto-composed SMS messages. All SMS endpoints accept the same core fields (token, senderID, recipients, message) with a few variants per use case below.
Send Bulk SMS
POST
/smsSend the same message to multiple recipients. Supports GET (query params), POST form-data, and POST raw JSON.
| Field | Example | Description |
|---|---|---|
| token* | api key | Your API key. |
| senderID* | xxxxxxxxxxx | Must be an approved promotional Sender ID only. |
| recipients* | 234xxxxxxxxxx,234xxxxxxxxxx | Comma-separated recipient phone numbers. |
| message* | Your message to be sent | Message body. |
| gateway* | 2 | 2 => Refunds charge for DND numbers (DND numbers will not deliver). |
GET — query params
GET https://my.kudisms.net/api/sms?token=API_Key&senderID=Your_Promotional_Sender_ID&recipients=234xxx,234xxx&message=Message_Content&gateway=2POST — form-data
token = api key
senderID = xxxxxxxxxxx
recipients = 234xxxxxxxxxx,234xxxxxxxxxx
message = Your message to be sent
gateway = 2POST — JSON body
{
"token": "api key",
"senderID": "xxxxxxxxxxx",
"recipients": "234xxxxxxxxxx,234xxxxxxxxxx",
"message": "Your message to be sent",
"gateway": "2"
}Example response — 200 OK
{
"status": "success",
"error_code": "000",
"cost": "5.60",
"data": ["234703xxxxx|fd2913aa-4db0-24ec-8fc7-f46cd397153c"],
"msg": "Message received Successfully",
"length": 8,
"page": 1,
"balance": "15,585.41"
}Send International SMS
POST
/intcomposesms| Field | Example | Description |
|---|---|---|
| token* | Your Api Key | Your API key. |
| country_id* | 91 | Get the country list from GET /getcountry. |
| message* | Your message to be sent | Message body. |
| recipients* | 91xxxxxxxxxx,91xxxxxxxxxx | Comma-separated, with country code. |
| senderID* | xxxxxxxxxxx | Must be an approved International Sender ID only. |
Example response — 401 Unauthorized
{
"status": "error",
"error_code": "100",
"msg": "Token provided is invalid."
}Send SMS OTP
POST
/otp| Field | Example | Description |
|---|---|---|
| token* | api key | Your API key. |
| senderID* | Your Corporate Sender ID | Must be an approved Corporate Sender ID only. |
| recipients* | 234xxxxxxxxxx | Recipient phone number. |
| otp* | Your OTP Code | OTP value. |
| appnamecode* | Your App Name Code | Submit your App Name for approval at /user/ssoan. |
| templatecode* | Your Template Code | Submit your SMS OTP Template for approval at /user/csomt. |
Send Corporate SMS
POST
/corporate| Field | Example | Description |
|---|---|---|
| token* | api key | Your API key. |
| senderID* | Your Corporate Sender ID | Must be an approved Corporate Sender ID only. Submit at /user/scid. |
| recipients* | 234xxxxxxxxxx | Recipient phone number. |
| message* | Dear User, your {SenderID} OTP is 2345. It expires in 10mins | Plain OTP, alerts, or notifications message. |
Example response — 200 OK
{
"status": "success",
"error_code": "000",
"cost": "3.50",
"data": "234703xxxxx|98a0ca4c-8609-92a0-9f68-cfaf59c78da6",
"msg": "Message received Successfully",
"length": 26,
"page": 1,
"balance": "102,954.20"
}Submit Promotional Sender ID
POST
/senderID| Field | Example | Description |
|---|---|---|
| token* | api key | Your API key. |
| senderID* | xxxxxxxxxx | Must not be more than 11 characters including spaces. |
| message* | sample message | Sample message. |
Example response — 200 OK
{
"status": "success",
"error_code": "000",
"msg": "Promotional sender ID submitted successfully"
}Check Promotional Sender ID Status
POST
/check_senderID| Field | Example | Description |
|---|---|---|
| token* | api key | Your API key. |
| senderID* | xxxxxxxxxx | Already-submitted sender ID to check the status of. |
Example response — 200 OK
{
"status": "success",
"error_code": "000",
"msg": "The sender ID has been approved"
}Send Personalised SMS
POST
/personalisedsmsSends a different, templated message per recipient using CSV-style headers. Raw JSON only.
Raw JSON body
{
"token": "your-api-key",
"senderID": "neo",
"message": "hello",
"csvHeaders": ["phone_number", "name"],
"recipients": [
{ "phone_number": "234703xxxxx", "name": "nath" },
{ "phone_number": "234703xxxxx", "name": "nath" }
]
}Example response — 200 OK
{
"status": "success",
"status_msg": "Message is being processed.",
"error_code": "000",
"msg": "Your Message(s) have been received Successfully.",
"length": 8,
"page": 1,
"initial_balance": "157,273.05",
"units_used": "7.20",
"current_balance": "157,265.85"
}Send Auto Compose SMS
POST
/autocomposesmsSend different sender IDs, recipients, and messages in a single request. Requires a Bearer token (your API key) in addition to the token field in the body.
Raw JSON body
{
"token": "your-api-key",
"gateway": 2,
"data": [
["neo", "234703xxxxx", "hello, auto compose works"]
]
}Each entry in data is [senderID, recipient, message].
Updated at, Sunday, July 19, 2026