This API enables you to send targeted transactional SMS to your users. You can trigger these SMS messages once a user takes a specific action on your platform.
You can use transactional SMS messages to:
Send a post-purchase SMS to share details about a purchase/booking,
Help your users reset their password if they forget it,
Confirm an order a user places,
Share delivery tracking details of a purchase (when it is shipped, on the way, and delivered) and take many other actions.
Use Cases
You can send transactional SMS messages for:
System notifications
Order confirmation/information
Thank you for your purchase! Your order number is {orderNumber}. View more information about your order here: {Link}
Hey, {firstName}! Thanks for your purchase! View more information about your order ({orderNumber}) here: {Link}
Shipping Confirmation
Great news, {firstName}! Your order ({orderNumber}) has shipped and will arrive soon. Click here to view your order details: {Link}
Get excited! Your order ({orderNumber}) has shipped and is coming to you. Click here to view your order details: {Link}
Ticket booking confirmation or cancellation
Hey {firstName}, order #{orderNumber} was successfully canceled. You can check the status of your order here {Link}
Information about shipping and delivery updates
Recurring billing / Payment Updates
Appointment confirmations
Welcome Messages
Endpoint and Headers
Visit our Postman collection to test this request.
Headers
Header | Sample Value | Description |
|---|---|---|
X-INS-AUTH-KEY | 1a2b3c4d5e6f | This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. If needed to test Transactional SMS, please request an API key from Insider One team. |
Content-Type | application/json | This header specifies the media type of the resource. |
Body Parameters
Parameter | Description | Data Type | Required |
|---|---|---|---|
to | Phone Number | String | Yes |
content | Content of the SMS | String | Yes |
unique_args | Unique arguments of transactional SMS used for tracking purposes | Object | No |
callback | The endpoint that you define to receive the webhook events | URL | No |
settings.UrlShorteningStatus | To use the URL shortening for the status in your messages. | Boolean | No |
settings.UrlShorteningDomain | To use the URL shortening for your domain in your messages. e.g. insdr.io | String | No |
settings.UrlTrackingStatus | For using the URL click tracking in your messages. If you do not add this parameter to the payload, the default version will not provide usage. If you do not open urlTracking and if you do not have Insider Tag integration on the related link’s webpage you will see clickthrough metric under the analytics page as zero. | Boolean | No |
settings.UrlExcludeProtocol | For excluding URL protocol (e.g., 'http://' or 'https://') | Boolean | No |
settings.smartEncoding | This smart encoding will automatically convert special characters from UCS-2 to GSM-7. | Boolean | No |
sendAt | Specifies the desired date and time at which the SMS message should be sent. For example: datetime=2006-01-02T15:04:05Z | String | No |
You can enhance your transactional messages with emojis and special characters. Simply add them to the content field when sending a request to the endpoint, and they will be seamlessly delivered to the end user.
Please note that using emojis in your content changes the encoding system to UCS-2. Refer to the Smart Encoding and SMS Part articles for more details.
Sample Request
Every request made to the request endpoint requires a request body formatted in JSON and containing your SMS content.
Make sure to replace the sample values in the request header(s) and body where required before sending your request.
Below is a sample request to send multiple SMS messages in a single request, each with optional tracking and URL shortening settings.
curl --location 'https://sms.useinsider.com/v1/sendMultipleMessage' \
--header 'x-ins-auth-key: INS.Abcd1234' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"phoneNumber": "+905555555555",
"content": "This is SMS body.",
"callback": "http://callback.url",
"settings": {
"urlExcludeProtocol": true,
"urlShorteningDomain": "insdr.io",
"urlShorteningStatus": true,
"urlTrackingStatus": true,
"smartEncoding": true
},
"uniqueArgs": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
{
"phoneNumber": "90 (555) 55",
"content": "This is SMS body.",
"callback": "http://callback.url",
"settings": {
"urlExcludeProtocol": true,
"urlShorteningDomain": "insdr.io",
"urlShorteningStatus": true,
"urlTrackingStatus": true,
"smartEncoding": true
},
"uniqueArgs": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
]
}'Sample Callback Responses
SMS Accepted
{
"message": "Accepted",
"messageIds": [
{
"phoneNumber": "+905555555555",
"messageSid": "sms-a1234567-b123-c123-d123-e123f123456"
}
],
"errors": [
{
"field": "messages[1].phoneNumber",
"error": "This field must be a valid phone number."
}
]
}SMS Sent
{
"id": "sms-a1234567-b123-c123-d123-e123f123456",
"uniqueArgs": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"event": "sent",
"partCount": 1,
"phoneNumber": "+901234567890",
"timestamp": 1234567890
}SMS Delivered
{
"id": "sms-a1234567-b123-c123-d123-e123f123456",
"uniqueArgs": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"event": "delivered",
"phoneNumber": "+901234567890",
"timestamp": 1234567890
}SMS Undelivered
{
"id": "sms-a1234567-b123-c123-d123-e123f123456",
"uniqueArgs": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"event": "undelivered",
"reason": {
"message": "Soft Bounce",
"code": 1404
},
"phoneNumber": "+901234567890",
"timestamp": 1234567890
}Transactional SMS Events Now Logged in UCD by Default
You can track your transactional SMS delivery performance directly in UCD automatically and without any setup required.
Transactional SMS events (delivered, undelivered, and dropped) are now written to UCD by default. Previously, these events had to be manually enabled through a support request.
With this update, you’ll benefit from:
- Consistent data tracking across all transactional SMS use cases
- No need for manual enablement or configuration
Limitations
All functions must be executed with a simple HTTPS POST request.
The API Key should be provided as the authorization key in the request header. If the key is incorrect, the operation will not be executed, and an authorization error will be returned in the response.
The transactional API cannot be used to send promotional SMS. It is designed to set transactional SMS only.
The phone number should be in E164 format.
Content can’t be empty. The maximum limit is 670 characters.
You can send a maximum of 5 requests per second, and each request can include up to 50 messages, which means you can send up to 250 message parts per second.
The maximum speed will be determined based on the Provider Setup.
The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider One team — we can adjust it to fit your needs.