CheckMobi SMS API is a simple REST interface for sending SMS messages to over 200 countries and territories across the globe — reliable and secure for two-factor authentication and one-time passwords, transactional alerts like order confirmations and delivery updates, and marketing campaigns alike.
Every message benefits from Multiple Carrier Support, which keeps two independent routes available per destination so traffic can automatically fail over if one underperforms, and from the same AI-powered AntiFraud protection that runs across the whole platform, at no extra cost.
You get full control over your sender ID so messages arrive recognizably under your own brand, and real-time delivery analytics so you can track performance as it happens.
Pricing is transparent and scales with you, with no hidden fees — see the pricing page for rates by destination.
Use this endpoint to send SMS messages through CheckMobi. The API supports Unicode UTF-8 text, allowing you to send messages in any language. Long messages are automatically split into standard SMS units before delivery.
/sms/sendPOSTapplication/json200This resource accepts also X-Client-IP HTTP header for properly tracking the End Customer IP when you are using a server-server integration.
| Property | Type | Required | Description |
|---|---|---|---|
| from | string | Optional. The name or number that is displayed as the sender of the SMS message to the receiver of the SMS message. This can be either alphanumeric (for example, CHKMOB) or numeric (for example, a mobile phone number). Sender IDs identify your business and help your customers recognize and recall your brand. This property overrides the value from your application settings. In case you don't send your custom sender id and you don't have one set into the application settings, the platform will use the best option that will make sure the messages are not filtered by operators because sender id doesn't met the legal requirements in that country/network. | |
| to | string | ✓ | The destination number in E.164 format |
| text | string | ✓ | The message that needs to be delivered. |
| is_transactional | boolean | Optional, default to true. Indicates if the message is transactional or promotional. Please check the Transactional and Promotional content section above for more details. | |
| notification_callback | string | Set this parameter to the fully qualified URL where to receive in real time notifications with the delivery reports. Please see the Delivery Reports section below. | |
| platform | string | One of the following values: ios, android, web, desktop. We strongly recommend using this property for better analytics. |
| Property | Type | Description |
|---|---|---|
| id | string | Message Unique identifier. |
| number_info.country_code | string | Country prefix from where the destination number belongs. |
| number_info.country_iso_code | string | The country code from where the destination number belongs in ISO 3166-1 alpha-2 (opens new window) format. |
| number_info.carrier | string | The name of the carrier from where the destination number belongs. |
| number_info.is_mobile | bool | Indicates if destination number is mobile or not. |
| number_info.e164_format | string | The destination number in E.164 format (opens new window) including + sign. |
| number_info.formatting | string | The destination number formatted in E.164 format (opens new window). |
The CheckMobi SMS API supports the core features required for reliable SMS delivery, including long messages, Unicode and multilingual content, and both transactional and promotional messaging. The following sections describe how these features work and the requirements you should consider when using them.
A standard SMS contains up to 160 characters when using standard GSM encoding. Longer messages are supported where the destination carrier and device support concatenated SMS.
CheckMobi supports multilingual SMS using Unicode UTF-8 encoding. A single Unicode SMS unit can contain up to 70 characters. Messages longer than 70 characters are automatically split into multiple units.
Make sure you set the proper value for is_transactional parameter based on your content. It is strictly prohibited to exploit transactional SMS for promotional/marketing use cases. Marketing messages and promotional SMS campaigns are not considered transactional SMS content.
Promotional dedicated routes for certain destinations can have different rates than the Standard pricing plan (usually lower). Make sure you are checking the pricing page..
If you provide the notification_callback parameter, CheckMobi sends an HTTP POST request to the specified URL whenever the SMS status is updated.
Your callback endpoint must return HTTP status 200 OK. If another status code is returned, CheckMobi retries the notification up to 3 times.
The request body is JSON-encoded and contains the following properties:
| Property | Type | Description |
|---|---|---|
| id | string | Message Unique identifier. |
| to | string | The destination number in E.164 format |
| description | string | A short description about carrier and country: for example: FR - Orange. |
| status | string | The delivery status. One of the following values: queued, sent, failed, delivered, undelivered, rejected. |
| charged_amount | float | Sent only when is available. Total charge for sending the SMS (units*charged_rate). |
| charged_rate | float | Sent only when is available. This is the charge applicable per outbound SMS unit. |
| units | integer | Sent only when is available. Number of units into which a long SMS was split. |
Note
In case you want to make sure that the notification is not triggered from an untrusted source you can use the X-CheckMobi-Signature header as described here.
Use this endpoint to retrieve the Message Detail Record (MDR) for a previously submitted SMS.
/sms/{id}GET200| Property | Type | Description |
|---|---|---|
| to | string | The destination number. |
| request_date | integer | The date time as UNIX timestamp |
| description | string | A short description about carrier and country: for example: FR - Orange. |
| status | string | The delivery status. One of the following values: queued, sent, failed, delivered, undelivered, rejected. |
| charged_amount | float | Sent only when is available. Total charge for sending the SMS (units*charged_rate). |
| charged_rate | float | Sent only when is available. This is the charge applicable per outbound SMS unit. |
| units | integer | Sent only when is available. Number of units into which a long SMS was split. |