メッセージを送信する

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

MessagesへのHTTP POST

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

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

POSTパラメーター

必須パラメーター

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

パラメーター 説明
To SMSまたはMMSの宛先電話番号、またはサードパーティーのChannelのChannelユーザーアドレスです。 宛先電話番号は「+」記号と国コードを含めなければなりません。 例: +818012345678 (E.164形式と呼ばれます)

トライアル期間中にメッセージの送信を行う場合、「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 Node helper library from twilio.com/docs/node/install
// These consts are your accountSid and authToken from https://www.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!",
    to: '+15558675310',
    from: '+14158141829',
    mediaUrl: 'http://www.example.com/cheeseburger.png',
  })
  .then(message => process.stdout.write(message.sid));
// 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
// Download the twilio-csharp library from twilio.com/docs/libraries/csharp
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
using System.Collections.Generic;

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

        var mediaUrl = new List<Uri>() {
            new Uri("http://www.example.com/cheeseburger.png")
        };
        var to = new PhoneNumber("+14158141829");
        var message = MessageResource.Create(to,
                                             from: new PhoneNumber("+15558675310"),
                                             body: "Let's grab lunch at Milliways tomorrow!",
                                             mediaUrl: mediaUrl);

        Console.WriteLine(message.Sid);
    }
}
<?php
// Get the PHP helper library from https://twilio.com/docs/libraries/php
require_once '/path/to/vendor/autoload.php'; // Loads the library
use Twilio\Rest\Client;

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

$client->messages
    ->create(
        "+15558675310",
        array(
            "from" => "+14158141829",
            "body" => "Let's grab lunch at Milliways tomorrow!",
            "mediaUrl" => "http://www.example.com/cheeseburger.png"
        )
    );
# 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)
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'

# put your own credentials here
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new(account_sid, auth_token)

message = @client.messages.create(
  body: 'Ahoy, World!',
  to: '+15558675310',
  from: '+14158141829',
  media_url: 'http://www.example.com/cheeseburger.png'
)

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 Python helper library from twilio.com/docs/python/install
from twilio.rest import Client

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

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

