v3 SMS HTTP
Send an SMS (v3)
Use this operation to send an SMS to an end user.
Both text and binary content are supported, as well as various enhanced message types such as WAP Push and port-directed SMS.
Note: If you're new to OpenMarket, then integrate with our HTTP Global SMS API (version 4) operations.
Customers currently integrated using v3 may continue to use it, although we encourage customers to migrate to the HTTP Global SMS API in order to take advantage of new features.
Quick facts
Method |
POST with XML |
Returns |
XML |
Available |
All regions |
Prerequisites |
You must have SMS messaging provisioned with OpenMarket. |
More information |
See Overview. |
Making a Request
Definition
POST smsc.openmarket.com
There are no URL parameters for this endpoint.
This endpoint supports version Transport Layer Security (TLS) 1.2.
Header fields
POST /wmp HTTP/1.1
Host: smsc-01.openmarket.com:443/wmp
Content-Type: text/xml
Connection: close
There are no custom header fields required. You must specify a Content-Type of text/xml in your request header.
Request body
The request body contains all the information required to send the SMS message, including your authentication details.
The attributes you need to use depends on where you are sending the message, and the type of message originator you are using.
Examples
This example sends a message to a US mobile phone number. This example includes the program_id attribute, which is required only for US and Canadian messages sent from a short code.
.<?xml version="1.0" ?>
<request version="3.0" protocol="wmp" type="submit">
<user agent="XML/SMS/1.0.0" />
<account id="123-456-789-12345" password="your password" />
<option charge_type="0" program_id="ABC" />
<source ton="3" address="12345" />
<destination carrier="383" ton="1" address="13135551212" />
<message text="Hello World!" />
</request>
This example sends a message to a Mexican mobile phone number:
<?xml version="1.0" ?>
<request version="3.0" protocol="wmp" type="submit">
<account id="654-308-100-12345" password="mypassword"/>
<delivery receipt_requested="true"
url="http://mycompany.net/delivery-receipts"/>
<option charge_type="20" />
<source ton="1" address="5223934845"/>
<destination ton="1" address="5225463240"/>
<message text="Example international two-way MT"/>
</request>
You can find more examples in Example WAP Push and Binary Messages (v3) and Required Settings for Each Region (v3).
Request element
The request element is the outer element of the XML document.
Attribute |
Description |
---|---|
version |
Version of the API. Set to 3.0. Required: yes Type: string |
protocol |
The protocol used. Set to wmp. Required: yes Type: string |
type |
The type of request being sent. Set to submit. Required: yes Type: string |
retryOfTicketId |
Use when you are retrying a previously failed MT message, to identify the original, failed MT. The value must be a valid MT ticket ID. Required: no Type: string |
user element
If you are using a custom user agent, define these properties to use as the user element with the following format:
[DevelopmentEnvironment]/SMS/[Version0.0.0]
Example:
XML/SMS/1.0.0
Attribute |
Description |
---|---|
agent |
Identifies the interface used by your platform. The maximum length is 60 characters. Required: no Type: string |
account element
Specifies your authentication details.
Attribute |
Description |
---|---|
id |
Your OpenMarket-provided account for using SMS version 3 operations. Required: yes Type: string |
password |
The password for the account. Required: yes Type: string |
delivery element
Use the delivery element to request a delivery receipt for the message. If this optional element is not supplied in the submit request, a delivery receipt is not returned.
Attribute |
Description |
---|---|
receipt_requested |
Whether you want OpenMarket to send a delivery receipt to your platform. Either:
Required: Yes Type: Boolean |
url |
The URL to which you want OpenMarket to send the delivery receipt. If the request doesn't include this attribute, then we send the delivery receipt to the default URL provisioned in your account for MO delivery. The maximum length is 200 characters. The URL must begin with http://. Required: no Type: string |
option element
Attribute |
Description |
---|---|
type |
Specify this if you are sending a WAP Push. You will also need to specify the url attribute. Set the value to WAP_PUSH. Required: no Type: string |
url |
If you are sending a WAP Push, this is the URL to sent in the message. If the length of the URL causes the message to be greater than the maximum message length for the mobile operator, then we will reject or re-format the message as per the value of the mlc attribute. Required: no Type: string |
charge_type |
Indicates the messaging region. Either:
Required: no Default: 0 Type: integer |
program_id |
Use this attribute if you are messaging via a short code in the US or Canada. This identifies the provisioned program associated with a short code for a given mobile operator. OpenMarket will confirm the exact value to specify. Required: When short code messaging in the US and Canada. Type: string |
purpose |
Use this attribute if you are messaging in India. This identifies the type of message. Options are:
For details see Required Settings for Each Region (v3). Required: When messaging in India. Type: string |
mlc |
Message length control. Determines system behavior when the message length exceeds limits set by the mobile operator.
Default: 0 Required: no Type: integer |
note |
Use this to add data to the request that you may want available in reports, such as individual identifiers (e.g. your own transaction, ticket, or system IDs). It has no effect on the message or its delivery. The value is free-form text that is 0 to 200 characters in length. This value appears in the SMS Detailed Data Source report. It is also returned in delivery receipts. Required: no Type: Latin-1 string |
datacoding |
Data coding used in the message. Options are:
Required: no Default: 7BIT Type: string |
destination element
Specifies the type of number and destination (complete mobile number) address for the SMS message.
Attribute |
Description |
---|---|
ton |
Indicates the destination address type of number, or TON. Either:
Required: yes Type: integer |
address |
The mobile number to which you are sending an SMS message. Always include the country code prefix (e.g., 1 for North America). If destination TON is 1, do not include the plus sign (+) at the start of the phone number. If destination TON is 0, include the plus sign at the start of the phone number. The maximum length is 20 characters. Required: yes Type: string |
carrier |
An OpenMarket-specific number for the mobile operator to which OpenMarket should route the message. OpenMarket can dynamically perform an operator lookup if your business account is enabled to do so. For a list of the valid IDs, see Mobile Operator IDs. Required: no Type: integer |
source element
Attribute |
Description |
---|---|
ton |
Indicates what type of number is set in the address attribute. For MTs this value should be one of the following:
Required: yes Type: integer |
address |
The message originator from which you want to send this message. This value can be one of:
For a TON 1 source address, always include the country code prefix (e.g., "1" for North America). Do not include the plus sign (+) at the start of the TON 1 address. The maximum length is 20 characters. Required: yes Type: ASCII character string |
message element
Attribute |
Description |
---|---|
validity_period |
Specifies the period (in seconds) that OpenMarket and mobile operators will attempt to deliver the message. You can specify between 1 - 259200 seconds. Required: no Default: Most mobile operators will try to deliver a message for up to three days. Type: integer |
udhi |
Whether a user data header (UDH) is encoded in the message. Either: true — there is a UDH false — there is not a UDH Required: no Type: Boolean |
text |
Text message. Use the text or data attribute to hold the message. If the length is greater than the maximum message length allowed by the mobile operator, specify behavior using the mlc attribute. The maximum length is 2680 bytes. You can specify either plain-text or an HTML entity representation. For example:
Required: no Type: string |
data |
Text message. Use the text or data attribute to hold the message. If the length is greater than the maximum message length allowed by the mobile operator, specify behavior using the mlc attribute. The maximum length is 2680 bytes. You can specify either:
Required: no Type: string |
Response from OpenMarket
Accepted and rejected requests
If your request is accepted then OpenMarket sends a response similar to the below. Accepted requests include the ticket element.
<?xml version="1.0" ?>
<response version="3.0" protocol="wmp" type="submit">
<error code="2" description="Message accepted." resolution="" />
<ticket id="8310N-04298-20011-136IN" />
</response>
If your request is rejected, then OpenMarket sends a HTTP 400-499 response. There is no ticket element.
<?xml version="1.0" ?>
<response version="3.0" protocol="wmp" type="submit">
<error code="350" description="A destination address is required." resolution="" />
</response>
The response will include the following data.
response element
Attribute |
Description |
---|---|
version |
The SMS API version. The value is always 3.0 for this operation. Returned: always |
protocol |
The protocol. The value is always wmp for this operation. Returned: always |
type |
Identifies that this is the response to a send SMS message request (a.k.a. submit request). Returned: always |
error element
Attribute |
Description |
---|---|
code |
Number that indicates whether the request was successful or failed. See Response and Delivery Receipt Codes for SMS Version 3 API. Returned: always |
description |
Description for the error code. This provides some information about why a failed request may have failed. Returned: always |
resolution |
This attribute is deprecated. Returned: always |
ticket element
Attribute |
Description |
---|---|
id |
The ticket ID is a unique OpenMarket identifier for the SMS message. You can use it to retrieve the status of the message, and to identify the correct delivery receipt for a message. This ID is also passed to reporting and is useful if you need to query message activity with OpenMarket Support. Returned: Always for accepted request. Never for rejected requests. |
Testing your integration
OpenMarket provides an option for testing your integration with the production environment. See Testing Your SMS v3 Integration.
Troubleshooting
I didn't receive a synchronous reply back - should I retry the request?
If you receive an HTTP transaction timeout, it is still possible that we received the request. Therefore, you should decide whether you'd prefer the end user to potentially receive the message twice, or to not receive the message at all.
Response error codes
For a list of response codes and delivery receipt codes, see Response and Delivery Receipt Codes for SMS Version 3 API.