メッセージの送信

SMSとMMSの送信はTwilioのシステムでは共通のタスクとして扱われます。 メッセージの送信はMessagesリソースにPOSTを行うだけで簡単に行えます。 必須およびオプションのパラメーター、Messaging Services英数字の送信者ID時間あたりの送信数の制限、およびメッセージへの返信について以下に概説します。

If you're looking to send and verify tokens via SMS, check out our account security APIs for Authy (2FA) and Verify (Phone Verification).

MessagesへのHTTP POST

新しいメッセージを送信するには、Messagesリストリソース のURIに対してHTTP POSTリクエストを送信します。

/2010-04-01/Accounts/{AccountSid}/Messages

POSTパラメーター

必須パラメーター

メッセージの送信には、POSTリクエストにToパラメーターを含めることが必須となります。

名前 概要
To

Required. The destination phone number for SMS/MMS or a Channel user address for other 3rd party channels. Destination phone numbers should be formatted with a '+' and country code e.g., +16175551212 (E.164 format). (📇 PII MTL: 120 days)

トライアル期間中にメッセージの送信を行う場合、「To」電話番号はTwilioで検証されていることが必要です。 Console内で検証済み電話番号を追加できます。

画像のURLを含むメッセージを送信する

有名な映画からの引用と画像の付いたメッセージを送りましょう。 テキストのみのメッセージは地球上のどこにでも送信できますが、画像を送信できるのは、現在は米国とカナダのみです。

コードサンプルを読み込んでいます...
Language
SDKバージョン:
  • 4.x
  • 5.x
レスポンス形式:
  • JSON
  • xml
SDKバージョン:
  • 6.x
  • 7.x
SDKバージョン:
  • 2.x
  • 3.x
SDKバージョン:
  • 4.x
  • 5.x
SDKバージョン:
  • 5.x
  • 6.x
SDKバージョン:
  • 4.x
  • 5.x
形式:
  • JSON
  • XML
// Download the Node helper library from twilio.com/docs/node/install
// These vars are your accountSid and authToken from twilio.com/user/account
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);

client.messages.create(
  {
    body: "Let's grab lunch at Milliways tomorrow!",
    to: '+15558675310',
    from: '+14158141829',
    mediaUrl: 'http://www.example.com/cheeseburger.png',
  },
  (err, message) => {
    process.stdout.write(message.sid);
  }
);
// Download the helper library from https://www.twilio.com/docs/node/install
// Your Account Sid and Auth Token from twilio.com/console
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);

client.messages
      .create({
         body: `Let's grab lunch at Milliways tomorrow!`,
         from: '+14158141829',
         mediaUrl: 'http://www.example.com/cheeseburger.png',
         to: '+15558675310'
       })
      .then(message => console.log(message.sid))
      .done();
// Download the twilio-csharp library from twilio.com/docs/csharp/install
using System;
using Twilio;
class Example 
{
  static void Main(string[] args) 
  {
    // Find your Account Sid and Auth Token at twilio.com/user/account
    string AccountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    string AuthToken = "your_auth_token";
    var twilio = new TwilioRestClient(AccountSid, AuthToken);

    
    var message = twilio.SendMessage("+14158141829", "+15558675310", "Let's grab lunch at Milliways tomorrow!", new string[] {"http://www.example.com/cheeseburger.png"});
    
    Console.WriteLine(message.Sid);
  }
}
<?php
// Get the PHP helper library from https://twilio.com/docs/libraries/php
require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "your_auth_token"; 
$client = new Services_Twilio($sid, $token);

$client->account->messages->sendMessage("+14158141829", "+15558675310", "Let's grab lunch at Milliways tomorrow!", "http://www.example.com/cheeseburger.png");
# Get twilio-ruby from twilio.com/docs/ruby/install
require 'rubygems' # This line not needed for ruby > 1.8
require 'twilio-ruby'

# Get your Account Sid and Auth Token from twilio.com/user/account
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio::REST::Client.new account_sid, auth_token

