Sidebar Menu

SendMessage

This method sends an SMS or MMS message to any number of recipients. MMS messages must each be no larger than 1MB in size.

Endpoint

POST:
https://messaging.esendex.us/Messaging.svc/SendMessage

Syntax

SendMessage(Request)

Request Parameters

Parameter Name Description Data Type Required Sample Value
Attachments

Attachments for the message. The message must use MMS to have attachments. This value can include either URLs or Media IDs. (Media IDs are for files that you have uploaded to your license key.)

Array of String values True, when sending a message without a Body. 17772, https://esendex.us/img/docs/example.jpg
Body

Text content for the message.

String True, when sending a message without Attachments. This is a sample message.
Concatenate

The API automatically breaks up long SMS messages into fragments. Use concatenation to reunite the fragments as a single message on the recipient's device. Note that fragments and concatenation are not used with MMS.

Boolean False True
From

Number to send the message from. If unspecified, one of your numbers will be chosen automatically. (Contact Esendex to add a number to your account.)

String False 7575550000
IsUnicode

Whether the message should be sent using Unicode encoding. Note that all MMS messages support Unicode.

Boolean False True
LicenseKey

Your license key.

GUID True 00000000-0000-0000-0000-000000000000
PostbackUrl

URL to send postbacks to.

String False http://www.example.com/postback.aspx
ReferenceID

Custom ID of your choice. You can use this ID to filter incoming messages when you read them.

String False 123
ScheduledDateTime

UTC date/time when message will send. Specified as milliseconds from the epoch of 1970-01-01T00:00:00Z.

DateTime False \/Date(1682439497785)\/
Subject

Subject line for the message.

String False Messaging Test
To

Recipient number.

Array of String values True 7575559999
UseMMS

Whether to send as an MMS message. MMS is required when sending attachments.

Boolean True True

Response

Returns: Array of OutgoingMessageResponse objects

Code Samples

You can use any programming language you want with our API, as long as it can make a REST or SOAP call. Here are examples for some of the most common platforms.

// https://messaging.esendex.us/Messaging.svc?wsdl was added as a Service Reference and given the name WSDL

using WSDL;

var client = new MessagingClient(MessagingClient.EndpointConfiguration.mms2wsHttpBindingSecure);

var request = new OutgoingMessageRequest
{
    Attachments = new[] { "https://esendex.us/img/docs/example.jpg" },
    Body = "Hi, this message was sent using C#.",
    From = YOUR_FROM_NUMBER,
    LicenseKey = YOUR_LICENSE_KEY,
    ScheduledDateTime = DateTime.UtcNow.AddMinutes(1),
    To = new[] { YOUR_TO_NUMBER },
    UseMMS = true
};

var messages = await client.SendMessageAsync(request);

foreach (var m in messages)
{
    Console.WriteLine(
        "Message ID: " + m.MessageID + Environment.NewLine +
        "Message Status: " + m.MessageStatus + Environment.NewLine +
        "To: " + m.To + Environment.NewLine +
        "From: " + m.From + Environment.NewLine +
        "UTC Time Sent: " + m.SentTime + Environment.NewLine +
        "Attachments: " + m.Attachments + Environment.NewLine);
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.Instant;

public final class App {
    public static void main(String[] args) throws Exception {
        var url = new URL("https://messaging.esendex.us/Messaging.svc/SendMessage");
        var con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type", "application/json");
        con.setRequestProperty("Accept", "application/json");
        con.setDoInput(true);
        con.setDoOutput(true);

        var scheduledMilli = Instant.now().plusSeconds(60).toEpochMilli();
        var scheduledDateTime = String.format("\\/Date(%s)\\/", scheduledMilli);
        var json = """
                {
                    "Attachments": [ "https://esendex.us/img/docs/example.jpg" ],
                    "Body": "Hi, this message was sent using Java.",
                    "LicenseKey": "00000000-0000-0000-0000-000000000000",
                    "From": "54321",
                    "To": [ "7575559999" ],
                    "ScheduledDateTime": "%s",
                    "UseMMS": true
                }
                """.formatted(scheduledDateTime);

        try (var os = con.getOutputStream()) {
            var input = json.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        var response = new StringBuilder();
        String responseLine = null;

        if (con.getResponseCode() == 200) {
            try (var br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"))) {
                while ((responseLine = br.readLine()) != null) {
                    response.append(responseLine.trim());
                }
            }
        } else {
            try (var br = new BufferedReader(
                    new InputStreamReader(con.getErrorStream(), "utf-8"))) {
                while ((responseLine = br.readLine()) != null) {
                    response.append(responseLine.trim());
                }
            }
        }

        System.out.println(response.toString());
    }
}
<?php

$json = '{
  "Attachments":["https://picsum.photos/id/0/100"],
  "Body":"",
  "Concatenate":false,
  "From":"7575550000",
  "IsUnicode":false,
  "LicenseKey":"00000000-0000-0000-0000-000000000000",
  "PostbackUrl":"http://esendex.us/postback.aspx",
  "ReferenceID":"",
  "ScheduledDateTime":"\/Date(1239018869048)\/",
  "Subject":"",
  "To":["15553096094"],
  "UseMMS":true
}';

$url = 'https://messaging.esendex.us/Messaging.svc/SendMessage';
$cURL = curl_init();

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $json);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

