# Overview

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.

# Send SMS

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.

REQUEST
  • Resource: /sms/send
  • Method: POST
  • Authentication: Authorization header
  • Content-Type: application/json
  • Success code: 200

This resource accepts also X-Client-IP HTTP header for properly tracking the End Customer IP when you are using a server-server integration.

PARAMETERS
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.
RESPONSE
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).
REQUEST
RESPONSE

# SMS Features

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.

LONG SMS SUPPORT

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.

UNICODE OR MULTILINGUAL 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.

TRANSACTIONAL AND PROMOTIONAL CONTENT

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..

# Delivery Reports

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 where the message was delivered.
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.

# Retrieve a Message

Use this endpoint to retrieve the Message Detail Record (MDR) for a previously submitted SMS.

REQUEST
  • Resource: /sms/{id}
  • Method: GET
  • Authentication: Authorization header
  • Success code: 200
RESPONSE
Property Type Description
to string The destination number.
request_date integer The date time as UNIX timestamp when the request was sent.
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.
REQUEST
RESPONSE