message = @client.account.messages.create(
  body: "Let's grab lunch at Milliways tomorrow!",
  to: '+15558675310',
  from: '+14158141829',
  media_url: 'http://www.example.com/cheeseburger.png'
)
puts message.to
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

using System;
using Twilio;
using Twilio.Converters;
using Twilio.Rest.Api.V2010.Account;


class Program 
{
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var message = MessageResource.Create(
            body: "Let's grab lunch at Milliways tomorrow!",
            from: new Twilio.Types.PhoneNumber("+14158141829"),
            mediaUrl: Promoter.ListOfOne(new Uri("http://www.example.com/cheeseburger.png")),
            to: new Twilio.Types.PhoneNumber("+15558675310"),
            pathAccountSid: "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        );

        Console.WriteLine(message.Sid);
    }
}
<?php

// Update the path below to your autoload.php,
// see https://getcomposer.org/doc/01-basic-usage.md
require_once '/path/to/vendor/autoload.php';

use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/console
$sid    = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token  = "your_auth_token";
$twilio = new Client($sid, $token);

$message = $twilio->messages
                  ->create("+15558675310",
                           array(
                               "body" => "Let's grab lunch at Milliways tomorrow!",
                               "from" => "+14158141829",
                               "mediaUrl" => "http://www.example.com/cheeseburger.png"
                           )
                  );

print($message->sid);
# Download the Python helper library from twilio.com/docs/python/install
from twilio.rest import TwilioRestClient

# Your Account Sid and Auth Token from twilio.com/user/account
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = TwilioRestClient(account_sid, auth_token)

message = client.messages.create(
    body="Let's grab lunch at Milliways tomorrow!",
    to="+15558675310",
    from_="+14158141829",
    media_url="http://www.example.com/cheeseburger.png"
)
print(message.sid)
# Download the helper library from https://www.twilio.com/docs/ruby/install
require 'rubygems'
require 'twilio-ruby'

# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio::REST::Client.new(account_sid, auth_token)

message = @client.messages
                 .create(
                    body: "Let's grab lunch at Milliways tomorrow!",
                    from: '+14158141829',
                    media_url: 'http://www.example.com/cheeseburger.png',
                    to: '+15558675310'
                  )

puts message.sid
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.sdk.TwilioRestClient;
import com.twilio.sdk.TwilioRestException;
import com.twilio.sdk.resource.factory.MessageFactory;
import com.twilio.sdk.resource.instance.Message;
import com.twilio.sdk.resource.list.MessageList;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

public class Example { 

  // Find your Account Sid and Token at twilio.com/user/account
  public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  public static final String AUTH_TOKEN = "your_auth_token";

  public static void main(String[] args) throws TwilioRestException {
    TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

    // Build a filter for the MessageList
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("Body", "Let's grab lunch at Milliways tomorrow!"));
    params.add(new BasicNameValuePair("To", "+15558675310"));
    params.add(new BasicNameValuePair("From", "+14158141829"));
    params.add(new BasicNameValuePair("MediaUrl", "http://www.example.com/cheeseburger.png"));
    
    
    MessageFactory messageFactory = client.getAccount().getMessageFactory();
    Message message = messageFactory.create(params);
    System.out.println(message.getSid());
  }
}
# Download the helper library from https://www.twilio.com/docs/python/install
from twilio.rest import Client


# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
client = Client(account_sid, auth_token)

message = client.messages \
                .create(
                     body="Let's grab lunch at Milliways tomorrow!",
                     from_='+14158141829',
                     media_url='http://www.example.com/cheeseburger.png',
                     to='+15558675310'
                 )

print(message.sid)
// Install the Java helper library from twilio.com/docs/java/install

import com.twilio.Twilio;
import com.twilio.converter.Promoter;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

import java.net.URI;

public class Example {
    // Find your Account Sid and Token at twilio.com/console
    public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    public static final String AUTH_TOKEN = "your_auth_token";

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Message message = Message.creator(
                new com.twilio.type.PhoneNumber("+15558675310"),
                new com.twilio.type.PhoneNumber("+14158141829"),
                "Let's grab lunch at Milliways tomorrow!")
            .setMediaUrl(
                Promoter.listOfOne(URI.create("http://www.example.com/cheeseburger.png")))
            .create();