curl_setopt($cURL, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json'));
// If you desire your results in XML format, use the following line for your HTTP headers and comment out the HTTP headers code line above.
// curl_setopt($cURL, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

$result = curl_exec($cURL);
curl_close($cURL);
$array = json_decode($result, true);

// print_r($json);
// print_r("\n\n\n\n");
print_r($array);

?>
from datetime import datetime, timedelta
import httpx

headers = {"Accept": "application/json"}
url = "https://messaging.esendex.us/Messaging.svc/SendMessage"

dt = datetime.utcnow() + timedelta(minutes=1)
ms = round(dt.timestamp() * 1000)
scheduled_date_time = f"/Date({ms})/"

request = {
    "Attachments": ["https://esendex.us/img/docs/example.jpg"],
    "Body": "Hi, this message was sent using Python.",
    "From": "7575550000",
    "LicenseKey": "00000000-0000-0000-0000-000000000000",
    "ScheduledDateTime": scheduled_date_time,
    "To": ["7575559999"],
    "UseMMS": True,
}

with httpx.Client(headers=headers) as client:
    response = client.post(url=url, json=request)

response.raise_for_status()

print(response.json())
require 'date_core'
require 'json'
require 'net/http'

headers = { Accept: 'application/json', 'Content-Type': 'application/json' }
uri = URI('https://messaging.esendex.us/Messaging.svc/SendMessage')

# Let's send one minute from now.
dt = Time.now + 60
ms = dt.to_i * 1000
scheduled_date_time = "\/Date(#{ms})\/"

data = {
  'Attachments': ['https://esendex.us/img/docs/example.jpg'],
  'Body': 'Hi, this message was sent using Ruby.',
  'From': '7575550000',
  'LicenseKey': '00000000-0000-0000-0000-000000000000',
  'ScheduledDateTime': scheduled_date_time,
  'To': ['7575559999'],
  'UseMMS': true
}.to_json

response = Net::HTTP.post(uri, data, headers)
raise response.message if response.is_a?(Net::HTTPClientError) || response.is_a?(Net::HTTPServerError)

puts JSON.parse(response.body)
{
	"Attachments": [
		"String content"
	],
	"Body": "String content",
	"Concatenate": true,
	"From": "String content",
	"IsUnicode": true,
	"LicenseKey": "1627aea5-8e0a-4371-9022-9b504344e724",
	"PostbackUrl": "String content",
	"ReferenceID": "String content",
	"ScheduledDateTime": "\/Date(928164000000-0400)\/",
	"Subject": "String content",
	"To": [
		"String content"
	],
	"UseMMS": true
}
[
	{
		"Attachments": "String content",
		"From": "String content",
		"MessageID": "1627aea5-8e0a-4371-9022-9b504344e724",
		"MessageStatus": 0,
		"SentTime": "\/Date(928164000000-0400)\/",
		"To": "String content"
	}
]
<OutgoingMessageRequest xmlns="http://sms2.cdyne.com">
  <Attachments>
    <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">String content</string>
    <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">String content</string>
  </Attachments>
  <Body>String content</Body>
  <Concatenate>true</Concatenate>
  <From>String content</From>
  <IsUnicode>true</IsUnicode>
  <LicenseKey>1627aea5-8e0a-4371-9022-9b504344e724</LicenseKey>
  <PostbackUrl>String content</PostbackUrl>
  <ReferenceID>String content</ReferenceID>
  <ScheduledDateTime>1999-05-31T11:20:00</ScheduledDateTime>
  <Subject>String content</Subject>
  <To>
    <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">String content</string>
    <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">String content</string>
  </To>
  <UseMMS>true</UseMMS>
</OutgoingMessageRequest>
<ArrayOfOutgoingMessageResponse xmlns="http://sms2.cdyne.com">
  <OutgoingMessageResponse>
    <Attachments>String content</Attachments>
    <From>String content</From>
    <MessageID>1627aea5-8e0a-4371-9022-9b504344e724</MessageID>
    <MessageStatus>Hold</MessageStatus>
    <SentTime>1999-05-31T11:20:00</SentTime>
    <To>String content</To>
  </OutgoingMessageResponse>
  <OutgoingMessageResponse>
    <Attachments>String content</Attachments>
    <From>String content</From>
    <MessageID>1627aea5-8e0a-4371-9022-9b504344e724</MessageID>
    <MessageStatus>Hold</MessageStatus>
    <SentTime>1999-05-31T11:20:00</SentTime>
    <To>String content</To>
  </OutgoingMessageResponse>
</ArrayOfOutgoingMessageResponse>