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)

xmljson
Copy
Copied
<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>
Copy
Copied
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)

xmljson
Copy
Copied
<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>
Copy
Copied
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)

xmljson
Copy
Copied
<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>
Copy
Copied
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)

xmljson
Copy
Copied
<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>
Copy
Copied
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

Copy
Copied
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

xmljson
Copy
Copied
<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>
Copy
Copied
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

xmljson
Copy
Copied
<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>
Copy
Copied
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

Copy
Copied
<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

Copy
Copied
<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)

xmljson
Copy
Copied
<postback>
    <origin>MMS_MT</origin>
    <code>N003</code>
    <mms-id>35674</mms-id>
</postback>
Copy
Copied
curl -X POST \
    -H "content-type: application/json"
    -d '{
        "origin": "MMS_MT",
        "code": "N003",
        "audio-name": "35674"
    }'

E002 (Failure)

xmljson
Copy
Copied
<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>
Copy
Copied
curl -X POST \
    -H "content-type: application/json"
    -d '{
        "origin": "MMS_MT",
        "code": "E002",
        "audio-name": "http://www.yoursite.com/audio/1.mp3"
    }'
We'd love to hear from you!
Rate this content:
Still have a question?
 
Ask the community.