        System.out.println(message.getSid());
    }
}
curl -XPOST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages \
    -d "Body=Let%27s%20grab%20lunch%20at%20Milliways%20tomorrow!" \
    -d "To=%2B15558675310" \
    -d "From=%2B14158141829" \
    -d "MediaUrl=http://www.example.com/cheeseburger.png" \
    -u 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token'
curl -X POST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json \
--data-urlencode "Body=Let's grab lunch at Milliways tomorrow!" \
--data-urlencode "From=+14158141829" \
--data-urlencode "MediaUrl=http://www.example.com/cheeseburger.png" \
--data-urlencode "To=+15558675310" \
-u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token
{
  "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "api_version": "2010-04-01",
  "body": "Let's grab lunch at Milliways tomorrow!",
  "date_created": "Thu, 30 Jul 2015 20:12:31 +0000",
  "date_sent": "Thu, 30 Jul 2015 20:12:33 +0000",
  "date_updated": "Thu, 30 Jul 2015 20:12:33 +0000",
  "direction": "outbound-api",
  "error_code": null,
  "error_message": null,
  "from": "+14158141829",
  "messaging_service_sid": "MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "num_media": "0",
  "num_segments": "1",
  "price": "-0.00750",
  "price_unit": "USD",
  "sid": "MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "status": "sent",
  "subresource_uris": {
    "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Media.json"
  },
  "to": "+15558675310",
  "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json",
  "media_url": "http://www.example.com/cheeseburger.png"
}
<TwilioResponse>
	<Message>
		<Sid>MM90c6fc909d8504d45ecdb3a3d5b3556e</Sid>
		<DateCreated>Wed, 18 Aug 2010 20:01:40 +0000</DateCreated>
		<DateUpdated>Wed, 18 Aug 2010 20:01:40 +0000</DateUpdated>
		<DateSent/>
		<AccountSid>ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</AccountSid>
		<From>+14159352345</From>
		<To>+15558675310</To>
		<Body>Let's grab lunch at Milliways tomorrow!</Body>
        <NumSegments>1</NumSegments>
        <NumMedia>1</NumMedia>
		<Status>queued</Status>
		<Direction>outbound-api</Direction>
		<ApiVersion>2010-04-01</ApiVersion>
		<Price/>
		<PriceUnit>/>
		<ErrorCode/>
		<ErrorMessage/>
		<Uri>/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MM90c6fc909d8504d45ecdb3a3d5b3556e</Uri>
	</Message>
</TwilioResponse>
イメージ URL 付きメッセージの送信

条件付きパラメーター

メッセージの「From」電話番号または送信者IDを決定するために、下記のパラメーターのうちどれかを最低ひとつ指定することが必要です。

パラメーター 概要
From A Twilio phone number (in E.164 format), alphanumeric sender ID or a Channel Endpoint address enabled for the type of message you wish to send. Phone numbers or short codes purchased from Twilio work here. You cannot (for example) spoof messages from your own cell phone number (📇 PII MTL: 120 days).
MessagingServiceSid The 34 character unique id of the Messaging Service you want to associate with this Message. Set this parameter to use the Messaging Service Settings and Copilot Features you have configured. When only this parameter is set, Twilio will use your enabled Copilot Features to select the From phone number for delivery (🏢 not PII).

MessagingServiceSidパラメーターの指定時は、APIのレスポンスが少し異なります。 From番号のみの指定時は、Twilioは電話番号を同期的に確認し、queuedステータス、またはエラーを返します。 MessagingServiceSidパラメーターの指定時は、Twilioはまずacceptedステータスを返します。Twilioは続いて最適なFrom電話番号を決定し、配信ステータスはStatusCallback URLに非同期で送信されます。

メッセージのコンテンツには、下記のパラメーターのうち最低ひとつをPOSTすることが必要です。