print(message.sid)
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

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) {
    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

    Message message = Message
        .creator(new PhoneNumber("+15558675310"), new PhoneNumber("+14158141829"),
            "Let's grab lunch at Milliways tomorrow!")
        .setMediaUrl("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 -XPOST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json \
    -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'
{
   "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
   "api_version": "2010-04-01",
   "body": "Let's grab lunch at Milliways tomorrow!",
   "num_segments": "1",
   "num_media": "1",
   "date_created": "Wed, 18 Aug 2010 20:01:40 +0000",
   "date_sent": null,
   "date_updated": "Wed, 18 Aug 2010 20:01:40 +0000",
   "direction": "outbound-api",
   "error_code": null,
   "error_message": null,
   "from": "+14158141829",
   "price": null,
   "sid": "MM90c6fc909d8504d45ecdb3a3d5b3556e",
   "status": "queued",
   "to": "+15558675310",
   "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MM90c6fc909d8504d45ecdb3a3d5b3556e.json"
}
<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 送信しようとしているメッセージの種類について有効なTwilio電話番号(E.164形式)、英数字の送信者ID、またはChannelエンドポイントアドレスです。 Twilioで購入した電話番号またはショートコードが使用できます。 (例として)ご自身の携帯電話から送信したようにメッセージを偽装することはできません。
MessagingServiceSid このメッセージに関連付けたいMessaging Serviceの34文字の一意な識別子です。 このパラメーターを設定して、構成済みのMessaging Service設定とCopilot機能を使用します。このパラメーターのみ設定されている場合、Twilioはユーザーがオンに設定しているCopilot機能を使用して配信用のFrom電話番号を選択します。

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

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

パラメーター 説明
Body 送信したいメッセージの本文で、最大1600文字まで可能です。
MediaUrl メッセージと一緒に送信したいメディアのURLです。 gifpng、およびjpeg のコンテンツが現在サポートされており、受信側デバイスで正しい形式に変換されます。 その他の形式もAPIによって受け入れられます。メディアのサイズ上限は5MBです。 複数のイメージを本文に入れて送りたい場合は複数のMediaUrl値をPOSTリクエストに入れて下さい。1メッセージにつき最大10個のMediaUrlsを含めることができます。

メッセージ本文 (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がサポートされます。

オプションパラメーター

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

パラメーター 説明
StatusCallback メッセージのステータスが変化するごとにTwilioがPOSTリクエストを送信する先のURLです。 対象となるステーテスは以下になります: queuedfailedsentdelivered、またはundelivered。 TwilioはMessageSidを、MessageStatusおよびErrorCodeといった他の標準リクエストパラメーターと共に送信します。 MessagingServiceSidに加えてこのパラメーターが渡されると、Messaging ServiceのステータスコールバックURLよりもこのパラメーターが優先されます。 URLには有効なホスト名が含まれていることが必要です(アンダースコアは使用できません)。
ApplicationSid TwilioはMessageStatus=sentまたはMessageStatus=failedに加えてMessageSidをこのアプリケーションのMessageStatusCallbackに送信します。 上記のStatusCallbackパラメーターも渡された場合、アプリケーションのMessageStatusCallbackパラメーターが優先されます。
MaxPrice 配信されるメッセージに対して許容できる最大金額の合計(小数点第4位までの米ドル単位)です。 指定された金額に関わらず、すべてのメッセージは配信用の待ち行列に入れられます。 後々、ステータスコールバックURLに「Sent(送信済み)」または「Failed(失敗)」のステータス変更のPOSTリクエストが送信されます。 メッセージに金額がこの値を上回った場合は、メッセージは失敗 (Failed) し、送信は行われません。 MaxPriceが指定されない場合、いかなる金額のメッセージも許容されます。
ProvideFeedback 追跡可能なユーザーアクションを含むメッセージを送信し、Message Feedback APIを使用してメッセージの配信を確認したい場合は、この値を true に設定します。このパラメーターは既定で false に設定されています。
ValidityPeriod メッセージがTwilioのキューに滞留できる秒数です。 この時間制限を超過すると、メッセージ送信は失敗し、後にステータスコールバックURLにPOSTリクエストが発行されます。 有効な値は1〜14400秒(既定)です。 キャリアーによるメッセージの受け入れ後、メッセージがキューに入らないことをTwilioが保証できない点についてご留意ください。 5秒未満の有効期限を使用しないことを推奨します。

リクエストパラメーター

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

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

Messaging Services

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

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

メッセージを送信する際、1 つまたは複数の電話番号とショートコードをメッセージングサービスに関連付ける必要があります。アウトバウンドメッセージを送信するたびに、有効なコパイロット機能に基づいて、メッセージングサービスに関連付けられている電話番号の 1 つが選択されます。

英数字の送信者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 Node helper library from twilio.com/docs/node/install
// These consts are your accountSid and authToken from https://www.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!",
    to: '+15558675310',
    from: '+14158141829',
    mediaUrl: 'http://www.example.com/cheeseburger.png',
  })
  .then(message => process.stdout.write(message.sid));
// 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
// Download the twilio-csharp library from twilio.com/docs/libraries/csharp
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
using System.Collections.Generic;

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

        var mediaUrl = new List<Uri>() {
            new Uri("http://www.example.com/cheeseburger.png")
        };
        var to = new PhoneNumber("+14158141829");
        var message = MessageResource.Create(to,
                                             from: new PhoneNumber("+15558675310"),
                                             body: "Let's grab lunch at Milliways tomorrow!",
                                             mediaUrl: mediaUrl);

        Console.WriteLine(message.Sid);
    }
}
<?php
// Get the PHP helper library from https://twilio.com/docs/libraries/php
require_once '/path/to/vendor/autoload.php'; // Loads the library
use Twilio\Rest\Client;

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

$client->messages
    ->create(
        "+15558675310",
        array(
            "from" => "+14158141829",
            "body" => "Let's grab lunch at Milliways tomorrow!",
            "mediaUrl" => "http://www.example.com/cheeseburger.png"
        )
    );
# 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)
require 'rubygems' # not necessary with ruby 1.9 but included for completeness
require 'twilio-ruby'

# put your own credentials here
account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
auth_token = 'your_auth_token'

# set up a client to talk to the Twilio REST API
@client = Twilio::REST::Client.new(account_sid, auth_token)

message = @client.messages.create(
  body: 'Ahoy, World!',
  to: '+15558675310',
  from: '+14158141829',
  media_url: 'http://www.example.com/cheeseburger.png'
)

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 Python helper library from twilio.com/docs/python/install
from twilio.rest import Client

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

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

print(message.sid)
// Install the Java helper library from twilio.com/docs/java/install
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

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) {
    Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

    Message message = Message
        .creator(new PhoneNumber("+15558675310"), new PhoneNumber("+14158141829"),
            "Let's grab lunch at Milliways tomorrow!")
        .setMediaUrl("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 -XPOST https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json \
    -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'
{
   "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
   "api_version": "2010-04-01",
   "body": "Let's grab lunch at Milliways tomorrow!",
   "num_segments": "1",
   "num_media": "1",
   "date_created": "Wed, 18 Aug 2010 20:01:40 +0000",
   "date_sent": null,
   "date_updated": "Wed, 18 Aug 2010 20:01:40 +0000",
   "direction": "outbound-api",
   "error_code": null,
   "error_message": null,
   "from": "+14158141829",
   "price": null,
   "sid": "MM90c6fc909d8504d45ecdb3a3d5b3556e",
   "status": "queued",
   "to": "+15558675310",
   "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MM90c6fc909d8504d45ecdb3a3d5b3556e.json"
}
<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>