Sinch SMS API is one of the easiest APIs we offer and enables you to add fast and reliable global SMS to your applications. Send single messages, scheduled batch messages, use available message templates and more.
API Overview | Sinch (v1)
https://{region}.sms.api.sinch.com/
Delivery reports
The REST API uses message statuses and error codes in delivery reports, which refer to the state of the batch and can be present in either Retrieve a delivery report or sent as a callback.
The status field describes which state a particular message is in. Note that statuses of type Intermediate will only be reported if you request a status of per_recipient
(Retrieve a recipient delivery report).
The following statuses are available when using the SMS REST API:
Status | Type | Description |
---|---|---|
Queued | Intermediate | Message is queued within REST API system and will be dispatched according to the rate of the account. |
Dispatched | Intermediate | Message has been dispatched and accepted for delivery by the SMSC. Note that, in certain scenarios, the Dispatched status may be skipped if a more Final status is reached prior to sending the delivery report. For example, if a delivery report is not sent prior to the corresponding message's successful delivery, you may only get a delivery report with a Delivered status. |
Aborted | Final | Message was aborted before reaching the SMSC. |
Cancelled | Final | Message was cancelled by user before reaching SMSC. |
Rejected | Final | Message was rejected by the SMSC. |
Deleted | Final | Message has been deleted. Message was deleted by a remote SMSC. This may happen if the destination is an invalid MSISDN or opted out subscriber. |
Delivered | Final | Message has been delivered. |
Failed | Final | Message failed to be delivered. |
Expired | Final | Message expired before delivery to the SMSC. This may happen if the expiry time for the message was very short. |
Unknown | Final | Message was delivered to the SMSC but no Delivery Receipt has been received or a Delivery Receipt that couldn't be interpreted was received. |
The delivery report status code provides a more detailed view of what happened with a message. The REST API error codes are a combination of SMPP error codes, MMS error codes and custom codes.
The REST API custom error codes are all within the 4xx range. These are listed below:
Status Code | Name | Status | Description |
---|---|---|---|
400 | Queued | Queued | Message is queued within REST API system and will be dispatched according to the rate of the account. |
401 | Dispatched | Dispatched | Message has been dispatched to SMSC. |
402 | Message unroutable | Aborted | SMSC rejected message. Retrying is likely to cause the same error. |
403 | Internal error | Aborted | An unexpected error caused the message to fail. |
404 | Temporary delivery failure | Aborted | Message failed because of temporary delivery failure. Message can be retried. |
405 | Unmatched Parameter | Aborted | One or more parameters in the message body has no mapping for this recipient. See Message Parameterization |
406 | Internal Expiry | Aborted | Message was expired before reaching SMSC. This may happen if the expiry time for the message was very short. |
407 | Cancelled | Cancelled | Message was cancelled by user before reaching SMSC. |
408 | Internal Reject | Aborted | SMSC rejected the message. Retrying is likely to cause the same error. |
410 | Unmatched default originator | Aborted | No default originator exists/configured for this recipient when sending message without originator. |
411 | Exceeded parts limit | Aborted | Message failed as the number of message parts exceeds the defined max number of message parts. |
412 | Unprovisioned region | Aborted | SMSC rejected the message. The account hasn't been provisioned for this region. |
413 | Blocked | Aborted | The account is blocked. Reach out to support for help. Potentially out of credits. |
414 | Bad Media | Aborted | MMS only, the request failed due to a bad media URL. It is possible that the URL was unreachable, or sent a bad response. |
415 | Delivery report Rejected | Failed | MMS only, message reached MMSC but was rejected by MMS gateway or mobile network. |
416 | Delivery report Not Supported | Failed | MMS only, message reached MMSC but it is not supported. |
417 | Delivery report Unreachable | Failed | MMS only, message reached MMSC but the destination network or the mobile subscriber cannot be reached. |
418 | Delivery report Unrecognized | Failed | MMS only, message reached MMSC but the handset of the mobile subscriber does not recognize the message content. |
Your service plan ID. You can find this on your Dashboard.
Only list messages received before this date/time.
Comma separated list of delivery report statuses to include.
Items Enum Value | Description |
---|---|
Queued | Intermediate type. Message is queued within REST API system and will be dispatched according to the rate of the account. |
Dispatched | Intermediate type. Message has been dispatched and accepted for delivery by the SMSC. |
Aborted | Final type. Message was aborted before reaching the SMSC. |
Cancelled | Final type. Message was cancelled by user before reaching SMSC. |
Failed | Final type. Message failed to be delivered. |
Delivered | Final type. Message has been delivered. |
Expired | Final type. Message expired before delivery to the SMSC. This may happen if the expiry time for the message was very short. |
Rejected | Final type. Message was rejected by the SMSC. |
Deleted | Final type. Message was deleted by the SMSC. |
Unknown | Final type. Message was delivered to the SMSC but no Delivery Receipt has been received or a Delivery Receipt that couldn't be interpreted was received. |
Comma separated list of delivery receipt error codes to include.
Items Enum Value | Description |
---|---|
400 | Queued. Message is queued within REST API system and will be dispatched according to the rate of the account. |
401 | Dispatched. Message has been dispatched to SMSC. |
402 | Message unroutable. SMSC rejected message. Retrying is likely to cause the same error. |
403 | Internal error. An unexpected error caused the message to fail. |
404 | Temporary delivery. failure` Message failed because of temporary delivery failure. Message can be retried. |
405 | Unmatched Parameter. One or more parameters in the message body has no mapping for this recipient. See Message Parameterization |
406 | Internal Expiry. Message was expired before reaching SMSC. This may happen if the expiry time for the message was very short. |
407 | Cancelled. Message was cancelled by user before reaching SMSC. |
408 | Internal Reject. SMSC rejected the message. Retrying is likely to cause the same error. |
410 | Unmatched default originator. No default originator exists/configured for this recipient when sending message without originator. |
- Global API
https://us.sms.api.sinch.com/xms/v1/{service_plan_id}/delivery_reports
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://us.sms.api.sinch.com/xms/v1/jd63jf88477ll123ab4567cd89012ef3/delivery_reports?page=2&page_size=50&start_date=2019-08-24T14%3A15%3A22Z&end_date=2022-10-02+09%3A34%3A18.542000%2B00%3A00&status=Queued%2CDispatched%2CDelivered&code=400%2C405&client_reference=myReference' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
A successful response , or an Error.
{ "count": 1, "page": 0, "page_size": 2, "delivery_reports": [ { … } ] }
Request
Delivery reports can be retrieved even if no callback was requested. The difference between a summary and a full report is only that the full report contains the phone numbers in E.164 format for each status code.
Your service plan ID. You can find this on your Dashboard.
The type of delivery report.
- A
summary
will count the number of messages sent per status. - A
full
report give that of asummary
report but in addition, lists phone numbers.
Enum Value | Description |
---|---|
summary | Will count the number of messages sent per status. |
full | Report give that of a |
Comma separated list of delivery_report_statuses to include
Items Enum Value | Description |
---|---|
Queued | Intermediate type. Message is queued within REST API system and will be dispatched according to the rate of the account. |
Dispatched | Intermediate type. Message has been dispatched and accepted for delivery by the SMSC. |
Aborted | Final type. Message was aborted before reaching the SMSC. |
Cancelled | Final type. Message was cancelled by user before reaching SMSC. |
Failed | Final type. Message failed to be delivered. |
Delivered | Final type. Message has been delivered. |
Expired | Final type. Message expired before delivery to the SMSC. This may happen if the expiry time for the message was very short. |
Rejected | Final type. Message was rejected by the SMSC. |
Deleted | Final type. Message was deleted by the SMSC. |
Unknown | Final type. Message was delivered to the SMSC but no Delivery Receipt has been received or a Delivery Receipt that couldn't be interpreted was received. |
Comma separated list of delivery_receipt_error_codes to include
Items Enum Value | Description |
---|---|
400 | Queued. Message is queued within REST API system and will be dispatched according to the rate of the account. |
401 | Dispatched. Message has been dispatched to SMSC. |
402 | Message unroutable. SMSC rejected message. Retrying is likely to cause the same error. |
403 | Internal error. An unexpected error caused the message to fail. |
404 | Temporary delivery. failure` Message failed because of temporary delivery failure. Message can be retried. |
405 | Unmatched Parameter. One or more parameters in the message body has no mapping for this recipient. See Message Parameterization |
406 | Internal Expiry. Message was expired before reaching SMSC. This may happen if the expiry time for the message was very short. |
407 | Cancelled. Message was cancelled by user before reaching SMSC. |
408 | Internal Reject. SMSC rejected the message. Retrying is likely to cause the same error. |
410 | Unmatched default originator. No default originator exists/configured for this recipient when sending message without originator. |
- Global API
https://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches/{batch_id}/delivery_report
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://us.sms.api.sinch.com/xms/v1/jd63jf88477ll123ab4567cd89012ef3/batches/01FC66621XXXXX119Z8PMV1QPQ/delivery_report?type=summary&status=Queued%2CDispatched%2CDelivered&code=400%2C405' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
A successful response, or an Error.
The ID of the batch this delivery report belongs to.
The client identifier of the batch this delivery report belongs to, if set when submitting batch.
Array with status objects. Only status codes with at least one recipient will be listed.
The detailed status code.
Enum Value | Description |
---|---|
400 | Queued. Message is queued within REST API system and will be dispatched according to the rate of the account. |
401 | Dispatched. Message has been dispatched to SMSC. |
402 | Message unroutable. SMSC rejected message. Retrying is likely to cause the same error. |
403 | Internal error. An unexpected error caused the message to fail. |
404 | Temporary delivery. failure` Message failed because of temporary delivery failure. Message can be retried. |
405 | Unmatched Parameter. One or more parameters in the message body has no mapping for this recipient. See Message Parameterization |
406 | Internal Expiry. Message was expired before reaching SMSC. This may happen if the expiry time for the message was very short. |
407 | Cancelled. Message was cancelled by user before reaching SMSC. |
408 | Internal Reject. SMSC rejected the message. Retrying is likely to cause the same error. |
410 | Unmatched default originator. No default originator exists/configured for this recipient when sending message without originator. |
The number of messages that currently has this code.
Only for full
report. A list of the phone number recipients which messages has this status code.
The simplified status as described in Delivery Report Statuses.
Enum Value | Description |
---|---|
Queued | Intermediate type. Message is queued within REST API system and will be dispatched according to the rate of the account. |
Dispatched | Intermediate type. Message has been dispatched and accepted for delivery by the SMSC. |
Aborted | Final type. Message was aborted before reaching the SMSC. |
Cancelled | Final type. Message was cancelled by user before reaching SMSC. |
Failed | Final type. Message failed to be delivered. |
Delivered | Final type. Message has been delivered. |
Expired | Final type. Message expired before delivery to the SMSC. This may happen if the expiry time for the message was very short. |
Rejected | Final type. Message was rejected by the SMSC. |
Deleted | Final type. Message was deleted by the SMSC. |
Unknown | Final type. Message was delivered to the SMSC but no Delivery Receipt has been received or a Delivery Receipt that couldn't be interpreted was received. |
{ "batch_id": "01FC66621XXXXX119Z8PMV1QPQ", "statuses": [ { … } ], "total_message_count": 1, "type": "delivery_report_sms" }
Your service plan ID. You can find this on your Dashboard.
The batch ID you received from sending a message.
- Global API
https://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches/{batch_id}/delivery_report/{recipient_msisdn}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://us.sms.api.sinch.com/xms/v1/jd63jf88477ll123ab4567cd89012ef3/batches/01FC66621XXXXX119Z8PMV1QPQ/delivery_report/+134848393506' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
A successful response, or an Error.
The default originator used for the recipient this delivery report belongs to, if default originator pool configured and no originator set when submitting batch.
A timestamp of when the Delivery Report was created in the Sinch service. Formatted as ISO-8601: YYYY-MM-DDThh:mm:ss.SSSZ
.
The ID of the batch this delivery report belongs to
The client identifier of the batch this delivery report belongs to, if set when submitting batch.
The detailed status code.
Enum Value | Description |
---|---|
400 | Queued. Message is queued within REST API system and will be dispatched according to the rate of the account. |
401 | Dispatched. Message has been dispatched to SMSC. |
402 | Message unroutable. SMSC rejected message. Retrying is likely to cause the same error. |
403 | Internal error. An unexpected error caused the message to fail. |
404 | Temporary delivery. failure` Message failed because of temporary delivery failure. Message can be retried. |
405 | Unmatched Parameter. One or more parameters in the message body has no mapping for this recipient. See Message Parameterization |
406 | Internal Expiry. Message was expired before reaching SMSC. This may happen if the expiry time for the message was very short. |
407 | Cancelled. Message was cancelled by user before reaching SMSC. |
408 | Internal Reject. SMSC rejected the message. Retrying is likely to cause the same error. |
410 | Unmatched default originator. No default originator exists/configured for this recipient when sending message without originator. |
Applied encoding for message. Present only if smart encoding is enabled.
Enum Value | Description |
---|---|
GSM | GSM encoding. |
UNICODE | Unicode encoding. |
The number of parts the message was split into. Present only if max_number_of_message_parts
parameter was set.
The operator that was used for delivering the message to this recipient, if enabled on the account by Sinch.
A timestamp extracted from the Delivery Receipt from the originating SMSC. Formatted as ISO-8601: YYYY-MM-DDThh:mm:ss.SSSZ
.
The simplified status as described in Delivery Report Statuses.
Enum Value | Description |
---|---|
Queued | Intermediate type. Message is queued within REST API system and will be dispatched according to the rate of the account. |
Dispatched | Intermediate type. Message has been dispatched and accepted for delivery by the SMSC. |
Aborted | Final type. Message was aborted before reaching the SMSC. |
Cancelled | Final type. Message was cancelled by user before reaching SMSC. |
Failed | Final type. Message failed to be delivered. |
Delivered | Final type. Message has been delivered. |
Expired | Final type. Message expired before delivery to the SMSC. This may happen if the expiry time for the message was very short. |
Rejected | Final type. Message was rejected by the SMSC. |
Deleted | Final type. Message was deleted by the SMSC. |
Unknown | Final type. Message was delivered to the SMSC but no Delivery Receipt has been received or a Delivery Receipt that couldn't be interpreted was received. |
{ "type": "recipient_delivery_report_sms", "batch_id": "01FC66621XXXXX119Z8PMV1QPQ", "recipient": "+44231235674", "code": 401, "status": "Dispatched", "at": "2022-08-30T08:16:08.930Z" }
Request
A delivery report contains the status and status code for each recipient of a batch. To get a delivery report callback for a message or batch of messages, set the delivery_report
field accordingly when creating a batch.
The following is provided so you can better understand our webhooks/callbacks. Configuration of both webhooks and the type of delivery report requested happens when sending a batch.
The callback URL can either be provided for each batch or provisioned globally for your account in your Sinch Customer Dashboard. Learn how to configure a webhook/callback here.
The type
is the type of delivery report webhook. The response will vary depending on the webhook delivery report you selected when the batch was sent, so choose the appropriate selection under "One of".
- The
delivery_report_sms
anddelivery_report_mms
types are documented under Delivery report. These are reports containing either a full report or summary report, depending on your selection at the time the batch was sent. - The
recipient_delivery_report_sms
andrecipient_delivery_report_mms
delivery report types are documented under Recipient delivery report. These are delivery reports for recipient phone numbers. If you setper_recipient
for thedelivery_report
parameter when sending the batch, a recipient report gets sent to you for each status change for each recipient in your batch. If you setper_recipient_final
, a recipient report gets sent to you for the final status of each recipient in your batch.
The ID of the batch this delivery report belongs to.
The client identifier of the batch this delivery report belongs to, if set when submitting batch.
Array with status objects. Only status codes with at least one recipient will be listed.
The detailed status code.
Enum Value | Description |
---|---|
400 | Queued. Message is queued within REST API system and will be dispatched according to the rate of the account. |
401 | Dispatched. Message has been dispatched to SMSC. |
402 | Message unroutable. SMSC rejected message. Retrying is likely to cause the same error. |
403 | Internal error. An unexpected error caused the message to fail. |
404 | Temporary delivery. failure` Message failed because of temporary delivery failure. Message can be retried. |
405 | Unmatched Parameter. One or more parameters in the message body has no mapping for this recipient. See Message Parameterization |
406 | Internal Expiry. Message was expired before reaching SMSC. This may happen if the expiry time for the message was very short. |
407 | Cancelled. Message was cancelled by user before reaching SMSC. |
408 | Internal Reject. SMSC rejected the message. Retrying is likely to cause the same error. |
410 | Unmatched default originator. No default originator exists/configured for this recipient when sending message without originator. |
The number of messages that currently has this code.
Only for full
report. A list of the phone number recipients which messages has this status code.
The simplified status as described in Delivery Report Statuses.
Enum Value | Description |
---|---|
Queued | Intermediate type. Message is queued within REST API system and will be dispatched according to the rate of the account. |
Dispatched | Intermediate type. Message has been dispatched and accepted for delivery by the SMSC. |
Aborted | Final type. Message was aborted before reaching the SMSC. |
Cancelled | Final type. Message was cancelled by user before reaching SMSC. |
Failed | Final type. Message failed to be delivered. |
Delivered | Final type. Message has been delivered. |
Expired | Final type. Message expired before delivery to the SMSC. This may happen if the expiry time for the message was very short. |
Rejected | Final type. Message was rejected by the SMSC. |
Deleted | Final type. Message was deleted by the SMSC. |
Unknown | Final type. Message was delivered to the SMSC but no Delivery Receipt has been received or a Delivery Receipt that couldn't be interpreted was received. |
- Global API
https://us.sms.api.sinch.com/deliveryReport
{ "batch_id": "01FC66621XXXXX119Z8PMV1QPQ", "statuses": [ { … } ], "total_message_count": 1, "type": "delivery_report_sms" }
Groups
A group is a set of phone numbers (or MSISDNs) that can be used as a target when sending an SMS. An phone number (MSISDN) can only occur once in a group and any attempts to add a duplicate are ignored but not rejected.