パラメーター 概要
Body The text of the message you want to send, limited to 1600 characters (📇 PII MTL: 30 days).
MediaUrl The URL of the media you wish to send out with the message. gif , png and jpeg content is currently supported and will be formatted correctly on the recipient's device. Other types are also accepted by the API. The media size limit is 5MB. If you wish to send more than one image in the message body, please provide multiple MediaUrls values in the POST request. You may include up to 10 MediaUrls per message (🏢 not PII).

メッセージ本文 (Body) に非BMP文字を使用して送信を行う場合、送信可能な文字数は1,600より少なくなる可能性があります。 非BMPキャラクタープレーンを使用しなくても、ほぼ全世界の言語をサポートできます。

MediaUrlを指定せず、かつbodyがGSM-7における160文字(日本語などのUCS-2における70文字)を超える場合、メッセージは分割SMSとして送信され、分割数に応じて課金されます。

MediaUrlのコンテンツタイプのチェックは、提供されたURLのcontent-typeヘッダーにより取得されます。content-typeヘッダーがメディアと一致しない場合、Twilioはリクエストを拒否します。 Twilioではimage/gif、image/png、およびimage/jpeg、その他多くのmime-typeがサポートされます。

オプションパラメーター

次のパラメーターを含めることができます。

名前 概要
ApplicationSid

Optional. Twilio will POST MessageSid as well as MessageStatus=sent or MessageStatus=failed to the URL in the MessageStatusCallback property of this Application. If the StatusCallback parameter above is also passed, the Application's MessageStatusCallback parameter will take precedence. (🏢 not PII)

MaxPrice

Optional. The total maximum price up to the fourth decimal (0.0001) in US dollars acceptable for the message to be delivered. All messages regardless of the price point will be queued for delivery. A POST request will later be made to your Status Callback URL with a status change of 'Sent' or 'Failed'. When the price of the message is above this value the message will fail and not be sent. When MaxPrice is not set, all prices for the message is accepted. (🏢 not PII)

ProvideFeedback

Optional. Set this value to true if you are sending messages that have a trackable user action and you intend to confirm delivery of the message using the Message Feedback API. This parameter is set to false by default. (🏢 not PII)

StatusCallback

Optional. A URL where Twilio will POST each time your message status changes to one of the following: queued, failed, sent, delivered, or undelivered. Twilio will POST the MessageSid along with the other standard request parameters as well as MessageStatus and ErrorCode. If this parameter passed in addition to a MessagingServiceSid, Twilio will override the Status Callback URL of the Messaging Service. URLs must contain a valid hostname (underscores are not allowed). (🏢 not PII)

ValidityPeriod

Optional. The number of seconds that the message can remain in a Twilio queue. After exceeding this time limit, the message will fail and a POST request will later be made to your Status Callback URL. Valid values are between 1 and 14400 seconds (the default). Please note that Twilio cannot guarantee that a message will not be queued by the carrier after they accept the message. We do not recommend setting validity periods of less than 5 seconds. (🏢 not PII)

リクエストパラメーター

StatusCallback URLへのリクエストの中でTwilioが開発者のアプリケーションに渡すパラメーターにはすべての標準リクエストパラメーターに加えて、下記の追加パラメーターも渡されます。

パラメーター 概要
MessageStatus メッセージのステータスです。 メッセージの配信情報はメッセージステータスに反映されます。 取りうる値はMessage Resourceに一覧されています
ErrorCode メッセージに関連づけられたエラーコードです。 メッセージステータスがfailedまたはundeliveredの場合、ErrorCodeで失敗についての追加情報を取得できる場合があります。 メッセージの配信に成功した場合、ErrorCodeは取りうる値は、Messageリソースにてご確認ください。
ChannelInstallSid メッセージの送信に使用される、インストール済のChannelのSID(Channel詳細ページにて確認できます)です。 Channelを使用して送信されるメッセージにのみ存在します。
ChannelStatusMessage メッセージの配信失敗時にChannelによって返されるエラーメッセージです。 メッセージがChannelによって送信され、かつ配信に失敗した場合にのみ存在します。
ChannelPrefix このメッセージの送信されたChannelを識別するためのChannel固有のプレフィックスです。

Messaging Services

