Proxy Public Beta is currently closed for new customers. Please consider using Twilio Conversations and Programmable Voice directly if you are building your masking application.
Note that this does not have any impact on Twilio Flex customers.
Twilio's Proxy API is currently available as a Public Beta product. Some features are not yet implemented and others may be changed before the product is declared as Generally Available.
Public Beta products are not covered by a Twilio SLA.
A Service is the top-level scope of all other resources in the REST API. It owns Sessions and Proxy Numbers (like Phone Numbers for a Proxy application. Services allow you to:
The unique string that we created to identify the Service resource.
^KS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
An application-defined string that uniquely identifies the resource. This value must be 191 characters or fewer in length and be unique. Supports UTF-8 characters. This value should not have PII.
The SID of the Account that created the Service resource.
^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Chat Service Instance managed by Proxy Service. The Chat Service enables Proxy to forward SMS and channel messages to this chat instance. This is a one-to-one relationship.
^IS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The default ttl
value for Sessions created in the Service. The TTL (time to live) is measured in seconds after the Session's last create or last Interaction. The default value of 0
indicates an unlimited Session length. You can override a Session's default TTL value by setting its ttl
value.
0
The preference for Proxy Number selection in the Service instance. Can be: prefer-sticky
or avoid-sticky
. prefer-sticky
means that we will try and select the same Proxy Number for a given participant if they have previous Sessions, but we will not fail if that Proxy Number cannot be used. avoid-sticky
means that we will try to use different Proxy Numbers as long as that is possible within a given pool rather than try and use a previously assigned number.
avoid-sticky
prefer-sticky
Where a proxy number must be located relative to the participant identifier. Can be: country
, area-code
, or extended-area-code
. The default value is country
and more specific areas than country
are only available in North America.
area-code
overlay
radius
country
The URL we call on each interaction. If we receive a 403 status, we block the interaction; otherwise the interaction continues.
The URL we call when an inbound call or SMS action occurs on a closed or non-existent Session. If your server (or a Twilio function) responds with valid TwiML, we will process it. This means it is possible, for example, to play a message for a call, send an automated text message response, or redirect a call to another Phone Number. See Out-of-Session Callback Response Guide for more information.
The ISO 8601 date and time in GMT when the resource was created.
The ISO 8601 date and time in GMT when the resource was last updated.
The URLs of resources related to the Service.
A Twilio Phone Number associated with a Proxy Service cannot be associated with other Proxy Services in the same account.
A Proxy Service contains a lot of detailed configuration options regarding Proxy Number selection logic. If you'd like to learn more about how Proxy handles Proxy Numbers, check out the Proxy Number Management explanation page.
POST https://proxy.twilio.com/v1/Services
Create a new Service.
application/x-www-form-urlencoded
An application-defined string that uniquely identifies the resource. This value must be 191 characters or fewer in length and be unique. This value should not have PII.
The default ttl
value to set for Sessions created in the Service. The TTL (time to live) is measured in seconds after the Session's last create or last Interaction. The default value of 0
indicates an unlimited Session length. You can override a Session's default TTL value by setting its ttl
value.
Where a proxy number must be located relative to the participant identifier. Can be: country
, area-code
, or extended-area-code
. The default value is country
and more specific areas than country
are only available in North America.
area-code
overlay
radius
country
The preference for Proxy Number selection in the Service instance. Can be: prefer-sticky
or avoid-sticky
and the default is prefer-sticky
. prefer-sticky
means that we will try and select the same Proxy Number for a given participant if they have previous Sessions, but we will not fail if that Proxy Number cannot be used. avoid-sticky
means that we will try to use different Proxy Numbers as long as that is possible within a given pool rather than try and use a previously assigned number.
avoid-sticky
prefer-sticky
The URL we call on each interaction. If we receive a 403 status, we block the interaction; otherwise the interaction continues.
The URL we should call when an inbound call or SMS action occurs on a closed or non-existent Session. If your server (or a Twilio function) responds with valid TwiML, we will process it. This means it is possible, for example, to play a message for a call, send an automated text message response, or redirect a call to another Phone Number. See Out-of-Session Callback Response Guide for more information.
The SID of the Chat Service Instance managed by Proxy Service. The Chat Service enables Proxy to forward SMS and channel messages to this chat instance. This is a one-to-one relationship.
^IS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createService() {11const service = await client.proxy.v1.services.create({12uniqueName: "UniqueName",13});1415console.log(service.sid);16}1718createService();
1{2"sid": "KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"chat_instance_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",5"unique_name": "UniqueName",6"default_ttl": 3600,7"callback_url": "http://www.example.com",8"geo_match_level": "country",9"number_selection_behavior": "prefer-sticky",10"intercept_callback_url": "http://www.example.com",11"out_of_session_callback_url": "http://www.example.com",12"date_created": "2015-07-30T20:00:00Z",13"date_updated": "2015-07-30T20:00:00Z",14"url": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",15"links": {16"sessions": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Sessions",17"phone_numbers": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/PhoneNumbers",18"short_codes": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/ShortCodes"19}20}
GET https://proxy.twilio.com/v1/Services/{Sid}
Retrieve a single Service.
The Twilio-provided string that uniquely identifies the Service resource to fetch.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function fetchService() {11const service = await client.proxy.v1.services("Sid").fetch();1213console.log(service.sid);14}1516fetchService();
1{2"sid": "Sid",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"chat_instance_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",5"unique_name": "My Service",6"default_ttl": 3600,7"callback_url": "http://www.example.com",8"geo_match_level": "country",9"number_selection_behavior": "prefer-sticky",10"intercept_callback_url": "http://www.example.com",11"out_of_session_callback_url": "http://www.example.com",12"date_created": "2015-07-30T20:00:00Z",13"date_updated": "2015-07-30T20:00:00Z",14"url": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",15"links": {16"sessions": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Sessions",17"phone_numbers": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/PhoneNumbers",18"short_codes": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/ShortCodes"19}20}
GET https://proxy.twilio.com/v1/Services
Retrieve a list of all Services for a given account.
How many resources to return in each list page. The default is 50, and the maximum is 1000.
1
Maximum: 1000
The page token. This is provided by the API.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function listService() {11const services = await client.proxy.v1.services.list({ limit: 20 });1213services.forEach((s) => console.log(s.sid));14}1516listService();
1{2"services": [],3"meta": {4"first_page_url": "https://proxy.twilio.com/v1/Services?PageSize=50&Page=0",5"key": "services",6"next_page_url": null,7"page": 0,8"page_size": 50,9"previous_page_url": null,10"url": "https://proxy.twilio.com/v1/Services?PageSize=50&Page=0"11}12}
POST https://proxy.twilio.com/v1/Services/{Sid}
Update a Service's configuration.
The Twilio-provided string that uniquely identifies the Service resource to update.
^KS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
application/x-www-form-urlencoded
An application-defined string that uniquely identifies the resource. This value must be 191 characters or fewer in length and be unique. This value should not have PII.
The default ttl
value to set for Sessions created in the Service. The TTL (time to live) is measured in seconds after the Session's last create or last Interaction. The default value of 0
indicates an unlimited Session length. You can override a Session's default TTL value by setting its ttl
value.
Where a proxy number must be located relative to the participant identifier. Can be: country
, area-code
, or extended-area-code
. The default value is country
and more specific areas than country
are only available in North America.
area-code
overlay
radius
country
The preference for Proxy Number selection in the Service instance. Can be: prefer-sticky
or avoid-sticky
and the default is prefer-sticky
. prefer-sticky
means that we will try and select the same Proxy Number for a given participant if they have previous Sessions, but we will not fail if that Proxy Number cannot be used. avoid-sticky
means that we will try to use different Proxy Numbers as long as that is possible within a given pool rather than try and use a previously assigned number.
avoid-sticky
prefer-sticky
The URL we call on each interaction. If we receive a 403 status, we block the interaction; otherwise the interaction continues.
The URL we should call when an inbound call or SMS action occurs on a closed or non-existent Session. If your server (or a Twilio function) responds with valid TwiML, we will process it. This means it is possible, for example, to play a message for a call, send an automated text message response, or redirect a call to another Phone Number. See Out-of-Session Callback Response Guide for more information.
The SID of the Chat Service Instance managed by Proxy Service. The Chat Service enables Proxy to forward SMS and channel messages to this chat instance. This is a one-to-one relationship.
^IS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function updateService() {11const service = await client.proxy.v112.services("KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")13.update({ uniqueName: "UniqueName" });1415console.log(service.sid);16}1718updateService();
1{2"sid": "KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"chat_instance_sid": "ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",5"unique_name": "UniqueName",6"default_ttl": 3600,7"callback_url": "http://www.example.com",8"geo_match_level": "country",9"number_selection_behavior": "prefer-sticky",10"intercept_callback_url": "http://www.example.com",11"out_of_session_callback_url": "http://www.example.com",12"date_created": "2015-07-30T20:00:00Z",13"date_updated": "2015-07-30T20:00:00Z",14"url": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",15"links": {16"sessions": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Sessions",17"phone_numbers": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/PhoneNumbers",18"short_codes": "https://proxy.twilio.com/v1/Services/KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/ShortCodes"19}20}
DELETE https://proxy.twilio.com/v1/Services/{Sid}
Permanently delete a Service and all children (Sessions, Participants, Interactions). In addition, all associated Proxy Numbers (e.g. Phone Numbers) will become available for assignment to another Service.
Any Message or Call records created during interactions for Sessions in this Service will NOT be deleted automatically. If you want to delete all related Message/Call resources, you must issue direct DELETE
requests for the inbound and outbound resources of all child Interactions directly. Once you have deleted a Service, those resource SIDs will not be discoverable via Proxy.
The Twilio-provided string that uniquely identifies the Service resource to delete.
^KS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function deleteService() {11await client.proxy.v1.services("KSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").remove();12}1314deleteService();