Status and delivery report postbacks
Get delivery status reports for each message that's sent through the XML or JSON API.
MMS MT Delivery Report Postbacks Overview
The MMS MT postback API notifies you of the delivery status of each message you send. There are two methods for delivering content; Binary and HTML. Below are postback notification formats depending on which method is used.
MMS MT Postback Types
- MMS Delivery status
- saveMMS Encoding Status
MMS MT Delivery Status
A postback notification called N101 is immediately sent after we begin to process the MMS. Upon receiving Delivery Report (DLR) from the carrier, the system generates postback notification N102 with the handset information. The N101 and N102 notifications are linked by tracking-id.
When the mobile network operator doesn't support MMS or the destination handset doesn't support the size of the content within the MMS, in case of Optimized MMS we fall back to SMS/HTML to deliver the message. In this method we deliver the MMS as an SMS containing a link to an HTML page with the content.
The fallback-sms-text is included in the SMS message text. The possible MMS status code that you may receive for the delivery status is one of following: N101, N102, E101, E102.
If you specified to send a Device Discovery Message then you may receive one of the following status codes regarding the delivery status of the Device Discovery Message: N501, N502, E501, E502.
Variable | Description |
---|---|
origin | The notification origin, for example, MMS_MT means an MMS terminated on a mobile. |
code | The postback notification code. |
sent-as | Indicates if the MMS was delivered as MMS (binary) or SMS (HTML). |
mms-id | The id of the MMS template. |
status | For N101 and N501, notification status can be “Message Sent”. For N102 and N502, notification status can be “Message Sent/Delivered”. For E101 and E501, notification status can be “Message Failed”. For E102 and E502, notification status can be “Message Sent/Expired”, “Message Sent/Rejected”, “Message Sent/Failed” or, “Message Sent/Not Supported”. |
from | The shortcode the message is sent from |
handset | Handset profile returned inside Delivery Receipt. This is present only in N102 notification. |
to | The recipient of the message. |
tracking-id | The ID to correlate API requests, and delivery receipts. |
operator-id | Carrier Identification. |
timestamp | The timestamp the MMS was sent (N101) or when the MMS was delivered (N102). |
status-details | Any additional information passed back from the carrier. |
client-reference | Customer transaction id for the request. Passed back in all the postbacks for this transaction. Accepts max length of 64 characters. |
operator-name | Carrier Name for the phone number. |
Postback Schema
N101 Status Code Examples
N101 (Binary)
<postback>
<origin>MMS_MT</origin>
<code>N101</code>
<sent-as>MMS</sent-as>
<status>Message Sent</status>
<mms-id>39597</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3OQ==</tracking-id>
<operator-id>31003</operator-id>
<timestamp>2014-06-07T07:27:29-05:00</timestamp>
</postback>
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"N101",
"sent-as":"MMS",
"status":"Sent",
"status-details":"Forwarded",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"operator-name": "AT&T",
"timestamp":"2021-01-26T18:00:07.990498+00:00"
}’ \
"{Postback Endpoint URL}"
N101 (HTML)
<postback>
<origin>MMS_MT</origin>
<code>N101</code>
<sent-as>SMS</sent-as>
<status>Message Sent</status>
<mms-id>39755</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3Nw==</tracking-id>
<operator-id>31004</operator-id>
<timestamp>2014-06-07T07:27:34-05:00</timestamp>
<status-details>Handset setting: mms with pass via HTML</status-details>
</postback>
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"N101",
"sent-as":"SMS",
"status":"Sent",
"status-details":"Forwarded",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"operator-name": "AT&T",
"timestamp":"2021-01-26T18:00:07.990498+00:00"
}’ \
"{Postback Endpoint URL}"
N102 Status Code Examples
N102 (Binary)
<postback>
<origin>MMS_MT</origin>
<code>N102</code>
<sent-as>MMS</sent-as>
<status>Message Sent/Delivered</status>
<mms-id>39597</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3OQ==</tracking-id>
<operator-id>31003</operator-id>
<timestamp>2014-06-07T07:27:34-05:00</timestamp>
<handset>moto17c</handset>
</postback>
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"N102",
"sent-as":"MMS",
"status":"Delivered",
"status-details": "Success",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"timestamp":"2021-01-26T18:00:07.990498+00:00",
"handset":"iosmms2.0"
}’ \
"{Postback Endpoint URL}"
N102 (HTML)
<postback>
<origin>MMS_MT</origin>
<code>N102</code>
<sent-as>SMS</sent-as>
<status>Message Sent/Delivered</status>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3Nw==</tracking-id>
<operator-id>31004</operator-id>
<timestamp>2014-06-07T07:28:09-05:00</timestamp>
</postback>
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"N102",
"sent-as":"SMS",
"status":"Delivered",
"status-details": "Success",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"timestamp":"2021-01-26T18:00:07.990498+00:00",
"handset":"iosmms2.0"
}’ \
"{Postback Endpoint URL}"
N103 Status Code Example
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"N103",
"sent-as":"MMS",
"status":"Expired",
"status-details": "Message Expired",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"operator-name": "AT&T",
"timestamp":"2021-01-26T18:00:07.990498+00:00"
}’ \
"{Postback Endpoint URL}"
Error Status Code Examples
E101
When the system is unable to send an MMS we return a postback E101
E102
When the MMS delivery fails due to various reasons we return a postback E102
E101
<postback>
<origin>MMS_MT</origin>
<code>E101</code>
<status>Message Failed</status>
<mms-id>39755</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3Nw==</tracking-id>
<operator-id>31004</operator-id>
<status-details>Error fetching dynamic content</status-details>
</postback>
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"E101",
"status":"Failed",
"status-details":"MMS is too big",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"timestamp":"2021-01-26T18:00:07.990498+00:00"
}’ \
"{Postback Endpoint URL}"
E102
<postback>
<origin>MMS_MT</origin>
<code>E102</code>
<status>Message Sent/Rejected</status>
<mms-id>39755</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3Nw==</tracking-id>
<operator-id>31004</operator-id>
<status-details>Recipient blocked by mobile operator</status-details>
</postback>
curl -X POST \
-H "content-type: application/json" -d '
{
"origin":"MMS_MT",
"code":"E102",
"sent-as":"MMS",
"status":"Rejected",
"status-details":"Message Rejected",
"mms-id":"123456",
"from":"00000",
"to":"11111111111",
"tracking-id":"EMWMzE-iwGY-Bew",
"operator-id":"0001470",
"timestamp":"2021-01-26T18:00:07.990498+00:00"
}’ \
"{Postback Endpoint URL}"
Device Discovery Message Status Code Examples
N501
<postback>
<origin>MMS_MT</origin>
<code>N501</code>
<sent-as>MMS</sent-as>
<status>Message Sent</status>
<mms-id>39755</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3Nw==</tracking-id>
<operator-id>31004</operator-id>
<timestamp>2014-06-07T07:27:34-05:00</timestamp>
<status-details></status-details>
</postback>
N502
<postback>
<origin>MMS_MT</origin>
<code>N502</code>
<sent-as>MMS</sent-as>
<status>Message Sent/Delivered</status>
<mms-id>39597</mms-id>
<from>28444</from>
<to>12399471613</to>
<tracking-id>TU1TXzU5Nzg3OQ==</tracking-id>
<operator-id>31003</operator-id>
<timestamp>2014-06-07T07:27:34-05:00</timestamp>
<handset>moto17c</handset>
</postback>
saveMMS Encoding status
When MMS is saved, we generate postback notification. When saving and encoding of the content is successful we generate N003. If encoding of the content failed we generate postback E002 containing mms-id and audio-name/video-name pointing to the content that failed to encode properly. When E002 is returned the mms-id should be considered corrupted. Note: The image-name is not included since image encoding is not supported.
Variable | Description |
---|---|
code | N003 or E002 based on the success of the content coding. |
origin | MMS_MT for saving MMS content. |
mms-id | The id of the MMS. |
audio-name | URL to audio content that failed to encode properly. |
video-name | URL to video content that failed to encode properly. |
Status code examples
N003 (Success)
<postback>
<origin>MMS_MT</origin>
<code>N003</code>
<mms-id>35674</mms-id>
</postback>
curl -X POST \
-H "content-type: application/json"
-d '{
"origin": "MMS_MT",
"code": "N003",
"audio-name": "35674"
}'
E002 (Failure)
<postback>
<origin>MMS_MT</origin>
<code>E002</code>
<mms-id>35674</mms-id>
<audio-name>http://www.yoursite.com/audio/1.mp3</audio-name>
</postback>
curl -X POST \
-H "content-type: application/json"
-d '{
"origin": "MMS_MT",
"code": "E002",
"audio-name": "http://www.yoursite.com/audio/1.mp3"
}'