Twilioによるメッセージ送信をさまざまなユースケースで活用していく中で、アカウントとメッセージログを別々のMessaging Serviceに分割すると便利な場合があります。 Messaging Serviceを使用するとメッセージを整理したり、これらのメッセージ群に対して特定の機能を有効にしたりできます。 これによりコードをごちゃつかせることなく、アカウントポータルからすぐにメッセージ送信の構成を調整できるようになります。

Messaging Serviceでは毎回、受信リクエストURL、およびステータスコールバックURLから構成を始めます。 高度な構成については、TwilioのCopilot機能を使用してアプリケーションにインテリジェント機能を追加できます。

メッセージの送信時は、一つ以上の電話番号やショートコードをMessaging Serviceに関連付けることが必要です。 メッセージ送信の際は、オンにされたCopilotの機能に基づいてMessaging Service内のいずれかの電話番号が選択されます。

英数字の送信者ID

英数字の送信者IDはブランド名を使用する一方向のメッセージ送信に使用されます。 英数字の送信者IDはサポートされている国においては追加料金なしでSMS送信に使用できます(日本国内では一部の携帯キャリアーでサポートされません)。 使用できる文字は大文字および小文字のASCII文字、および0〜9までの数字と空白です: 正規表現 - [A-Za-z0-9 ] 。 英数字の送信者IDを使用する際は、最低1文字から最大11文字の英数字を使用できます。

英数字の送信者IDはSMS設定からオンにすることができます。

時間あたりの送信数制限

メッセージの送信先の国によっては、それぞれの国ごとに異なる送信速度の制限が適用されることがあります。 たとえば、米国やカナダの送信さきに対しては、1秒につき1メッセージです。 日本を含むその他の国については、秒間10メッセージです。 詳細については、こちらのFAQを参照してください。

多数のメッセージをすばやく送信する必要がある場合(期間限定の広告など)や、1秒につき1件よりも速いペースで送信しなければならない場合は、追加の電話番号を購入して、発信のキャパシティーを増やすことができます。

ショートコードはロングコード(通常の電話番号)の制限が課されない傾向があり、より良い選択肢となりえます。 ショートコードについてのFAQを参照して最適な方法を検討してください(日本国内ではショートコードは使用できません)。

メッセージの返信の処理

メッセージ送信機能を持つTwilio電話番号でMessage URLを指定すると、送信されたメッセージに相手が返信を行った際にTwilioは開発者のアプリケーションに通知目的のリクエストを送信します。 Twilioのリクエストと、それに対応する開発者のアプリケーションからのレスポンスについては、TwiMLドキュメントのMessageの箇所で取り上げています。 なお、SMSを送信可能な米国のTwilio番号に日本国内の携帯電話からメッセージの送信を行うと、送信側の通信キャリアーによる高額な使用料金がエンドユーザーに課される場合があるため、じゅうぶんご注意ください。

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。

コードサンプルを読み込んでいます...
SDKバージョン:
  • 4.x
  • 5.x
レスポンス形式:
  • JSON
  • xml
SDKバージョン:
  • 6.x
  • 7.x
SDKバージョン:
  • 2.x
  • 3.x
SDKバージョン:
  • 4.x
  • 5.x
SDKバージョン:
  • 5.x
  • 6.x
SDKバージョン:
  • 4.x
  • 5.x
形式:
  • JSON
  • XML
// Download the Node helper library from twilio.com/docs/node/install
// These vars are your accountSid and authToken from twilio.com/user/account
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);

client.messages.create(
  {
    body: "Let's grab lunch at Milliways tomorrow!",
    to: '+15558675310',
    from: '+14158141829',
    mediaUrl: 'http://www.example.com/cheeseburger.png',
  },
  (err, message) => {
    process.stdout.write(message.sid);
  }
);
// Download the helper library from https://www.twilio.com/docs/node/install
// Your Account Sid and Auth Token from twilio.com/console
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);

client.messages
      .create({
         body: `Let's grab lunch at Milliways tomorrow!`,
         from: '+14158141829',
         mediaUrl: 'http://www.example.com/cheeseburger.png',
         to: '+15558675310'
       })
      .then(message => console.log(message.sid))
      .done();
