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.
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}