Text messages - SMS
This page provides you with information about how to use MailUp REST API to create text messages (SMS) and to send them to specified recipients.
On this page:
- 1 Subscribe on SMS channel
- 1.1 Add recipients
- 1.1.1 Add to a MailUp list
- 1.1.2 Add to a MailUp group
- 1.2 Read recipients
- 1.1 Add recipients
- 2 Text messages
- 2.1 Create a message
- 2.2 List Messages
- 2.3 Read message details
- 2.4 Update message
- 2.5 Delete Message
- 3 Send a text message
- 3.1 Single Send
- 3.2 Send to group/list
- 3.3 Manage Send Queue
- 3.3.1 Immediate
- 3.3.2 Deferred
- 3.3.3 Undefined
- 3.3.4 Earliest date and time
- 3.3.5 Moved from waiting to immedate
- 3.3.6 Moved from waining to deferred
- 4 SMS Statistics
- 4.1 Summary report
- 4.2 Detailed report
- 5 SMS Credits
- 5.1 Summary report
Subscribe on SMS channel
Add recipients
In the case of already existing recipients the following behavior applies to subscriptions:
already subscribed remain subscribed
pending or unsubscribed on SMS channel does not change their subscription status
The import process can recognize existing recipients, using the mobile number as unique identifiers, and update them according to the given input details. It is possible to add some query string parameters to specify some advanced behavior for the import process:
clearMissingOrEmptyFields: when set to "true", the import process clears on the MailUp field that is not specified or set as empty in the request body.
removeFromPrevGroups: when set to "true", first the import process removes the given recipients from any group they have been part of, then it adds them only to the group specified along with this request. This query string parameter applies only to "Add to a MailUp group" cases.
Description | Asynchronous import of one or more recipients on SMS channel |
|---|---|
HTTP Method | POST |
URL | Add to a MailUp listhttps://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/RecipientsAdd to a MailUp grouphttps://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Group/{id_Group}/Recipients |
Reference | The request is composed of a list of comma-separated objects, each one of them is composed of the following mandatory fields: |
JSON request (example) | [{
"Fields":[{
"Description":"String content",
"Id":1,
"Value":"String content"
}],
"Name":"String content",
"MobileNumber":"10123456",
"MobilePrefix":"0039"
}]
|
JSON response (example) | Returns import ID
|
Paging and filtering (example) |
|
Read recipients
Description | Specific methods are available for retrieving recipients that are, respectively, subscribed, pending, or unsubscribed on the SMS channel. |
|---|---|
HTTP Method | GET |
URL | https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Recipients/Subscribed
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Recipients/Pending
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Recipients/Unsubscribed |
Reference | Automated docs are available for Subscribed, Pending, and Unsubscribed
|
JSON request (example) |
|
JSON response (example) | The same data format is used in the responses related to "Subscribed", "Pending" and "Unsubscribed". Full recipient details are returned. {
"IsPaginated" : false,
"Items" : [
{
"Fields" : [
{
"Description" : "LatestOrderAmount",
"Id" : 15,
"Value" : ""
},
{
"Description" : "FirstName",
"Id" : 1,
"Value" : "Mary"
},
{
"Description" : "Region",
"Id" : 8,
"Value" : ""
},
{
"Description" : "LatestOrderProductIDs",
"Id" : 16,
"Value" : ""
},
{
"Description" : "LastName",
"Id" : 2,
"Value" : "Johnson"
},
{
"Description" : "Address",
"Id" : 9,
"Value" : ""
},
{
"Description" : "LatestOrderCategoryIDs",
"Id" : 17,
"Value" : ""
},
{
"Description" : "Company",
"Id" : 3,
"Value" : ""
},
{
"Description" : "Gender ",
"Id" : 10,
"Value" : ""
},
{
"Description" : "LatestShippedOrderDate",
"Id" : 18,
"Value" : ""
},
{
"Description" : "City",
"Id" : 4,
"Value" : ""
},
{
"Description" : "phone",
"Id" : 11,
"Value" : ""
},
{
"Description" : "LatestShippedOrderID",
"Id" : 19,
"Value" : ""
},
{
"Description" : "Province",
"Id" : 5,
"Value" : ""
},
{
"Description" : "CustomerID",
"Id" : 12,
"Value" : ""
},
{
"Description" : "LatestAbandonedCartDate",
"Id" : 20,
"Value" : ""
},
{
"Description" : "ZIP",
"Id" : 6,
"Value" : ""
},
{
"Description" : "LatestOrderID",
"Id" : 13,
"Value" : ""
},
{
"Description" : "State",
"Id" : 7,
"Value" : ""
},
{
"Description" : "LatestOrderDate",
"Id" : 14,
"Value" : ""
},
{
"Description" : "LatestAbandonedCartTotal",
"Id" : 21,
"Value" : ""
},
{
"Description" : "LatestAbandonedCartID",
"Id" : 22,
"Value" : ""
},
{
"Description" : "TotalOrdered",
"Id" : 23,
"Value" : ""
},
{
"Description" : "TotalOrderedLast12m",
"Id" : 24,
"Value" : ""
},
{
"Description" : "TotalOrderedLast30d",
"Id" : 25,
"Value" : ""
},
{
"Description" : "AllOrderedProductIDs",
"Id" : 26,
"Value" : ""
}
],
"Name" : null,
"idRecipient" : 15,
"Email" : null,
"MobileNumber" : "323456789",
"MobilePrefix" : "001"
}
],
"PageNumber" : 0,
"PageSize" : 10,
"Skipped" : 0,
"TotalElementsCount" : 1
}
|
Paging and filtering (example) |
|
Text messages
A text message is always created inside the environment of a MailUp list, so it cannot be managed outside of that list.
Create a message
Please note that, when creating a new text message, any referenced tag must be created in advance for that list.
Known limitations:
In some countries, like Italy, some restrictions on SMS senders apply. Use MailUp admin console to verify if the specified sender is subject to limitations in some countries
MailUp REST API applies, on alphanumeric senders, looser format restrictions than the admin console. While the admin console allows only letters and numbers, API also allow spaces, punctuation, and other special characters. Please consider that letters and numbers are supported by any carrier, while other characters may be replaced in some cases. It is recommended that you perform some tests before using a sender with spaces, punctuation, or special characters
In the case of an empty Sender, the default list settings are applied
Description | Create a new text message |
|---|---|
HTTP Method | POST |
URL | https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Message |
Reference | |
JSON request (example) | In this case recipients with an empty field as "FirstName" will receive "Hello dear customer, your appointment is confirmed for today at 5 PM, Main Building 1st floor" {
"Subject":"Appointment #1",
"idList":2,
"Content":"Hello [firstname], your appointment is confirmed for today at 5PM, Main Building 1st floor",
"Fields":[{
"Id":1,
"Value":"dear customer"
}],
"Notes":"Appointment is confirmed",
"IsUnicode":false,
"Sender":"ABCandCO"
}
|
JSON response (example) | {
"Subject" : "Appointment #1",
"idList" : 1,
"idMessage" : 2
}
|
Paging and filtering (example) |
|
List Messages
Description | Retrieve text messages of a specified list |
|---|---|
HTTP Method | GET |
URL | GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Messages |
Reference | |
JSON request (example) | none |
JSON response (example) | All the text messages of a specified list {
"IsPaginated" : false,
"Items" : [
{
"Subject" : "Appointment #1",
"idList" : 2,
"idMessage" : 2
},
{
"Subject" : "Happy Holidays",
"idList" : 2,
"idMessage" : 6
},
{
"Subject" : "Happy Birthday",
"idList" : 2,
"idMessage" : 5
}
],
"PageNumber" : 0,
"PageSize" : 10,
"Skipped" : 0,
"TotalElementsCount" : 3
} |
Paging and filtering (example) | Use this filter to extract only the SMS messages of list 1 that contain the word "promo" in their subject. GET /Console/Sms/List/1/Messages?filterby="Subject.Contains('promo')" |
Read message details
Description | Retrieve the text message details by specified message-id |
|---|---|
HTTP Method | GET |
URL | Retrieve the SMS details by specified id https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Message/{id_Message} |
Reference | |
JSON request (example) | none |
JSON response (example) | {
"Subject" : "Appointment #1",
"idList" : 1,
"idMessage" : 2,
"Content" : "Hello [firstname], your appointment is confirmed for today at 5PM, Main Building 1st floor",
"Fields" : [
{
"Description" : "FirstName",
"Id" : 1,
"Value" : "dear customer"
},
{
"Description" : "LastName",
"Id" : 2,
"Value" : ""
},
{
"Description" : "Company",
"Id" : 3,
"Value" : ""
},
{
"Description" : "City",
"Id" : 4,
"Value" : ""
},
{
"Description" : "Province",
"Id" : 5,
"Value" : ""
},
{
"Description" : "ZIP",
"Id" : 6,
"Value" : ""
},
{
"Description" : "State",
"Id" : 7,
"Value" : ""
},
{
"Description" : "Region",
"Id" : 8,
"Value" : ""
},
{
"Description" : "Address",
"Id" : 9,
"Value" : ""
},
{
"Description" : "Gender ",
"Id" : 10,
"Value" : ""
},
{
"Description" : "phone",
"Id" : 11,
"Value" : ""
},
{
"Description" : "CustomerID",
"Id" : 12,
"Value" : ""
},
{
"Description" : "LatestOrderID",
"Id" : 13,
"Value" : ""
},
{
"Description" : "LatestOrderDate",
"Id" : 14,
"Value" : ""
},
{
"Description" : "LatestOrderAmount",
"Id" : 15,
"Value" : ""
},
{
"Description" : "LatestOrderProductIDs",
"Id" : 16,
"Value" : ""
},
{
"Description" : "LatestOrderCategoryIDs",
"Id" : 17,
"Value" : ""
},
{
"Description" : "LatestShippedOrderDate",
"Id" : 18,
"Value" : ""
},
{
"Description" : "LatestShippedOrderID",
"Id" : 19,
"Value" : ""
},
{
"Description" : "LatestAbandonedCartDate",
"Id" : 20,
"Value" : ""
},
{
"Description" : "LatestAbandonedCartTotal",
"Id" : 21,
"Value" : ""
},
{
"Description" : "LatestAbandonedCartID",
"Id" : 22,
"Value" : ""
},
{
"Description" : "TotalOrdered",
"Id" : 23,
"Value" : ""
},
{
"Description" : "TotalOrderedLast12m",
"Id" : 24,
"Value" : ""
},
{
"Description" : "TotalOrderedLast30d",
"Id" : 25,
"Value" : ""
},
{
"Description" : "AllOrderedProductIDs",
"Id" : 26,
"Value" : ""
}
],
"Notes" : "Appointment is confirmed",
"Tags" : [
],
"IsUnicode" : false,
"Sender" : "ABCandCO"
}
|
Paging and filtering (example) |
|
Update message
Description | Update a text message by specifying the message-id |
|---|---|
HTTP Method | PUT |
URL |
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Message/{ID_MESSAGE} |
Reference | |
JSON request (example) | {
"Subject" : "Appointment #1",
"idList" : 1,
"idMessage" : 2,
"Content" : "Hello [firstname], your appointment is confirmed for today at 5PM, Main Building 1st floor",
} |
JSON response (example) | {
"Subject" : "Appointment #1",
"idList" : 1,
"idMessage" : 2,
} |
Paging and filtering (example) |
|
Delete Message
Description | Delete a text message by specifying its ID |
|---|---|
HTTP Method | DELETE |
URL |
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{ID_LIST}/Message/{ID_MESSAGE} |
Reference | |
JSON request (example) | none |
JSON response (example) | none |
Paging and filtering (example) |
|
Send a text message
SMS Sender
Regardless of the sender, you set when creating a message, MailUp REST API always sends SMS using the sender that is specified at the list level. If you want to change the sender you must modify the list properties.
Please note that in some countries the sender may be subject to local restrictions and it may be overwritten by the carriers before being delivered. You can contact us if you need support for some specific nations.
Single Send
Description | Send a text message to a mobile number by specifying message ID. |
|---|---|
HTTP Method | POST |
URL |
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Send |
Reference | |
JSON request (example) | {
"Number":"3351234567",
"Prefix":"0039",
"idMessage":27
}
|
JSON response (example) | {"InvalidRecipients":[],"Sent":1,"UnprocessedRecipients":[],"idMessage":27} |
Paging and filtering (example) |
|
Send to group/list
Description | Immediate or scheduled mailing to a list or a group |
|---|---|
HTTP Method | POST |
URL |
<!-- Immediate Send to all subscribers on SMS channel for specified list -->
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Message/{id_Message}/Send
<!-- Immediate Send to all subscribers on SMS channel for specified group -->
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Group/{id_Group}/Message/{id_Message}/Send
<!-- Scheduled Send to all subscribers on SMS channel for specified list (UTC timezone is expected) -->
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/List/{id_List}/Message/{id_Message}/Send?datetime="2015-10-20 05:00:00Z"
<!-- Scheduled Send to all subscribers on SMS channel for specified group (UTC timezone is expected) -->
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Group/{id_Group}/Message/{id_Message}/Send?datetime="2015-10-20 05:00:00Z" |
Reference | |
JSON request (example) | none |
JSON response (example) | "Sent" value refers to the number of recipients that will receive the message regardless of the type of sending (immediate or deferred) {"InvalidRecipients":[],"Sent":10,"UnprocessedRecipients":[],"idMessage":42} |
Paging and filtering (example) |
|
Manage Send Queue
Known limitations:
scheduled date and time cannot be modified
at the moment there is no way to move from immediate/scheduled queues to "waiting to be sent" queue
Description | Query the send queue |
|---|---|
HTTP Method | GET, POST |
URL |
<!-- Retrieve the status of sms sending queues for immediate scheduled dispatches -->
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Sendings/Immediate
<!-- Retrieve the status of sms sending queues for deferred scheduled dispatches -->
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Sendings/Deferred
<!-- Retrieves the status of sms sending queues for dispatches to be scheduled -->
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Sendings/Undefined
<!-- Retrieves the earliest date and time to schedule the given sending task -->
GET https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Sending/{id_Sending}/Deferred
<!-- Move from "waiting to be sent" to "immediate sending" queue (without starting send) -->
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Sendings/{id_Sending}/Immediate
<!-- Move from "waiting to be sent" to "scheduled sending" queue (scheduled date and time is passed as POST parameter) -->
POST https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/Sendings/{id_Sending}/Deferred |
Reference | |
JSON request (example) | Request example for POST /Console/Sms/Sendings/{id_Sending}/Deferred {
"Date":"2015-02-19 14:41:46Z"
} |
JSON response (example) | Immediate {"IsPaginated":false,"Items":[{"Id":74,"IdList":10,"IdMessage":41,"Notes":"","StartDate":"","State":"Running","Subject":"Welcome","Type":"Immediate"}],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":1}Deferred{"IsPaginated":false,"Items":[
{"Id":72,"IdList":10,"IdMessage":29,"Notes":"This is a test message","StartDate":"2015-02-12 17:00:00Z","State":"Queued","Subject":"Test #1","Type":"Deferred"},{"Id":73,"IdList":3,"IdMessage":19,"Notes":"","StartDate":"2015-03-02 15:00:00Z","State":"Queued","Subject":"Customer credentials","Type":"Deferred"}
],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":2}Undefined{"IsPaginated":false,"Items":[
{"Id":36,"IdList":8,"IdMessage":12,"Notes":"msg to be sent after 3 warnings", "StartDate":null,"State":"ToBePlanned","Subject":"Final notice", "Type":"Undefined"},
{"Id":44,"IdList":3,"IdMessage":4,"Notes":"","StartDate":null,"State":"ToBePlanned","Subject":"Valentine's day","Type":"Undefined"},{"Id":46,"IdList":2,"IdMessage":14,"Notes":"","StartDate":null,"State":"ToBePlanned","Subject":"Welcome","Type":"Undefined"},{"Id":52,"IdList":2,"IdMessage":18,"Notes":"","StartDate":null,"State":"ToBePlanned","Subject":"Happy birthday","Type":"Undefined"},{"Id":48,"IdList":2,"IdMessage":15,"Notes":"","StartDate":null,"State":"ToBePlanned","Subject":"Season greetings","Type":"Undefined"},{"Id":71,"IdList":10,"IdMessage":30,"Notes":"","StartDate":null,"State":"ToBePlanned","Subject":"Password reminder","Type":"Undefined"}
],"PageNumber":0,"PageSize":20,"Skipped":0,"TotalElementsCount":6}Earliest date and time"2015-02-09 14:41:46Z"Moved from waiting to immedate{"Id":74,"IdList":10,"IdMessage":41,"Notes":"","StartDate":"","State":"Running","Subject":"Welcome","Type":"Immediate"}Moved from waining to deferred{"Id":74,"IdList":10,"IdMessage":41,"Notes":"","StartDate":"2015-02-19 14:41:46Z","State":"Queued","Subject":"Welcome","Type":"Deferred"} |
Paging and filtering (example) |
|
SMS Statistics
Summary report
Description | Retrieve the SMS message sending report by specifying SMS ID. |
|---|---|
HTTP Method | GET |
URL |
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/{id_Message}/Sendings/Report |
Reference | |
JSON request (example) | none |
JSON response (example) |
{
"Duration" : "00:00:06.4270000",
"EndDate" : "2014-11-27 10:35:49Z",
"IsCompleted" : true,
"StartDate" : "2014-11-27 10:35:43Z",
"TotalCost" : 2,
"TotalMessagesSent" : 1,
"TotalSmsSent" : 2
} |
Paging and filtering (example) |
|
Detailed report
Description | Retrieve the SMS message sending report details by specifying SMS ID. |
|---|---|
HTTP Method | GET |
URL |
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Sms/{ID_MESSAGE}/Sendings/ReportDetails |
Reference | |
JSON request (example) | none |
JSON response (example) |
{"IsPaginated":false,"Items":[
{"ErrorCode":"FAILED_AT_004","Receiver":"391111111111","SentDate":"2015-01-29 14:11:10Z","Status":2},
{"ErrorCode":"FAILED_AT_004","Receiver":"392222222222","SentDate":"2015-01-29 14:11:10Z","Status":2},
{"ErrorCode":"FAILED_AT_004","Receiver":"393333333333","SentDate":"2015-01-29 14:11:10Z","Status":2},
{"ErrorCode":"FAILED_AT_004","Receiver":"394444444444","SentDate":"2015-01-29 14:11:10Z","Status":2},
{"ErrorCode":"FAILED_AT_004","Receiver":"395555555555","SentDate":"2015-01-29 14:11:10Z","Status":2},
{"ErrorCode":"","Receiver":"396666666666","SentDate":"2015-01-29 14:11:10Z","Status":0},
{"ErrorCode":"","Receiver":"397777777777","SentDate":"2015-01-29 14:11:10Z","Status":0},
{"ErrorCode":"FAILED_AT_004","Receiver":"398888888888","SentDate":"2015-01-29 14:11:10Z","Status":2},
{"ErrorCode":"","Receiver":"399999999999","SentDate":"2015-01-29 14:11:10Z","Status":0}
],"PageNumber":0,"PageSize":0,"Skipped":0,"TotalElementsCount":0} |
Paging and filtering (example) | Use this filter to extract the result of the latest message with ID=24 that was sent to number +3933512345678 If you used the sending method of the Transactional API for SMS you can also filter by the DeliveryId that was returned by that method. GET /Console/Sms/24/Sendings/ReportDetails?DeliveryId=1648 In this case, paging and further filtering is not required since no more than one result can be returned |
SMS Credits
Summary report
Description | Retrieve several account details, including the number of available credits |
|---|---|
HTTP Method | GET |
URL |
https://services.mailup.com/API/v1.1/Rest/ConsoleService.svc/Console/Authentication/Details |
Reference | |
JSON request (example) | none |
JSON response (example) |
{
"Company":"String content",
"IsTrial":true,
"UID":"String content",
"Username":"String content",
"Version":"String content"
"Email":"String content"
"TotalCredits":400.50
"CreditsByList":[{"ListId":1,"Credit":10.3},{"ListId":2,"Credit":4.0}]
"Plan":1
"ExpiryDate":2025-02-20 00:00:00.000
"AutoRenewal":1
"Lang":"String content"
} |
Paging and filtering (example) |
|