// Download the twilio-csharp library from twilio.com/docs/csharp/install
using System;
using Twilio;
class Example 
{
  static void Main(string[] args) 
  {
    // Find your Account Sid and Auth Token at twilio.com/user/account
    string AccountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    string AuthToken = "your_auth_token";
    var twilio = new TwilioRestClient(AccountSid, AuthToken);

    
    var message = twilio.SendMessage("+14158141829", "+15558675310", "Let's grab lunch at Milliways tomorrow!", new string[] {"http://www.example.com/cheeseburger.png"});
    
    Console.WriteLine(message.Sid);
  }
}
<?php
// Get the PHP helper library from https://twilio.com/docs/libraries/php
require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "your_auth_token"; 
$client = new Services_Twilio($sid, $token);

$client->account->messages->sendMessage("+14158141829", "+15558675310", "Let's grab lunch at Milliways tomorrow!", "http://www.example.com/cheeseburger.png");
# Get twilio-ruby from twilio.com/docs/ruby/install
require 'rubygems' # This line not needed for ruby > 1.8
require 'twilio-ruby'

# Get your Account Sid and Auth Token from twilio.com/user/account
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio::REST::Client.new account_sid, auth_token

message = @client.account.messages.create(
  body: "Let's grab lunch at Milliways tomorrow!",
  to: '+15558675310',
  from: '+14158141829',
  media_url: 'http://www.example.com/cheeseburger.png'
)
puts message.to
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

using System;
using Twilio;
using Twilio.Converters;
using Twilio.Rest.Api.V2010.Account;


class Program 
{
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var message = MessageResource.Create(
            body: "Let's grab lunch at Milliways tomorrow!",
            from: new Twilio.Types.PhoneNumber("+14158141829"),
            mediaUrl: Promoter.ListOfOne(new Uri("http://www.example.com/cheeseburger.png")),
            to: new Twilio.Types.PhoneNumber("+15558675310"),
            pathAccountSid: "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        );

        Console.WriteLine(message.Sid);
    }
}
<?php

// Update the path below to your autoload.php,
// see https://getcomposer.org/doc/01-basic-usage.md
require_once '/path/to/vendor/autoload.php';

use Twilio\Rest\Client;

// Your Account Sid and Auth Token from twilio.com/console
$sid    = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$token  = "your_auth_token";
$twilio = new Client($sid, $token);

$message = $twilio->messages
                  ->create("+15558675310",
                           array(
                               "body" => "Let's grab lunch at Milliways tomorrow!",
                               "from" => "+14158141829",
                               "mediaUrl" => "http://www.example.com/cheeseburger.png"
                           )
                  );

print($message->sid);
# Download the Python helper library from twilio.com/docs/python/install
from twilio.rest import TwilioRestClient

# Your Account Sid and Auth Token from twilio.com/user/account
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = TwilioRestClient(account_sid, auth_token)

message = client.messages.create(
    body="Let's grab lunch at Milliways tomorrow!",
    to="+15558675310",
    from_="+14158141829",
    media_url="http://www.example.com/cheeseburger.png"
)
print(message.sid)
# Download the helper library from https://www.twilio.com/docs/ruby/install
require 'rubygems'
require 'twilio-ruby'

# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
@client = Twilio::REST::Client.new(account_sid, auth_token)

message = @client.messages
                 .create(
                    body: "Let's grab lunch at Milliways tomorrow!",
                    from: '+14158141829',
                    media_url: 'http://www.example.com/cheeseburger.png',
                    to: '+15558675310'
                  )

puts message.sid
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.sdk.TwilioRestClient;
import com.twilio.sdk.TwilioRestException;
import com.twilio.sdk.resource.factory.MessageFactory;
import com.twilio.sdk.resource.instance.Message;
import com.twilio.sdk.resource.list.MessageList;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

public class Example { 

  // Find your Account Sid and Token at twilio.com/user/account
  public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  public static final String AUTH_TOKEN = "your_auth_token";

