Conversations API (v2) - Configuration endpoints
Legal information
Conversation Orchestrator, including the APIs, may use artificial intelligence or machine learning technologies and is subject to the terms of the Predictive and Generative AI/ML Features Addendum. For details on AI usage and data, see the AI Nutrition Facts for Real-Time Transcription and Conversation Relay.
Conversation Orchestrator is not a HIPAA Eligible Service or PCI compliant and should not be enabled in workflows that are subject to HIPAA or PCI.
Conversations products are only available in the new Twilio Console. If your account hasn't been migrated, you'll be redirected to the legacy Console where these products won't appear.
A conversation configuration is the top-level object in Conversation Orchestrator. It contains the settings that define how Conversation Orchestrator captures traffic and connects to other services.
Create a Configuration
List Configurations
Fetch Configuration
Update Configuration
Delete Configuration
POST/v2/ControlPlane/Configurations
Base url: https://conversations.twilio.com (base url)
Create a new Configuration
Client-generated UUID key to ensure idempotent behavior. Submitting the same key returns the original response without creating a duplicate operation. Keys are scoped to account + region with a 24-hour TTL.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$application/jsonA human-readable name for the configuration. Limited to 32 characters.
My Support ConfigPattern: ^[a-zA-Z0-9-_ ]+$Max length: 32Human-readable description for the configuration.
Customer Support Configuration for handling all inbound customer inquiriesThe strategy Conversation Orchestrator uses to assign communications to conversations.
GROUP_BY_PROFILEPossible values: GROUP_BY_PROFILEGROUP_BY_PARTICIPANT_ADDRESSESGROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPEThe memory store ID that Conversation Orchestrator uses for profile resolution.
memora_service_123A list of webhook configurations.
2A list of Conversational Intelligence configuration IDs.
["agent1","agent2"]Max items: 5Whether memory extraction is enabled for conversations under this configuration. Defaults to false.
falseExample: falseAccepted - Operation created for asynchronous processing
URL to poll for operation status.
https://conversations.twilio.com/v2/ControlPlane/Operations/proc_job_01h9d8r0vte3hz8tykdj329t7rNamed resource identifiers associated with this operation. Keys depend on the operation type:
- config-create, config-update, config-delete: configurationId
- conversation-delete: conversationId
{"configurationId":"cfg_configuration_01h9d8r0vte3hz8tykdj329t7r"}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 createConfiguration() {11const configuration = await client.conversations.v2.configurations.create({12displayName: "My Support Config",13description: "description",14conversationGroupingType: "GROUP_BY_PROFILE",15memoryStoreId: "memoryStoreId",16});1718console.log(configuration.statusUrl);19}2021createConfiguration();
Response
1{2"related": {},3"statusUrl": "https://www.example.com"4}
GET/v2/ControlPlane/Configurations
Base url: https://conversations.twilio.com (base url)
Retrieve a list of Configurations.
Maximum number of items to return in a single response
50Example: 50Minimum: 1Maximum: 1000A URL-safe, base64-encoded token representing the page of results to return
eyJwYWdlIjoyLCJxdWVyeSI6ImJvb2tzIn0=Filter configurations by Memory Store ID
mem_store_01k1etk2y5f1y9fpe2epfdtvv2Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$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 listConfiguration() {11const configurations = await client.conversations.v2.configurations.list({12limit: 20,13});1415configurations.forEach((c) => console.log(c.id));16}1718listConfiguration();
Response
1{2"configurations": [3{4"id": "id",5"displayName": "My Support Config",6"description": "description",7"conversationGroupingType": "GROUP_BY_PROFILE",8"memoryStoreId": "memoryStoreId",9"channelSettings": {},10"statusCallbacks": [11{12"url": "https://www.example.com",13"method": "POST"14}15],16"intelligenceConfigurationIds": [17"intelligenceConfigurationIds"18],19"memoryExtractionEnabled": false,20"conversationsV1Bridge": {21"serviceId": "IS00000000000000000000000000000000"22},23"createdAt": "2009-07-06T20:30:00Z",24"updatedAt": "2009-07-06T20:30:00Z",25"version": 126}27],28"meta": {29"key": "key",30"pageSize": 20,31"previousToken": "previousToken",32"nextToken": "nextToken"33}34}
GET/v2/ControlPlane/Configurations/{Sid}
Base url: https://conversations.twilio.com (base url)
Retrieve a Configuration.
OK
A human-readable name for the configuration. Limited to 32 characters.
My Support ConfigPattern: ^[a-zA-Z0-9-_ ]+$Max length: 32Human-readable description for the Configuration. Allows spaces and special characters, typically limited to a paragraph of text. This serves as a descriptive field rather than just a name.
Customer Support Configuration for handling all inbound customer inquiriesType of Conversation grouping strategy:
GROUP_BY_PROFILE: Groups Communications by resolved Profile from the Memory Store. A Profile is looked up or created forCUSTOMERParticipant types. All Communications from the same Profile are in the same Conversation, regardless of address or channel.GROUP_BY_PARTICIPANT_ADDRESSES: Groups Communications by Participant addresses across all channels. A customer using +18005550100 will be in the same Conversation whether they contact by SMS, WhatsApp, or RCS.GROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPE: Groups Communications by both Participant addresses AND channel. A customer using +18005550100 by SMS will be in a different Conversation than the same customer by Voice.
GROUP_BY_PROFILEPossible values: GROUP_BY_PROFILEGROUP_BY_PARTICIPANT_ADDRESSESGROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPEMemory Store ID for Profile resolution.
mem_store_01k1etk2y5f1y9fpe2epfdtvv2Channel-specific configuration settings including timeout settings and capture rules.
{"SMS":{"statusTimeouts":{"inactive":10,"closed":15},"captureRules":[{"from":"+18005550100","to":"+18005550101","metadata":{}},{"from":"+18005550103","to":"*","metadata":{}},{"from":"*","to":"+18005550103","metadata":{}}]},"VOICE":{"statusTimeouts":{"inactive":5,"closed":30},"captureRules":[{"from":"+18005550104","to":"+18005550105","metadata":{"callType":"PSTN"}},{"from":"+18005550106","to":"*","metadata":{}},{"from":"*","to":"+18005550106","metadata":{}}]},"WHATSAPP":{"statusTimeouts":{"inactive":15,"closed":60},"captureRules":[{"from":"whatsapp:+18005550100","to":"*","metadata":{}},{"from":"*","to":"whatsapp:+18005550100","metadata":{}}]},"RCS":{"statusTimeouts":{"inactive":15,"closed":60},"captureRules":[{"from":"rcs:brand_acme_agent","to":"*","metadata":{}},{"from":"*","to":"rcs:brand_acme_agent","metadata":{}},{"from":"rcs:+18005550107","to":"*","metadata":{}}]},"CHAT":{"statusTimeouts":{"inactive":15,"closed":60},"captureRules":[{"from":"*","to":"*","metadata":{"chatService":"IS00000000000000000000000000000000"}}]}}List of default webhook configurations applied to Conversations under this Configuration.
20A list of Conversational Intelligence configuration IDs.
["agent1","agent2"]Max items: 5Whether memory extraction is enabled for conversations under this configuration. Defaults to false.
falseExample: falseConfiguration for Conversations V1 bridge. When set, messaging channels route through Conversations V1. Use this to integrate with existing Conversations V1 applications.
{"serviceId":"IS00000000000000000000000000000000"}Timestamp when this Configuration was created.
2023-10-14T10:30:00ZTimestamp when this Configuration was last updated.
2023-10-14T15:45:30ZVersion number used for optimistic locking.
11// 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 fetchConfiguration() {11const configuration = await client.conversations.v212.configurations("Sid")13.fetch();1415console.log(configuration.id);16}1718fetchConfiguration();
Response
1{2"channelSettings": {},3"conversationGroupingType": "GROUP_BY_PROFILE",4"conversationsV1Bridge": {5"serviceId": "IS00000000000000000000000000000000"6},7"createdAt": "2009-07-06T20:30:00Z",8"description": "description",9"displayName": "My Support Config",10"id": "id",11"intelligenceConfigurationIds": [12"intelligenceConfigurationIds"13],14"memoryExtractionEnabled": false,15"memoryStoreId": "memoryStoreId",16"statusCallbacks": [17{18"url": "https://www.example.com",19"method": "POST"20}21],22"updatedAt": "2009-07-06T20:30:00Z",23"version": 124}
PUT/v2/ControlPlane/Configurations/{Sid}
Base url: https://conversations.twilio.com (base url)
Update an existing Configuration
Client-generated UUID key to ensure idempotent behavior. Submitting the same key returns the original response without creating a duplicate operation. Keys are scoped to account + region with a 24-hour TTL.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$application/jsonA human-readable name for the configuration. Limited to 32 characters.
My Support ConfigPattern: ^[a-zA-Z0-9-_ ]+$Max length: 32Human-readable description for the configuration.
Updated Customer Support ConfigurationThe strategy Conversation Orchestrator uses to assign communications to conversations.
GROUP_BY_PROFILEPossible values: GROUP_BY_PROFILEGROUP_BY_PARTICIPANT_ADDRESSESGROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPEThe Memory Store ID for profile resolution.
memora_service_123A list of Conversational Intelligence configuration IDs.
["agent1","agent2"]Max items: 5Whether memory extraction is enabled for conversations under this configuration. Defaults to false.
falseExample: falseAccepted - Operation created for asynchronous processing
URL to poll for operation status.
https://conversations.twilio.com/v2/ControlPlane/Operations/proc_job_01h9d8r0vte3hz8tykdj329t7rNamed resource identifiers associated with this operation. Keys depend on the operation type:
- config-create, config-update, config-delete: configurationId
- conversation-delete: conversationId
{"configurationId":"cfg_configuration_01h9d8r0vte3hz8tykdj329t7r"}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 updateConfiguration() {11const configuration = await client.conversations.v212.configurations("Sid")13.update({14description: "description",15conversationGroupingType: "GROUP_BY_PROFILE",16memoryStoreId: "memoryStoreId",17channelSettings: {},18});1920console.log(configuration.statusUrl);21}2223updateConfiguration();
Response
1{2"related": {},3"statusUrl": "https://www.example.com"4}
DELETE/v2/ControlPlane/Configurations/{Sid}
Base url: https://conversations.twilio.com (base url)
Delete a Configuration
Client-generated UUID key to ensure idempotent behavior. Submitting the same key returns the original response without creating a duplicate operation. Keys are scoped to account + region with a 24-hour TTL.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Accepted - Operation created for asynchronous processing
URL to poll for operation status.
https://conversations.twilio.com/v2/ControlPlane/Operations/proc_job_01h9d8r0vte3hz8tykdj329t7rNamed resource identifiers associated with this operation. Keys depend on the operation type:
- config-create, config-update, config-delete: configurationId
- conversation-delete: conversationId
{"configurationId":"cfg_configuration_01h9d8r0vte3hz8tykdj329t7r"}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 deleteConfiguration() {11await client.conversations.v2.configurations("Sid").remove();12}1314deleteConfiguration();
Response
1{2"related": {},3"statusUrl": "https://www.example.com"4}