REST API: Applications
An Application Resource (also referred to as a "TwiML Application" or "TwiML App") represents a collection of endpoints that return TwiML instructions to Twilio. TwiML Applications are most commonly used for the Voice SDKs to handle outbound calls, but can also be used to configure multiple phone numbers with the same set of TwiML endpoints.
The Applications list resource represents the set of an account's Twilio
applications. You can POST
to the list resource to create a new application.
Note that accounts can contain at most 1000 applications.
Applications are useful for encapsulating configuration information that you
need to distribute across multiple phone numbers. You can assign an
ApplicationSid to an IncomingPhoneNumber to tell Twilio to use the application's
URLs instead of the ones set directly on the IncomingPhoneNumber. So if you
create an application with its VoiceUrl set to http://myapp.com/answer(link takes you to an external page) , you can
assign that application to all of your phone numbers and Twilio will make a
request to that URL whenever a call comes in.
Property name Type Required Description Child properties
account_sid SID<AC> Optional The SID of the Account that created the Application resource.
Pattern: ^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
api_version string Optional The API version used to start a new TwiML session.
date_created string<date-time-rfc-2822> Optional date_updated string<date-time-rfc-2822> Optional friendly_name string Optional The string that you assigned to describe the resource.
message_status_callback string<uri> Optional The URL we call using a POST method to send message status information to your application.
The unique string that that we created to identify the Application resource.
Pattern: ^AP[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
sms_fallback_method enum<http-method> Optional The HTTP method we use to call sms_fallback_url
. Can be: GET
or POST
.
sms_fallback_url string<uri> Optional The URL that we call when an error occurs while retrieving or executing the TwiML from sms_url
.
sms_method enum<http-method> Optional The HTTP method we use to call sms_url
. Can be: GET
or POST
.
sms_status_callback string<uri> Optional The URL we call using a POST method to send status information to your application about SMS messages that refer to the application.
sms_url string<uri> Optional The URL we call when the phone number receives an incoming SMS message.
status_callback string<uri> Optional The URL we call using the status_callback_method
to send status information to your application.
status_callback_method enum<http-method> Optional The HTTP method we use to call status_callback
. Can be: GET
or POST
.
The URI of the resource, relative to https://api.twilio.com
.
voice_caller_id_lookup boolean Optional Whether we look up the caller's caller-ID name from the CNAM database (additional charges apply). Can be: true
or false
.
voice_fallback_method enum<http-method> Optional The HTTP method we use to call voice_fallback_url
. Can be: GET
or POST
.
voice_fallback_url string<uri> Optional The URL that we call when an error occurs retrieving or executing the TwiML requested by url
.
voice_method enum<http-method> Optional The HTTP method we use to call voice_url
. Can be: GET
or POST
.
voice_url string<uri> Optional The URL we call when the phone number assigned to this application receives a call.
public_application_connect_enabled boolean Optional Whether to allow other Twilio accounts to dial this applicaton using Dial verb. Can be: true
or false
.
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Applications.json
Creates a new application within your account.
If successful, Twilio responds with a representation of the new application.
Property name Type Required PII Description
AccountSid SID<AC> required The SID of the Account that will create the resource.
Pattern: ^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
Encoding type: application/x-www-form-urlencoded
Property name Type Required Description Child properties
The API version to use to start a new TwiML session. Can be: 2010-04-01
or 2008-08-01
. The default value is the account's default API version.
VoiceUrl string<uri> Optional The URL we should call when the phone number assigned to this application receives a call.
VoiceMethod enum<http-method> Optional The HTTP method we should use to call voice_url
. Can be: GET
or POST
.
VoiceFallbackUrl string<uri> Optional The URL that we should call when an error occurs retrieving or executing the TwiML requested by url
.
VoiceFallbackMethod enum<http-method> Optional The HTTP method we should use to call voice_fallback_url
. Can be: GET
or POST
.
StatusCallback string<uri> Optional The URL we should call using the status_callback_method
to send status information to your application.
StatusCallbackMethod enum<http-method> Optional The HTTP method we should use to call status_callback
. Can be: GET
or POST
.
VoiceCallerIdLookup boolean Optional Whether we should look up the caller's caller-ID name from the CNAM database (additional charges apply). Can be: true
or false
.
SmsUrl string<uri> Optional The URL we should call when the phone number receives an incoming SMS message.
SmsMethod enum<http-method> Optional The HTTP method we should use to call sms_url
. Can be: GET
or POST
.
SmsFallbackUrl string<uri> Optional The URL that we should call when an error occurs while retrieving or executing the TwiML from sms_url
.
SmsFallbackMethod enum<http-method> Optional The HTTP method we should use to call sms_fallback_url
. Can be: GET
or POST
.
SmsStatusCallback string<uri> Optional The URL we should call using a POST method to send status information about SMS messages sent by the application.
MessageStatusCallback string<uri> Optional The URL we should call using a POST method to send message status information to your application.
FriendlyName string Optional A descriptive string that you create to describe the new application. It can be up to 64 characters long.
PublicApplicationConnectEnabled boolean Optional Whether to allow other Twilio accounts to dial this applicaton using Dial verb. Can be: true
or false
.
{
"FriendlyName" : "friendly_name" ,
"MessageStatusCallback" : "https://example.com" ,
"SmsFallbackMethod" : "GET" ,
"SmsFallbackUrl" : "https://example.com" ,
"SmsMethod" : "GET" ,
"SmsStatusCallback" : "https://example.com" ,
"SmsUrl" : "https://example.com" ,
"StatusCallback" : "https://example.com" ,
"StatusCallbackMethod" : "GET" ,
"VoiceCallerIdLookup" : true ,
"VoiceFallbackMethod" : "GET" ,
"VoiceFallbackUrl" : "https://example.com" ,
"VoiceMethod" : "GET" ,
"VoiceUrl" : "https://example.com" ,
"PublicApplicationConnectEnabled" : true
}
_20 // Download the helper library from https://www.twilio.com/docs/node/install
_20 const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_20 // Find your Account SID and Auth Token at twilio.com/console
_20 // and set the environment variables. See http://twil.io/secure
_20 const accountSid = process.env.TWILIO_ACCOUNT_SID;
_20 const authToken = process.env.TWILIO_AUTH_TOKEN;
_20 const client = twilio(accountSid, authToken);
_20 async function createApplication() {
_20 const application = await client.applications.create({
_20 friendlyName: "Phone Me",
_20 voiceUrl: "http://demo.twilio.com/docs/voice.xml",
_20 console.log(application.accountSid);
_23 "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23 "api_version": "2010-04-01",
_23 "date_created": "Mon, 22 Aug 2011 20:59:45 +0000",
_23 "date_updated": "Tue, 18 Aug 2015 16:48:57 +0000",
_23 "friendly_name": "Phone Me",
_23 "message_status_callback": "http://www.example.com/sms-status-callback",
_23 "sid": "APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_23 "sms_fallback_method": "GET",
_23 "sms_fallback_url": "http://www.example.com/sms-fallback",
_23 "sms_status_callback": "http://www.example.com/sms-status-callback",
_23 "sms_url": "http://example.com",
_23 "status_callback": "http://example.com",
_23 "status_callback_method": "GET",
_23 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications/APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
_23 "voice_caller_id_lookup": false,
_23 "voice_fallback_method": "GET",
_23 "voice_fallback_url": "http://www.example.com/voice-callback",
_23 "voice_method": "GET",
_23 "voice_url": "http://demo.twilio.com/docs/voice.xml",
_23 "public_application_connect_enabled": true
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Applications/{Sid}.json
Property name Type Required PII Description
AccountSid SID<AC> required The SID of the Account that created the Application resource to fetch.
Pattern: ^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The Twilio-provided string that uniquely identifies the Application resource to fetch.
Pattern: ^AP[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
_18 // Download the helper library from https://www.twilio.com/docs/node/install
_18 const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_18 // Find your Account SID and Auth Token at twilio.com/console
_18 // and set the environment variables. See http://twil.io/secure
_18 const accountSid = process.env.TWILIO_ACCOUNT_SID;
_18 const authToken = process.env.TWILIO_AUTH_TOKEN;
_18 const client = twilio(accountSid, authToken);
_18 async function fetchApplication() {
_18 const application = await client
_18 .applications("APXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
_18 console.log(application.accountSid);
_23 "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23 "api_version": "2010-04-01",
_23 "date_created": "Mon, 22 Aug 2011 20:59:45 +0000",
_23 "date_updated": "Tue, 18 Aug 2015 16:48:57 +0000",
_23 "friendly_name": "Application Friendly Name",
_23 "message_status_callback": "http://www.example.com/sms-status-callback",
_23 "sid": "APXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23 "sms_fallback_method": "GET",
_23 "sms_fallback_url": "http://www.example.com/sms-fallback",
_23 "sms_status_callback": "http://www.example.com/sms-status-callback",
_23 "sms_url": "http://example.com",
_23 "status_callback": "http://example.com",
_23 "status_callback_method": "GET",
_23 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications/APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
_23 "voice_caller_id_lookup": false,
_23 "voice_fallback_method": "GET",
_23 "voice_fallback_url": "http://www.example.com/voice-callback",
_23 "voice_method": "GET",
_23 "voice_url": "http://example.com",
_23 "public_application_connect_enabled": false
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Applications.json
Returns a list of Application resource representations, each representing an
application within your account. The list includes paging information .
Property name Type Required PII Description
AccountSid SID<AC> required The SID of the Account that created the Application resources to read.
Pattern: ^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
Property name Type Required PII Description
FriendlyName string Optional The string that identifies the Application resources to read.
How many resources to return in each list page. The default is 50, and the maximum is 1000.
Minimum: 1
Maximum: 1000
The page index. This value is simply for client state.
Minimum: 0
The page token. This is provided by the API.
_16 // Download the helper library from https://www.twilio.com/docs/node/install
_16 const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_16 // Find your Account SID and Auth Token at twilio.com/console
_16 // and set the environment variables. See http://twil.io/secure
_16 const accountSid = process.env.TWILIO_ACCOUNT_SID;
_16 const authToken = process.env.TWILIO_AUTH_TOKEN;
_16 const client = twilio(accountSid, authToken);
_16 async function listApplication() {
_16 const applications = await client.applications.list({ limit: 20 });
_16 applications.forEach((a) => console.log(a.accountSid));
_35 "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_35 "api_version": "2010-04-01",
_35 "date_created": "Fri, 21 Aug 2015 00:07:25 +0000",
_35 "date_updated": "Fri, 21 Aug 2015 00:07:25 +0000",
_35 "friendly_name": "d8821fb7-4d01-48b2-bdc5-34e46252b90b",
_35 "message_status_callback": null,
_35 "sid": "APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_35 "sms_fallback_method": "POST",
_35 "sms_fallback_url": null,
_35 "sms_method": "POST",
_35 "sms_status_callback": null,
_35 "status_callback": null,
_35 "status_callback_method": "POST",
_35 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications/APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
_35 "voice_caller_id_lookup": false,
_35 "voice_fallback_method": "POST",
_35 "voice_fallback_url": null,
_35 "voice_method": "POST",
_35 "public_application_connect_enabled": false
_35 "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications.json?PageSize=1&Page=0",
_35 "next_page_uri": null,
_35 "previous_page_uri": null,
_35 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications.json?PageSize=1&Page=0"
_19 // Download the helper library from https://www.twilio.com/docs/node/install
_19 const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_19 // Find your Account SID and Auth Token at twilio.com/console
_19 // and set the environment variables. See http://twil.io/secure
_19 const accountSid = process.env.TWILIO_ACCOUNT_SID;
_19 const authToken = process.env.TWILIO_AUTH_TOKEN;
_19 const client = twilio(accountSid, authToken);
_19 async function listApplication() {
_19 const applications = await client.applications.list({
_19 friendlyName: "MyApp",
_19 applications.forEach((a) => console.log(a.accountSid));
_35 "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_35 "api_version": "2010-04-01",
_35 "date_created": "Fri, 21 Aug 2015 00:07:25 +0000",
_35 "date_updated": "Fri, 21 Aug 2015 00:07:25 +0000",
_35 "friendly_name": "d8821fb7-4d01-48b2-bdc5-34e46252b90b",
_35 "message_status_callback": null,
_35 "sid": "APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
_35 "sms_fallback_method": "POST",
_35 "sms_fallback_url": null,
_35 "sms_method": "POST",
_35 "sms_status_callback": null,
_35 "status_callback": null,
_35 "status_callback_method": "POST",
_35 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications/APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
_35 "voice_caller_id_lookup": false,
_35 "voice_fallback_method": "POST",
_35 "voice_fallback_url": null,
_35 "voice_method": "POST",
_35 "public_application_connect_enabled": false
_35 "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications.json?PageSize=1&Page=0",
_35 "next_page_uri": null,
_35 "previous_page_uri": null,
_35 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications.json?PageSize=1&Page=0"
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Applications/{Sid}.json
Tries to update the application's properties, and returns the updated
resource representation if successful. The returned response is identical
to that returned above when making a GET
request.
Property name Type Required PII Description
AccountSid SID<AC> required The SID of the Account that created the Application resources to update.
Pattern: ^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The Twilio-provided string that uniquely identifies the Application resource to update.
Pattern: ^AP[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
Encoding type: application/x-www-form-urlencoded
Property name Type Required Description Child properties
FriendlyName string Optional A descriptive string that you create to describe the resource. It can be up to 64 characters long.
The API version to use to start a new TwiML session. Can be: 2010-04-01
or 2008-08-01
. The default value is your account's default API version.
VoiceUrl string<uri> Optional The URL we should call when the phone number assigned to this application receives a call.
VoiceMethod enum<http-method> Optional The HTTP method we should use to call voice_url
. Can be: GET
or POST
.
VoiceFallbackUrl string<uri> Optional The URL that we should call when an error occurs retrieving or executing the TwiML requested by url
.
VoiceFallbackMethod enum<http-method> Optional The HTTP method we should use to call voice_fallback_url
. Can be: GET
or POST
.
StatusCallback string<uri> Optional The URL we should call using the status_callback_method
to send status information to your application.
StatusCallbackMethod enum<http-method> Optional The HTTP method we should use to call status_callback
. Can be: GET
or POST
.
VoiceCallerIdLookup boolean Optional Whether we should look up the caller's caller-ID name from the CNAM database (additional charges apply). Can be: true
or false
.
SmsUrl string<uri> Optional The URL we should call when the phone number receives an incoming SMS message.
SmsMethod enum<http-method> Optional The HTTP method we should use to call sms_url
. Can be: GET
or POST
.
SmsFallbackUrl string<uri> Optional The URL that we should call when an error occurs while retrieving or executing the TwiML from sms_url
.
SmsFallbackMethod enum<http-method> Optional The HTTP method we should use to call sms_fallback_url
. Can be: GET
or POST
.
SmsStatusCallback string<uri> Optional Same as message_status_callback: The URL we should call using a POST method to send status information about SMS messages sent by the application. Deprecated, included for backwards compatibility.
MessageStatusCallback string<uri> Optional The URL we should call using a POST method to send message status information to your application.
PublicApplicationConnectEnabled boolean Optional Whether to allow other Twilio accounts to dial this applicaton using Dial verb. Can be: true
or false
.
{
"FriendlyName" : "friendly_name" ,
"MessageStatusCallback" : "https://example.com" ,
"SmsFallbackMethod" : "GET" ,
"SmsFallbackUrl" : "https://example.com" ,
"SmsMethod" : "GET" ,
"SmsStatusCallback" : "https://example.com" ,
"SmsUrl" : "https://example.com" ,
"StatusCallback" : "https://example.com" ,
"StatusCallbackMethod" : "GET" ,
"VoiceCallerIdLookup" : true ,
"VoiceFallbackMethod" : "GET" ,
"VoiceFallbackUrl" : "https://example.com" ,
"VoiceMethod" : "GET" ,
"VoiceUrl" : "https://example.com" ,
"PublicApplicationConnectEnabled" : true
}
_21 // Download the helper library from https://www.twilio.com/docs/node/install
_21 const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_21 // Find your Account SID and Auth Token at twilio.com/console
_21 // and set the environment variables. See http://twil.io/secure
_21 const accountSid = process.env.TWILIO_ACCOUNT_SID;
_21 const authToken = process.env.TWILIO_AUTH_TOKEN;
_21 const client = twilio(accountSid, authToken);
_21 async function updateApplication() {
_21 const application = await client
_21 .applications("AP2a0747eba6abf96b7e3c3ff0b4530f6e")
_21 smsUrl: "http://demo.twilio.com/docs/sms.xml",
_21 voiceUrl: "http://demo.twilio.com/docs/voice.xml",
_21 console.log(application.accountSid);
_23 "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_23 "api_version": "2010-04-01",
_23 "date_created": "Mon, 22 Aug 2011 20:59:45 +0000",
_23 "date_updated": "Tue, 18 Aug 2015 16:48:57 +0000",
_23 "friendly_name": "Application Friendly Name",
_23 "message_status_callback": "http://www.example.com/sms-status-callback",
_23 "sid": "AP2a0747eba6abf96b7e3c3ff0b4530f6e",
_23 "sms_fallback_method": "GET",
_23 "sms_fallback_url": "http://www.example.com/sms-fallback",
_23 "sms_status_callback": "http://www.example.com/sms-status-callback",
_23 "sms_url": "http://demo.twilio.com/docs/sms.xml",
_23 "status_callback": "http://example.com",
_23 "status_callback_method": "GET",
_23 "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Applications/APaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
_23 "voice_caller_id_lookup": false,
_23 "voice_fallback_method": "GET",
_23 "voice_fallback_url": "http://www.example.com/voice-callback",
_23 "voice_method": "GET",
_23 "voice_url": "http://demo.twilio.com/docs/voice.xml",
_23 "public_application_connect_enabled": true
DELETE https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Applications/{Sid}.json
Delete this application. If this application's sid is assigned
to any IncomingPhoneNumber resources as a VoiceApplicationSid or
SmsApplicationSid it will be removed.
If successful, Twilio will return an HTTP 204 response with no body.
Property name Type Required PII Description
AccountSid SID<AC> required The SID of the Account that created the Application resources to delete.
Pattern: ^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The Twilio-provided string that uniquely identifies the Application resource to delete.
Pattern: ^AP[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
_14 // Download the helper library from https://www.twilio.com/docs/node/install
_14 const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
_14 // Find your Account SID and Auth Token at twilio.com/console
_14 // and set the environment variables. See http://twil.io/secure
_14 const accountSid = process.env.TWILIO_ACCOUNT_SID;
_14 const authToken = process.env.TWILIO_AUTH_TOKEN;
_14 const client = twilio(accountSid, authToken);
_14 async function deleteApplication() {
_14 await client.applications("APXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX").remove();