  public static void main(String[] args) throws TwilioRestException {
    TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

    // Build a filter for the MessageList
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("Body", "Let's grab lunch at Milliways tomorrow!"));
    params.add(new BasicNameValuePair("To", "+15558675310"));
    params.add(new BasicNameValuePair("From", "+14158141829"));
    params.add(new BasicNameValuePair("MediaUrl", "http://www.example.com/cheeseburger.png"));
    
    
    MessageFactory messageFactory = client.getAccount().getMessageFactory();
    Message message = messageFactory.create(params);
    System.out.println(message.getSid());
  }
}
# Download the helper library from https://www.twilio.com/docs/python/install
from twilio.rest import Client


# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'
client = Client(account_sid, auth_token)

message = client.messages \
                .create(
                     body="Let's grab lunch at Milliways tomorrow!",
                     from_='+14158141829',
                     media_url='http://www.example.com/cheeseburger.png',
                     to='+15558675310'
                 )

print(message.sid)
// Install the Java helper library from twilio.com/docs/java/install

import com.twilio.Twilio;
import com.twilio.converter.Promoter;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

import java.net.URI;

public class Example {
    // Find your Account Sid and Token at twilio.com/console
    public static final String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    public static final String AUTH_TOKEN = "your_auth_token";

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Message message = Message.creator(
                new com.twilio.type.PhoneNumber("+15558675310"),
                new com.twilio.type.PhoneNumber("+14158141829"),
                "Let's grab lunch at Milliways tomorrow!")
            .setMediaUrl(
                Promoter.listOfOne(URI.create("http://www.example.com/cheeseburger.png")))
            .create();

        System.out.println(message.getSid());
    }
}
curl -XPOST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages \
    -d "Body=Let%27s%20grab%20lunch%20at%20Milliways%20tomorrow!" \
    -d "To=%2B15558675310" \
    -d "From=%2B14158141829" \
    -d "MediaUrl=http://www.example.com/cheeseburger.png" \
    -u 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token'
curl -X POST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json \
--data-urlencode "Body=Let's grab lunch at Milliways tomorrow!" \
--data-urlencode "From=+14158141829" \
--data-urlencode "MediaUrl=http://www.example.com/cheeseburger.png" \
--data-urlencode "To=+15558675310" \
-u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token
{
  "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "api_version": "2010-04-01",
  "body": "Let's grab lunch at Milliways tomorrow!",
  "date_created": "Thu, 30 Jul 2015 20:12:31 +0000",
  "date_sent": "Thu, 30 Jul 2015 20:12:33 +0000",
  "date_updated": "Thu, 30 Jul 2015 20:12:33 +0000",
  "direction": "outbound-api",
  "error_code": null,
  "error_message": null,
  "from": "+14158141829",
  "messaging_service_sid": "MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "num_media": "0",
  "num_segments": "1",
  "price": "-0.00750",
  "price_unit": "USD",
  "sid": "MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "status": "sent",
  "subresource_uris": {
    "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Media.json"
  },
  "to": "+15558675310",
  "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json",
  "media_url": "http://www.example.com/cheeseburger.png"
}
<TwilioResponse>
	<Message>
		<Sid>MM90c6fc909d8504d45ecdb3a3d5b3556e</Sid>
		<DateCreated>Wed, 18 Aug 2010 20:01:40 +0000</DateCreated>
		<DateUpdated>Wed, 18 Aug 2010 20:01:40 +0000</DateUpdated>
		<DateSent/>
		<AccountSid>ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</AccountSid>
		<From>+14159352345</From>
		<To>+15558675310</To>
		<Body>Let's grab lunch at Milliways tomorrow!</Body>
        <NumSegments>1</NumSegments>
        <NumMedia>1</NumMedia>
		<Status>queued</Status>
		<Direction>outbound-api</Direction>
		<ApiVersion>2010-04-01</ApiVersion>
		<Price/>
		<PriceUnit>/>
		<ErrorCode/>
		<ErrorMessage/>
		<Uri>/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MM90c6fc909d8504d45ecdb3a3d5b3556e</Uri>
	</Message>
</TwilioResponse>