KudiSMS Logo

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/sms

Send the same message to multiple recipients. Supports GET (query params), POST form-data, and POST raw JSON.

FieldExampleDescription
token*api keyYour API key.
senderID*xxxxxxxxxxxMust be an approved promotional Sender ID only.
recipients*234xxxxxxxxxx,234xxxxxxxxxxComma-separated recipient phone numbers.
message*Your message to be sentMessage body.
gateway*22 => 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=2
POST — form-data
token       = api key
senderID    = xxxxxxxxxxx
recipients  = 234xxxxxxxxxx,234xxxxxxxxxx
message     = Your message to be sent
gateway     = 2
POST — 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
FieldExampleDescription
token*Your Api KeyYour API key.
country_id*91Get the country list from GET /getcountry.
message*Your message to be sentMessage body.
recipients*91xxxxxxxxxx,91xxxxxxxxxxComma-separated, with country code.
senderID*xxxxxxxxxxxMust 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
FieldExampleDescription
token*api keyYour API key.
senderID*Your Corporate Sender IDMust be an approved Corporate Sender ID only.
recipients*234xxxxxxxxxxRecipient phone number.
otp*Your OTP CodeOTP value.
appnamecode*Your App Name CodeSubmit your App Name for approval at /user/ssoan.
templatecode*Your Template CodeSubmit your SMS OTP Template for approval at /user/csomt.

Send Corporate SMS

POST/corporate
FieldExampleDescription
token*api keyYour API key.
senderID*Your Corporate Sender IDMust be an approved Corporate Sender ID only. Submit at /user/scid.
recipients*234xxxxxxxxxxRecipient phone number.
message*Dear User, your {SenderID} OTP is 2345. It expires in 10minsPlain 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
FieldExampleDescription
token*api keyYour API key.
senderID*xxxxxxxxxxMust not be more than 11 characters including spaces.
message*sample messageSample message.
Example response — 200 OK
{
  "status": "success",
  "error_code": "000",
  "msg": "Promotional sender ID submitted successfully"
}

Check Promotional Sender ID Status

POST/check_senderID
FieldExampleDescription
token*api keyYour API key.
senderID*xxxxxxxxxxAlready-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/personalisedsms

Sends 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/autocomposesms

Send 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