[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-twilio-conversation-orchestrator":3,"mdc-dnyb9y-key":36,"related-org-openai-twilio-conversation-orchestrator":6902,"related-repo-openai-twilio-conversation-orchestrator":7109},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"twilio-conversation-orchestrator","configure Twilio conversation capture and routing","Configure automatic conversation capture and routing with Twilio Conversation Orchestrator. Covers Configuration creation, channel capture rules, grouping types, status timeouts, Memory Store linkage, Intelligence linkage, and conversation lifecycle. Use this skill to automatically capture SMS, voice, WhatsApp, RCS, and web chat traffic into unified conversations without manually creating conversations or participants.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Automation","automation","tag",{"name":17,"slug":18,"type":15},"Orchestration","orchestration",{"name":20,"slug":21,"type":15},"Messaging","messaging",{"name":23,"slug":24,"type":15},"Twilio","twilio",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Ftwilio-developer-kit\u002Fskills\u002Ftwilio-conversation-orchestrator","---\nname: twilio-conversation-orchestrator\ndescription: >\n  Configure automatic conversation capture and routing with Twilio Conversation\n  Orchestrator. Covers Configuration creation, channel capture rules, grouping\n  types, status timeouts, Memory Store linkage, Intelligence linkage, and\n  conversation lifecycle. Use this skill to automatically capture SMS, voice,\n  WhatsApp, RCS, and web chat traffic into unified conversations without\n  manually creating conversations or participants.\n---\n\n# Conversation Orchestrator\n\nDecision-making guide for Twilio's Conversation Orchestrator (Conversations v2) — automatic conversation capture and routing across Voice, SMS, WhatsApp, RCS, and web chat. Covers Configurations, capture rules, grouping types, channel settings, status timeouts, and linkage to Conversation Memory and Conversation Intelligence.\n\n> **GA** — Conversation Orchestrator is generally available.\n\n## Use Cases\n\nConversation Orchestrator powers **automatic conversation capture and integration with existing voice implementations** — replacing manual conversation creation with either:\n- **Passive ingestion**: Declarative capture rules that automatically capture traffic as it flows\n- **Active ingestion**: TwiML parameters or API calls that route existing implementations into conversations\n\n**Note:** Active and passive ingestion can be configured on a per-channel basis. For example, you can use passive capture rules for SMS while using active TwiML parameters for voice calls.\n\n## ⚠️ CRITICAL: Voice Double Billing Warning\n\n> **WARNING: You can be charged for STT (speech-to-text) twice on the same call if misconfigured.**\n\nIf you are using voice with ConversationRelay or Transcription in TwiML:\n\n**We do not recommend using passive voice capture rules (`captureRules`) in your Configuration when using active TwiML.**\n\nSee the full [Voice Double Billing Warning](#️-critical-voice-double-billing-warning-1) section below for details.\n\n### Unified Customer Context\n\nCapture all channels (voice, SMS, WhatsApp, RCS, CHAT (via Conversation API (classic))) into a single conversation thread per customer. Conversation Memory resolves identity across channels and maintains persistent context. **Start here** — this is the most common pattern.\n\n- **Grouping**: `GROUP_BY_PROFILE`\n- **Channels**: SMS + VOICE + WHATSAPP + RCS + CHAT (via Conversation API (classic))\n- **Linkage**: Memory Store (identity resolution) + Intelligence (analysis)\n\n### Channel-Isolated Analytics\n\nKeep voice transcripts separate from SMS threads for per-channel analysis. Intelligence operators run independently on each channel's conversation.\n\n- **Grouping**: `GROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPE`\n- **Channels**: SMS + VOICE (separate conversations)\n- **Linkage**: Intelligence (per-channel operators)\n\n### Agent Connect Integration\n\nCapture conversations for AI-to-human escalation via Agent Connect (TAC SDK). Uses address-pair grouping required by the SDK.\n\n- **Grouping**: `GROUP_BY_PARTICIPANT_ADDRESSES`\n- **Channels**: SMS or VOICE\n- **Linkage**: Memory Store + Intelligence + Agent Connect\n\n### Post-Conversation Memory Extraction\n\nAutomatically extract observations from conversations into Conversation Memory. Opt-in — configure once, every conversation feeds the memory loop.\n\n- **Config**: `memoryExtractionEnabled: true`\n- **Trigger**: INACTIVE and\u002For CLOSED lifecycle transitions (configurable)\n- **Result**: Observations and summaries written to linked Memory Store profiles\n\n## How It Works\n\n### Passive Ingestion (Capture Rules)\n\n```\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  1. Inbound\u002Foutbound traffic arrives (SMS, Voice, WhatsApp, RCS)           │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  2. Capture rules match on phone number patterns                           │\n│     - from\u002Fto with wildcards (e.g., from: *, to: +15551234567)             │\n│     - Per-channel rules (SMS, VOICE, WHATSAPP, RCS)                        │\n│     - Metadata filters (callType for CLIENT\u002FSIP)                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  3. Conversation auto-created (or existing one matched via grouping)        │\n│     - GROUP_BY_PROFILE: merge by Memory Profile identity                   │\n│     - GROUP_BY_PARTICIPANT_ADDRESSES: merge by address pair                │\n│     - GROUP_BY_..._AND_CHANNEL_TYPE: separate per channel                  │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  4. Linked services activate                                               │\n│     - Memory Store: identity resolution, profile auto-creation             │\n│     - Intelligence: operators fire per Communication or at close           │\n│     - Status timeouts: ACTIVE → INACTIVE → CLOSED lifecycle                │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  5. On conversation close                                                  │\n│     - Memory extraction: observations written to Memory Store              │\n│     - CONVERSATION_END Intelligence operators fire (Summary, etc.)         │\n│     - Status callbacks delivered (if configured)                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n```\n\n### Active Ingestion (TwiML or API)\n\n```\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  1. Voice call arrives OR you create conversation via API                  │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  2a. TwiML: Pass conversationConfiguration or conversationId parameter      │\n│      - \u003CConversationRelay conversationConfiguration=\"CONFIG_ID\">           │\n│      - \u003CTranscription conversationId=\"CONV_ID\">                            │\n│  2b. API: POST to \u002Fv2\u002FConversations with participants                      │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  3. Conversation created or matched based on parameter                      │\n│     - conversationConfiguration: uses grouping rules                       │\n│     - conversationId: routes to specific conversation                      │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  4. Voice transcription or API communications added                         │\n│     - Same linked services activate (Memory Store, Intelligence)           │\n│     - Same lifecycle: ACTIVE → INACTIVE → CLOSED                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  5. On conversation close                                                  │\n│     - Memory extraction: observations written to Memory Store              │\n│     - CONVERSATION_END Intelligence operators fire (Summary, etc.)         │\n│     - Status callbacks delivered (if configured)                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n```\n\n## Scope\n\n### CAN\n\n- Automatically capture SMS, voice, WhatsApp, RCS, and CHAT (via Conversation API (classic)) into Conversations via passive ingestion (capture rules) OR work with existing voice implementations via active ingestion (TwiML parameters: conversationConfiguration, conversationId)\n- Merge multiple channels into one Conversation thread via `GROUP_BY_PROFILE`\n- Link Memory Store for automatic identity resolution and observation extraction\n- Link multiple Intelligence Configurations for real-time and post-conversation analysis\n- Bridge Conversation API (classic) Services for browser SDK chat via `conversationsV1Bridge`\n- Configure per-channel capture rules with wildcard matching\n- Set independent timeout policies per channel\n- Add `statusCallbacks` for webhook notifications on conversation state changes\n- Pass `conversationConfiguration` or `conversationId` in `\u003CConversationRelay>` or `\u003CTranscription>` TwiML to create or route to a conversation (Active TwiML mode) — both parameters supported in both TwiML verbs\n- Close conversations explicitly via PATCH to trigger Memory extraction and CONVERSATION_END operators\n- List and filter Conversations by status, channel, and date range\n- Read Communications (messages + voice utterances) within a Conversation\n- Authenticate with Account SID\u002FAuth Token or API Key\u002FSecret\n\n### CANNOT\n\n- **Cannot update Configurations with PATCH** — PUT only, full replacement. Omitting fields deletes them. Always re-fetch before updating.\n- **Cannot exceed 10 Configurations per account** — Hard limit at GA. Each config supports up to 100 capture rules per channel. Delete unused configs to make room. Plan Configuration topology for large phone number portfolios accordingly (e.g., 101 numbers for one channel requires 2 configs).\n- **Cannot change grouping type after creation** — `conversationGroupingType` is immutable on a Configuration. Create a new config if you need a different grouping.\n- **Cannot capture CLIENT or SIP voice calls without explicit callType metadata** — PSTN is captured by default. Browser (Client SDK) and SIP calls require `metadata.callType` in capture rules.\n- **Not recommended to combine passive VOICE capture rules with active TwiML voice (ConversationRelay or Transcription with conversation parameters)** — You will be double-charged for STT. The system does not prevent this configuration, but it is not recommended. Passive voice capture uses Real-Time Transcription (RTT) under the hood. If you pass `conversationConfiguration` or `conversationId` in `\u003CConversationRelay>` or `\u003CTranscription>` TwiML, you are using active ingestion which has its own STT engine. Both engines will run = double STT billing. Use active TwiML (pass conversation parameters) OR passive capture rules (captureRules), not both for the same traffic. See the [Voice Double Billing Warning](#️-critical-voice-double-billing-warning) section above.\n- **Cannot detect failed Memory linkage** — If `memoryStoreId` points to a deleted or invalid store, capture still works but identity resolution and extraction silently fail. See `twilio-debugging-observability`.\n- **Cannot filter Intelligence operators by participant type** — Operators fire on ALL Communications (customer and agent). Use the operator prompt to specify which participant to analyze.\n- **Cannot extract Memory observations mid-conversation (ACTIVE state)** — Extraction is opt-in and can fire on INACTIVE and\u002For CLOSED lifecycle transitions, but not while the conversation is ACTIVE. For real-time Memory writes during an active conversation, post Observations directly via `twilio-customer-memory`.\n- **Cannot have conversations pick up config changes retroactively** — Conversations pin the Configuration version at creation time. Close existing conversations to apply updated rules.\n- **Cannot use the POST response to get the Configuration ID** — Creation returns 202 with an operation. Poll the operation's `statusUrl` until `status` is `COMPLETED`, then retrieve the configuration ID from the operation result.\n- **No standalone operation** — Requires a Memory Store because Conversation Orchestrator uses profiles for identity resolution. `memoryStoreId` is mandatory when creating a Configuration.\n- **JSON-only API** — All Conversation Orchestrator endpoints require `Content-Type: application\u002Fjson`. Form-encoded bodies are rejected.\n\n## Quick Decision\n\n| Need | Use | Why |\n|------|-----|-----|\n| Already have ConversationRelay or Transcription voice implementation | Pass `conversationConfiguration` or `conversationId` in TwiML (Active ingestion) — do NOT add passive VOICE capture rules | More granular control over which calls are captured. Avoids double STT billing. |\n| Capture all messaging into unified customer conversations | Configuration with passive capture rules + Memory Store + `GROUP_BY_PROFILE` | Automatic capture with cross-channel identity resolution |\n| Keep voice and SMS conversations separate | Configuration with `GROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPE` | Channel-isolated threads for per-channel analytics |\n| Auto-extract customer observations from conversations | Set `memoryExtractionEnabled: true` on Configuration | Triggers on conversation close, writes to linked Memory Store |\n| Analyze conversations with Intelligence operators | Link `intelligenceConfigurationIds` on Configuration | Operators fire per Communication or at conversation close |\n| Capture browser voice calls (Client SDK) | Add VOICE capture rule with `metadata.callType: \"CLIENT\"` | PSTN-only by default; CLIENT needs explicit rule |\n| Capture CHAT (via Conversation API (classic)) | Set `conversationsV1Bridge.serviceId` on Configuration | CHAT flows through a Conversations (v1) Service bridged into Orchestrator |\n\n## ⚠️ CRITICAL: Voice Double Billing Warning\n\n> **WARNING: You can be charged for STT (speech-to-text) twice on the same call if misconfigured.**\n\n**We do not recommend using passive voice capture rules (`captureRules`) in your Configuration when using active TwiML.**\n\nWhen you pass `conversationConfiguration` or `conversationId` in your TwiML:\n- `\u003CConversationRelay conversationConfiguration=\"CONFIG_ID\">` — Active TwiML mode\n- `\u003CConversationRelay conversationId=\"CONVERSATION_ID\">` — Active TwiML mode  \n- `\u003CTranscription conversationConfiguration=\"CONFIG_ID\">` — Active TwiML mode\n- `\u003CTranscription conversationId=\"CONVERSATION_ID\">` — Active TwiML mode\n\nYou are using **active ingestion**. Your voice is already being captured and transcribed.\n\n**What causes double billing:**\n- Passive voice capture rules use Real-Time Transcription (RTT) under the hood\n- ConversationRelay\u002FTranscription use their own STT engines\n- If both are active on the same call = **you pay for BOTH STT engines**\n\n**Correct configuration for active voice (TwiML):**\n```json\n{\n  \"channelSettings\": {\n    \"VOICE\": {\n      \"statusTimeouts\": null  \u002F\u002F ✅ Define channel settings\n      \u002F\u002F ❌ NO captureRules — omit this field entirely\n    }\n  }\n}\n```\n\n**When to use passive voice capture rules:**\n- Human agent calls WITHOUT ConversationRelay or Transcription TwiML\n- You want automatic capture with no TwiML changes\n\n**When to use active voice (TwiML parameters):**\n- AI voice agents with ConversationRelay\n- Adding transcription to existing API-created conversations\n- Any scenario where you're already passing conversation parameters in TwiML\n\n## Decision Frameworks\n\n### Conversation Grouping\n\nThe `conversationGroupingType` on your configuration controls how new traffic groups into conversations.\n\n| Type | Behavior | When to use |\n|------|----------|-------------|\n| `GROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPE` | Separate conversations per channel. SMS and Voice between the same numbers create different conversations. | The default. Keeps channels separate. |\n| `GROUP_BY_PARTICIPANT_ADDRESSES` | Same conversation across channels when participants share an address. | Omnichannel on the same addresses—customer can switch between SMS and Voice seamlessly. |\n| `GROUP_BY_PROFILE` | Groups by customer profile. The same customer from different devices or channels goes to one conversation. | Preferred for production. Recommended when channels use different addresses (chat and voice). |\n\n**Immutable after creation.** Choose before creating the Configuration. To change grouping, create a new Configuration.\n\n### Supported Channels\n\nConversation Orchestrator supports voice, SMS, RCS, and WhatsApp channels. You can also bring Chat traffic in through the Conversations API (classic) bridge.\n\n| Channel | Address Format | Example | Ingestion Modes |\n|---------|---------------|---------|-----------------|\n| Voice (PSTN) | E.164 phone number | `+15559876543` | Passive and active |\n| Voice (CLIENT) | Client identity string | `agent-1` | Passive and active |\n| Voice (PUBLIC_SIP) | SIP URI or E.164 phone number | `sip:user@example.com` | Passive and active |\n| SMS | E.164 phone number | `+15551234567` | Passive and active |\n| RCS | E.164 phone number | `+15551234567` | Passive and active |\n| WhatsApp | E.164 phone number | `+15551234567` | Passive and active |\n| Chat | Identity string | `user123` | Conversations API (classic) bridge only |\n\n### Channel Configuration Details\n\n**Voice:**\n- Use `callType` metadata in passive capture rules to distinguish call types:\n  - `PSTN` — Standard phone calls over the public network\n  - `CLIENT` — In-app calls using Twilio Voice SDK\n  - `PUBLIC_SIP` — Calls over a SIP interface\n- When you save voice capture rules, Conversation Orchestrator automatically provisions call filtering and Real-Time Transcription\n- Each TTS fragment is a separate communication (3-5 per agent response)\n- Voice communications have `content.type` of `TRANSCRIPTION`\n- **Warning**: For dynamic or numerous client identities, use active TwiML instead of passive capture rules. Don't use wildcard identities with `CLIENT` call type.\n\n**SMS:**\n- Bidirectional capture rules needed (from: phone, to: * AND from: *, to: phone)\n- Communications have `content.type` of `TEXT`\n- Includes `deliveryStatus` in recipients array\n- Recommended timeouts: `inactive: 10, closed: 60`\n\n**RCS:**\n- Same pattern as SMS\n- Text body captured; media attachments are not added to conversations\n- Recommended timeouts: `inactive: 10, closed: 60`\n\n**WhatsApp:**\n- E.164 format addresses (with or without `whatsapp:` prefix)\n- Text and template messages supported\n- Media attachments on inbound\u002Foutbound messages are not added to conversations\n- Recommended timeouts: `inactive: 10, closed: 60`\n\n**Chat (via Conversations API (classic)):**\n- Only available through Conversations API (classic) bridge\n- Uses customer-defined identity strings\n- Configure `conversationsV1Bridge.serviceId` on Configuration\n- Classic `ConversationSid` carried on address as `channelId`\n- Recommended timeouts: `inactive: 15, closed: 60`\n\n## Integration Patterns\n\nCode samples use raw `fetch()` for clarity. All Conversation Orchestrator APIs use Basic Auth — see `twilio-iam-auth-setup`.\n\n### Authentication Helper\n\n```javascript\nconst CONVERSATIONS_V2_BASE = 'https:\u002F\u002Fconversations.twilio.com\u002Fv2';\n\nfunction getAuthHeaders() {\n  const credentials = Buffer.from(\n    `${process.env.TWILIO_ACCOUNT_SID}:${process.env.TWILIO_AUTH_TOKEN}`\n  ).toString('base64');\n  return {\n    'Authorization': `Basic ${credentials}`,\n    'Content-Type': 'application\u002Fjson',\n  };\n}\n```\n\n### Create a Configuration\n\n```javascript\nconst configResponse = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations`,\n  {\n    method: 'POST',\n    headers: getAuthHeaders(),\n    body: JSON.stringify({\n      displayName: 'my-app-config',\n      description: 'Production conversation config',\n      conversationGroupingType: 'GROUP_BY_PROFILE',\n      memoryStoreId: 'mem_store_...', \u002F\u002F Required — create via Memory API first\n      memoryExtractionEnabled: true,\n      channelSettings: {\n        SMS: {\n          captureRules: [\n            { from: '+15551234567', to: '*', metadata: {} },\n            { from: '*', to: '+15551234567', metadata: {} },\n          ],\n          statusTimeouts: { inactive: 10, closed: 60 },\n        },\n        VOICE: {\n          captureRules: [\n            { from: '*', to: '+15551234567', metadata: {} },\n          ],\n        },\n      },\n    }),\n  }\n);\n\u002F\u002F May return 202 without config ID — poll GET \u002FControlPlane\u002FConfigurations to find by displayName\n```\n\n```python\nimport os, requests\n\naccount_sid = os.environ[\"TWILIO_ACCOUNT_SID\"]\nauth_token = os.environ[\"TWILIO_AUTH_TOKEN\"]\ntwilio_phone = os.environ[\"TWILIO_PHONE_NUMBER\"]\n\nconfig = requests.post(\n    \"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\",\n    auth=(account_sid, auth_token),\n    json={\n        \"displayName\": \"my-app-config\",\n        \"description\": \"Production conversation config\",\n        \"conversationGroupingType\": \"GROUP_BY_PROFILE\",\n        \"memoryStoreId\": \"mem_store_...\",\n        \"memoryExtractionEnabled\": True,\n        \"channelSettings\": {\n            \"SMS\": {\n                \"captureRules\": [\n                    {\"from\": twilio_phone, \"to\": \"*\", \"metadata\": {}},\n                    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {}}\n                ],\n                \"statusTimeouts\": {\"inactive\": 10, \"closed\": 60}\n            },\n            \"VOICE\": {\n                \"captureRules\": [\n                    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {}}\n                ]\n            }\n        }\n    }\n).json()\n```\n\n### Update a Configuration (PUT — Full Replacement)\n\n```javascript\n\u002F\u002F Step 1: Fetch current config (ALWAYS re-fetch before updating)\nconst current = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  { headers: getAuthHeaders() }\n).then(r => r.json());\n\n\u002F\u002F Step 2: Modify the field you need\ncurrent.channelSettings.VOICE.captureRules.push(\n  { from: '*', to: '+15551234567', metadata: { callType: 'CLIENT' } }\n);\n\n\u002F\u002F Step 3: PUT the complete object back\nawait fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  {\n    method: 'PUT',\n    headers: getAuthHeaders(),\n    body: JSON.stringify(current),\n  }\n);\n```\n\n```python\n# Fetch current config\ncurrent = requests.get(\n    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\u002F{config_id}\",\n    auth=(account_sid, auth_token)\n).json()\n\n# Modify and PUT the whole thing back\ncurrent[\"channelSettings\"][\"VOICE\"][\"captureRules\"].append(\n    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {\"callType\": \"CLIENT\"}}\n)\n\nrequests.put(\n    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\u002F{config_id}\",\n    auth=(account_sid, auth_token),\n    json=current\n)\n```\n\n### Link Intelligence Configuration\n\n```javascript\n\u002F\u002F Fetch current config, add Intelligence, PUT back\nconst current = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  { headers: getAuthHeaders() }\n).then(r => r.json());\n\ncurrent.intelligenceConfigurationIds = [intelligenceConfigId];\n\nawait fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  {\n    method: 'PUT',\n    headers: getAuthHeaders(),\n    body: JSON.stringify(current),\n  }\n);\n```\n\n### Read Conversations and Communications\n\n```javascript\n\u002F\u002F List active conversations\nconst conversations = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FConversations?Status=ACTIVE&PageSize=10`,\n  { headers: getAuthHeaders() }\n).then(r => r.json());\n\nfor (const conv of conversations.conversations ?? []) {\n  \u002F\u002F Note: List view has minimal data. For full details, fetch individual conversation\n  console.log(`Conversation: ${conv.id}, Created: ${conv.createdAt || 'N\u002FA'}`);\n  \n  \u002F\u002F List communications (messages + voice utterances)\n  const comms = await fetch(\n    `${CONVERSATIONS_V2_BASE}\u002FConversations\u002F${conv.id}\u002FCommunications`,\n    { headers: getAuthHeaders() }\n  ).then(r => r.json());\n\n  for (const comm of comms.communications ?? []) {\n    \u002F\u002F Use optional chaining - channel and body may be undefined in list view\n    console.log(`[${comm.channel ?? 'N\u002FA'}] ${comm.body ?? 'N\u002FA'}`);\n  }\n}\n```\n\n```python\nconversations = requests.get(\n    \"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\",\n    auth=(account_sid, auth_token),\n    params={\"Status\": \"ACTIVE\", \"PageSize\": 10}\n).json()\n\nfor conv in conversations.get(\"conversations\", []):\n    conv_id = conv[\"id\"]\n    # Note: List view has minimal data. Use .get() for defensive access\n    print(f\"Conversation: {conv_id}, Created: {conv.get('createdAt', 'N\u002FA')}\")\n    \n    comms = requests.get(\n        f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\u002F{conv_id}\u002FCommunications\",\n        auth=(account_sid, auth_token)\n    ).json()\n\n    for comm in comms.get(\"communications\", []):\n        # Use .get() - channel and body may be missing in list view\n        print(f\"  [{comm.get('channel', 'N\u002FA')}] {comm.get('body', 'N\u002FA')}\")\n```\n\n### Close a Conversation\n\nClosing triggers Memory extraction (if enabled) and CONVERSATION_END Intelligence operators.\n\n```javascript\nawait fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FConversations\u002F${convId}`,\n  {\n    method: 'PATCH',\n    headers: getAuthHeaders(),\n    body: JSON.stringify({ status: 'CLOSED' }),\n  }\n);\n```\n\n```python\nrequests.patch(\n    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\u002F{conv_id}\",\n    auth=(account_sid, auth_token),\n    json={\"status\": \"CLOSED\"}\n)\n```\n\n### Voice Integration Patterns\n\n**Active TwiML (recommended for AI voice agents):** Pass `conversationConfiguration` on `\u003CConversationRelay>` to create a new conversation. Do NOT add passive VOICE `captureRules` — this avoids double STT billing. See the [Voice Double Billing Warning](#️-critical-voice-double-billing-warning) section above.\n\n```xml\n\u003CResponse>\n  \u003CConnect>\n    \u003CConversationRelay\n      url=\"wss:\u002F\u002Fyour-relay\u002Fvoice\"\n      conversationConfiguration=\"CONFIG_ID_HERE\"\n      ttsProvider=\"ElevenLabs\"\n      voice=\"your-voice-id\"\n    \u002F>\n  \u003C\u002FConnect>\n\u003C\u002FResponse>\n```\n\nStill define VOICE in `channelSettings` for lifecycle\u002Ftimeouts — just omit `captureRules`:\n```json\n{\n  \"channelSettings\": {\n    \"VOICE\": {\n      \"statusTimeouts\": null\n    }\n  }\n}\n```\n\n**Attach voice to an existing conversation (Real-Time Transcription):** Use `\u003CTranscription>` with `conversationId` to add a voice call's transcription to a conversation you created via API:\n\n```xml\n\u003CResponse>\n  \u003CStart>\n    \u003CTranscription conversationId=\"CONVERSATION_ID\"\u002F>\n  \u003C\u002FStart>\n  \u003CSay>Welcome to support. How can I help you today?\u003C\u002FSay>\n\u003C\u002FResponse>\n```\n\n**Passive voice capture (human agent calls):** Use VOICE `captureRules` to automatically capture calls without TwiML changes. Appropriate for human agent scenarios where ConversationRelay is not used:\n```json\n{\n  \"VOICE\": {\n    \"captureRules\": [\n      { \"from\": \"*\", \"to\": \"+15551234567\", \"metadata\": {} }\n    ]\n  }\n}\n```\n\n> **Warning:** Do NOT combine passive VOICE capture rules with active TwiML voice. See the [Voice Double Billing Warning](#️-critical-voice-double-billing-warning) section above.\n\n## Gotchas\n\n### Setup\n\n1. **Memory Store is required.** You cannot create a Configuration without a `memoryStoreId`. Create the Memory Store first via `twilio-customer-memory`.\n\n2. **JSON-only API.** All Conversation Orchestrator endpoints require `Content-Type: application\u002Fjson`. Form-encoded bodies are rejected. This matches Intelligence v3 but differs from most Twilio APIs.\n\n3. **Async creation.** POST to `\u002FControlPlane\u002FConfigurations` returns 202 with an operation. Poll the operation's `statusUrl` until `status` is `COMPLETED`, then retrieve the configuration ID from the operation result.\n\n### Configuration\n\n4. **PUT replaces everything.** The most common bug: fetching a config, modifying one field, PUTting back — but forgetting to include `channelSettings` or `memoryStoreId`. The API accepts the PUT and silently removes the omitted fields. Always re-fetch, modify, PUT.\n\n5. **Grouping type is immutable.** `conversationGroupingType` cannot be changed after creation. To switch grouping, create a new Configuration and close conversations on the old one.\n\n6. **10 Configuration limit per account.** Hard limit at GA (up to 100 capture rules per channel per config). Delete unused Configurations to make room. For customers with large phone number portfolios, partition numbers across multiple Configurations.\n\n7. **CLIENT voice capture is opt-in.** Browser-originated calls via the Twilio Client SDK are not captured by default VOICE rules. You need a separate capture rule with `\"metadata\": {\"callType\": \"CLIENT\"}`. SIP calls similarly need `{\"callType\": \"PUBLIC_SIP\"}`. PSTN is the only type captured by default.\n\n8. **`conversationConfiguration` (no \"Id\" suffix) is the correct TwiML attribute name.** The attribute on `\u003CConversationRelay>` and `\u003CTranscription>` is `conversationConfiguration`, NOT `conversationConfigurationId`. The incorrect name is silently ignored (unrecognized TwiML attributes produce no error), resulting in no conversation being created.\n\n### Runtime\n\n9. **Timeout precedence across channels.** If a customer is on a voice call and sends an SMS, both channels are active in the same Conversation (with `GROUP_BY_PROFILE`). When the voice call ends, the SMS channel's timeout still governs — the Conversation won't close until the SMS timeout expires. Channel close events are proposals, not commands.\n\n10. **Config versioning pins at creation.** Intelligence rules and capture rules are pinned to the Configuration version at conversation creation time. Upgrading Intelligence (adding operators, changing rules) doesn't affect existing conversations. Close active conversations to pick up the new version.\n\n11. **ConversationRelay TTS fragmentation.** ConversationRelay writes one Communication per TTS fragment, not per complete utterance. A single agent response may produce 3-5 Communications. Intelligence operators fire per Communication, so operator cost scales with fragment count.\n\n12. **Overly broad wildcard VOICE rules match multiple call types.** A rule `{\"from\": \"*\", \"to\": \"*\", \"metadata\": {\"callType\": \"PSTN\"}}` will match all PSTN calls in your account, not just those to\u002Ffrom specific numbers. If you also have CLIENT capture rules, each call could match multiple rules, leading to unexpected conversation grouping. Always use specific `from` or `to` addresses to limit rule scope.\n\n13. **Active TwiML voice and passive capture rules cause double STT billing.** See the [Voice Double Billing Warning](#️-critical-voice-double-billing-warning) section for full details. Do not use passive VOICE `captureRules` when passing conversation parameters in TwiML.\n\n### Observability\n\n14. **Silent Memory linkage failure.** If `memoryStoreId` points to a deleted or invalid store, capture still works but identity resolution and extraction silently fail. No error is returned. See `twilio-debugging-observability`.\n\n15. **No participant type filtering for Intelligence.** Operators fire on ALL Communications — customer messages AND agent responses. There is no config-level filter. Use the operator prompt to specify which participant to analyze.\n\n16. **Memory extraction is opt-in and fires on INACTIVE and\u002For CLOSED.** Extraction does not run automatically — it must be enabled. It can be configured to fire on the INACTIVE transition, the CLOSED transition, or both. It does NOT fire while a conversation is ACTIVE. For mid-conversation Memory writes, post directly to the Observations endpoint via `twilio-customer-memory`.\n\n17. **List endpoints return partial data.** When listing Conversations or Communications via GET `\u002FConversations` or `\u002FConversations\u002F{id}\u002FCommunications`, response objects are missing fields that are present when fetching individual resources. Missing fields include `dateCreated` (list) vs `createdAt` (single GET), `channels`, `body`, and `channel`. Always use defensive field access (`conv?.createdAt` or `conv.get('createdAt')`) and fetch individual resources if you need complete data. Example:\n```javascript\n\u002F\u002F List returns partial data\nconst list = await fetch(`${BASE}\u002FConversations?PageSize=10`);\nfor (const conv of list.conversations) {\n  console.log(conv.dateCreated); \u002F\u002F undefined\n  console.log(conv.createdAt);   \u002F\u002F also undefined in list view\n  \n  \u002F\u002F Fetch full details if needed\n  const full = await fetch(`${BASE}\u002FConversations\u002F${conv.id}`);\n  console.log(full.createdAt);   \u002F\u002F ✅ present (note: 'createdAt' not 'dateCreated')\n}\n```\n\n## Related Resources\n\n- [Conversation Intelligence Skill](..\u002Ftwilio-conversation-intelligence\u002FSKILL.md) — Intelligence Configuration, Language Operators, real-time and post-conversation analysis\n- [Customer Memory Skill](..\u002Ftwilio-customer-memory\u002FSKILL.md) — Memory Store, profiles, traits, observations, Recall\n- [ConversationRelay Skill](..\u002Ftwilio-voice-conversation-relay\u002FSKILL.md) — Voice AI agent setup with WebSocket streaming\n- [Agent Connect Skill](..\u002Ftwilio-agent-connect\u002FSKILL.md) — AI-to-human escalation via TAC SDK\n- [Debugging Skill](..\u002Ftwilio-debugging-observability\u002FSKILL.md) — Error triage, Event Streams, linkage chain verification\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,71,78,90,115,125,131,142,147,164,178,185,197,236,242,247,282,288,293,328,334,339,377,383,389,401,407,416,422,428,546,552,785,791,998,1003,1013,1026,1044,1088,1100,1108,1131,1139,1287,1295,1308,1316,1334,1340,1346,1358,1448,1458,1464,1469,1680,1686,1694,1792,1800,1849,1857,1879,1887,1922,1930,1983,1989,2009,2015,2367,2373,3138,3392,3398,3904,4033,4039,4389,4395,5074,5229,5235,5240,5440,5485,5491,5527,5616,5634,5739,5763,5816,5833,6014,6032,6038,6044,6123,6129,6251,6257,6351,6357,6489,6832,6838,6896],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"conversation-orchestrator",[47],{"type":48,"value":49},"text","Conversation Orchestrator",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"Decision-making guide for Twilio's Conversation Orchestrator (Conversations v2) — automatic conversation capture and routing across Voice, SMS, WhatsApp, RCS, and web chat. Covers Configurations, capture rules, grouping types, channel settings, status timeouts, and linkage to Conversation Memory and Conversation Intelligence.",{"type":42,"tag":57,"props":58,"children":59},"blockquote",{},[60],{"type":42,"tag":51,"props":61,"children":62},{},[63,69],{"type":42,"tag":64,"props":65,"children":66},"strong",{},[67],{"type":48,"value":68},"GA",{"type":48,"value":70}," — Conversation Orchestrator is generally available.",{"type":42,"tag":72,"props":73,"children":75},"h2",{"id":74},"use-cases",[76],{"type":48,"value":77},"Use Cases",{"type":42,"tag":51,"props":79,"children":80},{},[81,83,88],{"type":48,"value":82},"Conversation Orchestrator powers ",{"type":42,"tag":64,"props":84,"children":85},{},[86],{"type":48,"value":87},"automatic conversation capture and integration with existing voice implementations",{"type":48,"value":89}," — replacing manual conversation creation with either:",{"type":42,"tag":91,"props":92,"children":93},"ul",{},[94,105],{"type":42,"tag":95,"props":96,"children":97},"li",{},[98,103],{"type":42,"tag":64,"props":99,"children":100},{},[101],{"type":48,"value":102},"Passive ingestion",{"type":48,"value":104},": Declarative capture rules that automatically capture traffic as it flows",{"type":42,"tag":95,"props":106,"children":107},{},[108,113],{"type":42,"tag":64,"props":109,"children":110},{},[111],{"type":48,"value":112},"Active ingestion",{"type":48,"value":114},": TwiML parameters or API calls that route existing implementations into conversations",{"type":42,"tag":51,"props":116,"children":117},{},[118,123],{"type":42,"tag":64,"props":119,"children":120},{},[121],{"type":48,"value":122},"Note:",{"type":48,"value":124}," Active and passive ingestion can be configured on a per-channel basis. For example, you can use passive capture rules for SMS while using active TwiML parameters for voice calls.",{"type":42,"tag":72,"props":126,"children":128},{"id":127},"️-critical-voice-double-billing-warning",[129],{"type":48,"value":130},"⚠️ CRITICAL: Voice Double Billing Warning",{"type":42,"tag":57,"props":132,"children":133},{},[134],{"type":42,"tag":51,"props":135,"children":136},{},[137],{"type":42,"tag":64,"props":138,"children":139},{},[140],{"type":48,"value":141},"WARNING: You can be charged for STT (speech-to-text) twice on the same call if misconfigured.",{"type":42,"tag":51,"props":143,"children":144},{},[145],{"type":48,"value":146},"If you are using voice with ConversationRelay or Transcription in TwiML:",{"type":42,"tag":51,"props":148,"children":149},{},[150],{"type":42,"tag":64,"props":151,"children":152},{},[153,155,162],{"type":48,"value":154},"We do not recommend using passive voice capture rules (",{"type":42,"tag":156,"props":157,"children":159},"code",{"className":158},[],[160],{"type":48,"value":161},"captureRules",{"type":48,"value":163},") in your Configuration when using active TwiML.",{"type":42,"tag":51,"props":165,"children":166},{},[167,169,176],{"type":48,"value":168},"See the full ",{"type":42,"tag":170,"props":171,"children":173},"a",{"href":172},"#%EF%B8%8F-critical-voice-double-billing-warning-1",[174],{"type":48,"value":175},"Voice Double Billing Warning",{"type":48,"value":177}," section below for details.",{"type":42,"tag":179,"props":180,"children":182},"h3",{"id":181},"unified-customer-context",[183],{"type":48,"value":184},"Unified Customer Context",{"type":42,"tag":51,"props":186,"children":187},{},[188,190,195],{"type":48,"value":189},"Capture all channels (voice, SMS, WhatsApp, RCS, CHAT (via Conversation API (classic))) into a single conversation thread per customer. Conversation Memory resolves identity across channels and maintains persistent context. ",{"type":42,"tag":64,"props":191,"children":192},{},[193],{"type":48,"value":194},"Start here",{"type":48,"value":196}," — this is the most common pattern.",{"type":42,"tag":91,"props":198,"children":199},{},[200,216,226],{"type":42,"tag":95,"props":201,"children":202},{},[203,208,210],{"type":42,"tag":64,"props":204,"children":205},{},[206],{"type":48,"value":207},"Grouping",{"type":48,"value":209},": ",{"type":42,"tag":156,"props":211,"children":213},{"className":212},[],[214],{"type":48,"value":215},"GROUP_BY_PROFILE",{"type":42,"tag":95,"props":217,"children":218},{},[219,224],{"type":42,"tag":64,"props":220,"children":221},{},[222],{"type":48,"value":223},"Channels",{"type":48,"value":225},": SMS + VOICE + WHATSAPP + RCS + CHAT (via Conversation API (classic))",{"type":42,"tag":95,"props":227,"children":228},{},[229,234],{"type":42,"tag":64,"props":230,"children":231},{},[232],{"type":48,"value":233},"Linkage",{"type":48,"value":235},": Memory Store (identity resolution) + Intelligence (analysis)",{"type":42,"tag":179,"props":237,"children":239},{"id":238},"channel-isolated-analytics",[240],{"type":48,"value":241},"Channel-Isolated Analytics",{"type":42,"tag":51,"props":243,"children":244},{},[245],{"type":48,"value":246},"Keep voice transcripts separate from SMS threads for per-channel analysis. Intelligence operators run independently on each channel's conversation.",{"type":42,"tag":91,"props":248,"children":249},{},[250,264,273],{"type":42,"tag":95,"props":251,"children":252},{},[253,257,258],{"type":42,"tag":64,"props":254,"children":255},{},[256],{"type":48,"value":207},{"type":48,"value":209},{"type":42,"tag":156,"props":259,"children":261},{"className":260},[],[262],{"type":48,"value":263},"GROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPE",{"type":42,"tag":95,"props":265,"children":266},{},[267,271],{"type":42,"tag":64,"props":268,"children":269},{},[270],{"type":48,"value":223},{"type":48,"value":272},": SMS + VOICE (separate conversations)",{"type":42,"tag":95,"props":274,"children":275},{},[276,280],{"type":42,"tag":64,"props":277,"children":278},{},[279],{"type":48,"value":233},{"type":48,"value":281},": Intelligence (per-channel operators)",{"type":42,"tag":179,"props":283,"children":285},{"id":284},"agent-connect-integration",[286],{"type":48,"value":287},"Agent Connect Integration",{"type":42,"tag":51,"props":289,"children":290},{},[291],{"type":48,"value":292},"Capture conversations for AI-to-human escalation via Agent Connect (TAC SDK). Uses address-pair grouping required by the SDK.",{"type":42,"tag":91,"props":294,"children":295},{},[296,310,319],{"type":42,"tag":95,"props":297,"children":298},{},[299,303,304],{"type":42,"tag":64,"props":300,"children":301},{},[302],{"type":48,"value":207},{"type":48,"value":209},{"type":42,"tag":156,"props":305,"children":307},{"className":306},[],[308],{"type":48,"value":309},"GROUP_BY_PARTICIPANT_ADDRESSES",{"type":42,"tag":95,"props":311,"children":312},{},[313,317],{"type":42,"tag":64,"props":314,"children":315},{},[316],{"type":48,"value":223},{"type":48,"value":318},": SMS or VOICE",{"type":42,"tag":95,"props":320,"children":321},{},[322,326],{"type":42,"tag":64,"props":323,"children":324},{},[325],{"type":48,"value":233},{"type":48,"value":327},": Memory Store + Intelligence + Agent Connect",{"type":42,"tag":179,"props":329,"children":331},{"id":330},"post-conversation-memory-extraction",[332],{"type":48,"value":333},"Post-Conversation Memory Extraction",{"type":42,"tag":51,"props":335,"children":336},{},[337],{"type":48,"value":338},"Automatically extract observations from conversations into Conversation Memory. Opt-in — configure once, every conversation feeds the memory loop.",{"type":42,"tag":91,"props":340,"children":341},{},[342,357,367],{"type":42,"tag":95,"props":343,"children":344},{},[345,350,351],{"type":42,"tag":64,"props":346,"children":347},{},[348],{"type":48,"value":349},"Config",{"type":48,"value":209},{"type":42,"tag":156,"props":352,"children":354},{"className":353},[],[355],{"type":48,"value":356},"memoryExtractionEnabled: true",{"type":42,"tag":95,"props":358,"children":359},{},[360,365],{"type":42,"tag":64,"props":361,"children":362},{},[363],{"type":48,"value":364},"Trigger",{"type":48,"value":366},": INACTIVE and\u002For CLOSED lifecycle transitions (configurable)",{"type":42,"tag":95,"props":368,"children":369},{},[370,375],{"type":42,"tag":64,"props":371,"children":372},{},[373],{"type":48,"value":374},"Result",{"type":48,"value":376},": Observations and summaries written to linked Memory Store profiles",{"type":42,"tag":72,"props":378,"children":380},{"id":379},"how-it-works",[381],{"type":48,"value":382},"How It Works",{"type":42,"tag":179,"props":384,"children":386},{"id":385},"passive-ingestion-capture-rules",[387],{"type":48,"value":388},"Passive Ingestion (Capture Rules)",{"type":42,"tag":390,"props":391,"children":395},"pre",{"className":392,"code":394,"language":48},[393],"language-text","┌─────────────────────────────────────────────────────────────────────────────┐\n│  1. Inbound\u002Foutbound traffic arrives (SMS, Voice, WhatsApp, RCS)           │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  2. Capture rules match on phone number patterns                           │\n│     - from\u002Fto with wildcards (e.g., from: *, to: +15551234567)             │\n│     - Per-channel rules (SMS, VOICE, WHATSAPP, RCS)                        │\n│     - Metadata filters (callType for CLIENT\u002FSIP)                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  3. Conversation auto-created (or existing one matched via grouping)        │\n│     - GROUP_BY_PROFILE: merge by Memory Profile identity                   │\n│     - GROUP_BY_PARTICIPANT_ADDRESSES: merge by address pair                │\n│     - GROUP_BY_..._AND_CHANNEL_TYPE: separate per channel                  │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  4. Linked services activate                                               │\n│     - Memory Store: identity resolution, profile auto-creation             │\n│     - Intelligence: operators fire per Communication or at close           │\n│     - Status timeouts: ACTIVE → INACTIVE → CLOSED lifecycle                │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  5. On conversation close                                                  │\n│     - Memory extraction: observations written to Memory Store              │\n│     - CONVERSATION_END Intelligence operators fire (Summary, etc.)         │\n│     - Status callbacks delivered (if configured)                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n",[396],{"type":42,"tag":156,"props":397,"children":399},{"__ignoreMap":398},"",[400],{"type":48,"value":394},{"type":42,"tag":179,"props":402,"children":404},{"id":403},"active-ingestion-twiml-or-api",[405],{"type":48,"value":406},"Active Ingestion (TwiML or API)",{"type":42,"tag":390,"props":408,"children":411},{"className":409,"code":410,"language":48},[393],"┌─────────────────────────────────────────────────────────────────────────────┐\n│  1. Voice call arrives OR you create conversation via API                  │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  2a. TwiML: Pass conversationConfiguration or conversationId parameter      │\n│      - \u003CConversationRelay conversationConfiguration=\"CONFIG_ID\">           │\n│      - \u003CTranscription conversationId=\"CONV_ID\">                            │\n│  2b. API: POST to \u002Fv2\u002FConversations with participants                      │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  3. Conversation created or matched based on parameter                      │\n│     - conversationConfiguration: uses grouping rules                       │\n│     - conversationId: routes to specific conversation                      │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  4. Voice transcription or API communications added                         │\n│     - Same linked services activate (Memory Store, Intelligence)           │\n│     - Same lifecycle: ACTIVE → INACTIVE → CLOSED                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                      │\n                                      ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  5. On conversation close                                                  │\n│     - Memory extraction: observations written to Memory Store              │\n│     - CONVERSATION_END Intelligence operators fire (Summary, etc.)         │\n│     - Status callbacks delivered (if configured)                           │\n└─────────────────────────────────────────────────────────────────────────────┘\n",[412],{"type":42,"tag":156,"props":413,"children":414},{"__ignoreMap":398},[415],{"type":48,"value":410},{"type":42,"tag":72,"props":417,"children":419},{"id":418},"scope",[420],{"type":48,"value":421},"Scope",{"type":42,"tag":179,"props":423,"children":425},{"id":424},"can",[426],{"type":48,"value":427},"CAN",{"type":42,"tag":91,"props":429,"children":430},{},[431,436,446,451,456,467,472,477,490,526,531,536,541],{"type":42,"tag":95,"props":432,"children":433},{},[434],{"type":48,"value":435},"Automatically capture SMS, voice, WhatsApp, RCS, and CHAT (via Conversation API (classic)) into Conversations via passive ingestion (capture rules) OR work with existing voice implementations via active ingestion (TwiML parameters: conversationConfiguration, conversationId)",{"type":42,"tag":95,"props":437,"children":438},{},[439,441],{"type":48,"value":440},"Merge multiple channels into one Conversation thread via ",{"type":42,"tag":156,"props":442,"children":444},{"className":443},[],[445],{"type":48,"value":215},{"type":42,"tag":95,"props":447,"children":448},{},[449],{"type":48,"value":450},"Link Memory Store for automatic identity resolution and observation extraction",{"type":42,"tag":95,"props":452,"children":453},{},[454],{"type":48,"value":455},"Link multiple Intelligence Configurations for real-time and post-conversation analysis",{"type":42,"tag":95,"props":457,"children":458},{},[459,461],{"type":48,"value":460},"Bridge Conversation API (classic) Services for browser SDK chat via ",{"type":42,"tag":156,"props":462,"children":464},{"className":463},[],[465],{"type":48,"value":466},"conversationsV1Bridge",{"type":42,"tag":95,"props":468,"children":469},{},[470],{"type":48,"value":471},"Configure per-channel capture rules with wildcard matching",{"type":42,"tag":95,"props":473,"children":474},{},[475],{"type":48,"value":476},"Set independent timeout policies per channel",{"type":42,"tag":95,"props":478,"children":479},{},[480,482,488],{"type":48,"value":481},"Add ",{"type":42,"tag":156,"props":483,"children":485},{"className":484},[],[486],{"type":48,"value":487},"statusCallbacks",{"type":48,"value":489}," for webhook notifications on conversation state changes",{"type":42,"tag":95,"props":491,"children":492},{},[493,495,501,503,509,511,517,518,524],{"type":48,"value":494},"Pass ",{"type":42,"tag":156,"props":496,"children":498},{"className":497},[],[499],{"type":48,"value":500},"conversationConfiguration",{"type":48,"value":502}," or ",{"type":42,"tag":156,"props":504,"children":506},{"className":505},[],[507],{"type":48,"value":508},"conversationId",{"type":48,"value":510}," in ",{"type":42,"tag":156,"props":512,"children":514},{"className":513},[],[515],{"type":48,"value":516},"\u003CConversationRelay>",{"type":48,"value":502},{"type":42,"tag":156,"props":519,"children":521},{"className":520},[],[522],{"type":48,"value":523},"\u003CTranscription>",{"type":48,"value":525}," TwiML to create or route to a conversation (Active TwiML mode) — both parameters supported in both TwiML verbs",{"type":42,"tag":95,"props":527,"children":528},{},[529],{"type":48,"value":530},"Close conversations explicitly via PATCH to trigger Memory extraction and CONVERSATION_END operators",{"type":42,"tag":95,"props":532,"children":533},{},[534],{"type":48,"value":535},"List and filter Conversations by status, channel, and date range",{"type":42,"tag":95,"props":537,"children":538},{},[539],{"type":48,"value":540},"Read Communications (messages + voice utterances) within a Conversation",{"type":42,"tag":95,"props":542,"children":543},{},[544],{"type":48,"value":545},"Authenticate with Account SID\u002FAuth Token or API Key\u002FSecret",{"type":42,"tag":179,"props":547,"children":549},{"id":548},"cannot",[550],{"type":48,"value":551},"CANNOT",{"type":42,"tag":91,"props":553,"children":554},{},[555,565,575,593,611,653,679,689,706,716,750,767],{"type":42,"tag":95,"props":556,"children":557},{},[558,563],{"type":42,"tag":64,"props":559,"children":560},{},[561],{"type":48,"value":562},"Cannot update Configurations with PATCH",{"type":48,"value":564}," — PUT only, full replacement. Omitting fields deletes them. Always re-fetch before updating.",{"type":42,"tag":95,"props":566,"children":567},{},[568,573],{"type":42,"tag":64,"props":569,"children":570},{},[571],{"type":48,"value":572},"Cannot exceed 10 Configurations per account",{"type":48,"value":574}," — Hard limit at GA. Each config supports up to 100 capture rules per channel. Delete unused configs to make room. Plan Configuration topology for large phone number portfolios accordingly (e.g., 101 numbers for one channel requires 2 configs).",{"type":42,"tag":95,"props":576,"children":577},{},[578,583,585,591],{"type":42,"tag":64,"props":579,"children":580},{},[581],{"type":48,"value":582},"Cannot change grouping type after creation",{"type":48,"value":584}," — ",{"type":42,"tag":156,"props":586,"children":588},{"className":587},[],[589],{"type":48,"value":590},"conversationGroupingType",{"type":48,"value":592}," is immutable on a Configuration. Create a new config if you need a different grouping.",{"type":42,"tag":95,"props":594,"children":595},{},[596,601,603,609],{"type":42,"tag":64,"props":597,"children":598},{},[599],{"type":48,"value":600},"Cannot capture CLIENT or SIP voice calls without explicit callType metadata",{"type":48,"value":602}," — PSTN is captured by default. Browser (Client SDK) and SIP calls require ",{"type":42,"tag":156,"props":604,"children":606},{"className":605},[],[607],{"type":48,"value":608},"metadata.callType",{"type":48,"value":610}," in capture rules.",{"type":42,"tag":95,"props":612,"children":613},{},[614,619,621,626,627,632,633,638,639,644,646,651],{"type":42,"tag":64,"props":615,"children":616},{},[617],{"type":48,"value":618},"Not recommended to combine passive VOICE capture rules with active TwiML voice (ConversationRelay or Transcription with conversation parameters)",{"type":48,"value":620}," — You will be double-charged for STT. The system does not prevent this configuration, but it is not recommended. Passive voice capture uses Real-Time Transcription (RTT) under the hood. If you pass ",{"type":42,"tag":156,"props":622,"children":624},{"className":623},[],[625],{"type":48,"value":500},{"type":48,"value":502},{"type":42,"tag":156,"props":628,"children":630},{"className":629},[],[631],{"type":48,"value":508},{"type":48,"value":510},{"type":42,"tag":156,"props":634,"children":636},{"className":635},[],[637],{"type":48,"value":516},{"type":48,"value":502},{"type":42,"tag":156,"props":640,"children":642},{"className":641},[],[643],{"type":48,"value":523},{"type":48,"value":645}," TwiML, you are using active ingestion which has its own STT engine. Both engines will run = double STT billing. Use active TwiML (pass conversation parameters) OR passive capture rules (captureRules), not both for the same traffic. See the ",{"type":42,"tag":170,"props":647,"children":649},{"href":648},"#%EF%B8%8F-critical-voice-double-billing-warning",[650],{"type":48,"value":175},{"type":48,"value":652}," section above.",{"type":42,"tag":95,"props":654,"children":655},{},[656,661,663,669,671,677],{"type":42,"tag":64,"props":657,"children":658},{},[659],{"type":48,"value":660},"Cannot detect failed Memory linkage",{"type":48,"value":662}," — If ",{"type":42,"tag":156,"props":664,"children":666},{"className":665},[],[667],{"type":48,"value":668},"memoryStoreId",{"type":48,"value":670}," points to a deleted or invalid store, capture still works but identity resolution and extraction silently fail. See ",{"type":42,"tag":156,"props":672,"children":674},{"className":673},[],[675],{"type":48,"value":676},"twilio-debugging-observability",{"type":48,"value":678},".",{"type":42,"tag":95,"props":680,"children":681},{},[682,687],{"type":42,"tag":64,"props":683,"children":684},{},[685],{"type":48,"value":686},"Cannot filter Intelligence operators by participant type",{"type":48,"value":688}," — Operators fire on ALL Communications (customer and agent). Use the operator prompt to specify which participant to analyze.",{"type":42,"tag":95,"props":690,"children":691},{},[692,697,699,705],{"type":42,"tag":64,"props":693,"children":694},{},[695],{"type":48,"value":696},"Cannot extract Memory observations mid-conversation (ACTIVE state)",{"type":48,"value":698}," — Extraction is opt-in and can fire on INACTIVE and\u002For CLOSED lifecycle transitions, but not while the conversation is ACTIVE. For real-time Memory writes during an active conversation, post Observations directly via ",{"type":42,"tag":156,"props":700,"children":702},{"className":701},[],[703],{"type":48,"value":704},"twilio-customer-memory",{"type":48,"value":678},{"type":42,"tag":95,"props":707,"children":708},{},[709,714],{"type":42,"tag":64,"props":710,"children":711},{},[712],{"type":48,"value":713},"Cannot have conversations pick up config changes retroactively",{"type":48,"value":715}," — Conversations pin the Configuration version at creation time. Close existing conversations to apply updated rules.",{"type":42,"tag":95,"props":717,"children":718},{},[719,724,726,732,734,740,742,748],{"type":42,"tag":64,"props":720,"children":721},{},[722],{"type":48,"value":723},"Cannot use the POST response to get the Configuration ID",{"type":48,"value":725}," — Creation returns 202 with an operation. Poll the operation's ",{"type":42,"tag":156,"props":727,"children":729},{"className":728},[],[730],{"type":48,"value":731},"statusUrl",{"type":48,"value":733}," until ",{"type":42,"tag":156,"props":735,"children":737},{"className":736},[],[738],{"type":48,"value":739},"status",{"type":48,"value":741}," is ",{"type":42,"tag":156,"props":743,"children":745},{"className":744},[],[746],{"type":48,"value":747},"COMPLETED",{"type":48,"value":749},", then retrieve the configuration ID from the operation result.",{"type":42,"tag":95,"props":751,"children":752},{},[753,758,760,765],{"type":42,"tag":64,"props":754,"children":755},{},[756],{"type":48,"value":757},"No standalone operation",{"type":48,"value":759}," — Requires a Memory Store because Conversation Orchestrator uses profiles for identity resolution. ",{"type":42,"tag":156,"props":761,"children":763},{"className":762},[],[764],{"type":48,"value":668},{"type":48,"value":766}," is mandatory when creating a Configuration.",{"type":42,"tag":95,"props":768,"children":769},{},[770,775,777,783],{"type":42,"tag":64,"props":771,"children":772},{},[773],{"type":48,"value":774},"JSON-only API",{"type":48,"value":776}," — All Conversation Orchestrator endpoints require ",{"type":42,"tag":156,"props":778,"children":780},{"className":779},[],[781],{"type":48,"value":782},"Content-Type: application\u002Fjson",{"type":48,"value":784},". Form-encoded bodies are rejected.",{"type":42,"tag":72,"props":786,"children":788},{"id":787},"quick-decision",[789],{"type":48,"value":790},"Quick Decision",{"type":42,"tag":792,"props":793,"children":794},"table",{},[795,819],{"type":42,"tag":796,"props":797,"children":798},"thead",{},[799],{"type":42,"tag":800,"props":801,"children":802},"tr",{},[803,809,814],{"type":42,"tag":804,"props":805,"children":806},"th",{},[807],{"type":48,"value":808},"Need",{"type":42,"tag":804,"props":810,"children":811},{},[812],{"type":48,"value":813},"Use",{"type":42,"tag":804,"props":815,"children":816},{},[817],{"type":48,"value":818},"Why",{"type":42,"tag":820,"props":821,"children":822},"tbody",{},[823,854,877,900,925,950,974],{"type":42,"tag":800,"props":824,"children":825},{},[826,832,849],{"type":42,"tag":827,"props":828,"children":829},"td",{},[830],{"type":48,"value":831},"Already have ConversationRelay or Transcription voice implementation",{"type":42,"tag":827,"props":833,"children":834},{},[835,836,841,842,847],{"type":48,"value":494},{"type":42,"tag":156,"props":837,"children":839},{"className":838},[],[840],{"type":48,"value":500},{"type":48,"value":502},{"type":42,"tag":156,"props":843,"children":845},{"className":844},[],[846],{"type":48,"value":508},{"type":48,"value":848}," in TwiML (Active ingestion) — do NOT add passive VOICE capture rules",{"type":42,"tag":827,"props":850,"children":851},{},[852],{"type":48,"value":853},"More granular control over which calls are captured. Avoids double STT billing.",{"type":42,"tag":800,"props":855,"children":856},{},[857,862,872],{"type":42,"tag":827,"props":858,"children":859},{},[860],{"type":48,"value":861},"Capture all messaging into unified customer conversations",{"type":42,"tag":827,"props":863,"children":864},{},[865,867],{"type":48,"value":866},"Configuration with passive capture rules + Memory Store + ",{"type":42,"tag":156,"props":868,"children":870},{"className":869},[],[871],{"type":48,"value":215},{"type":42,"tag":827,"props":873,"children":874},{},[875],{"type":48,"value":876},"Automatic capture with cross-channel identity resolution",{"type":42,"tag":800,"props":878,"children":879},{},[880,885,895],{"type":42,"tag":827,"props":881,"children":882},{},[883],{"type":48,"value":884},"Keep voice and SMS conversations separate",{"type":42,"tag":827,"props":886,"children":887},{},[888,890],{"type":48,"value":889},"Configuration with ",{"type":42,"tag":156,"props":891,"children":893},{"className":892},[],[894],{"type":48,"value":263},{"type":42,"tag":827,"props":896,"children":897},{},[898],{"type":48,"value":899},"Channel-isolated threads for per-channel analytics",{"type":42,"tag":800,"props":901,"children":902},{},[903,908,920],{"type":42,"tag":827,"props":904,"children":905},{},[906],{"type":48,"value":907},"Auto-extract customer observations from conversations",{"type":42,"tag":827,"props":909,"children":910},{},[911,913,918],{"type":48,"value":912},"Set ",{"type":42,"tag":156,"props":914,"children":916},{"className":915},[],[917],{"type":48,"value":356},{"type":48,"value":919}," on Configuration",{"type":42,"tag":827,"props":921,"children":922},{},[923],{"type":48,"value":924},"Triggers on conversation close, writes to linked Memory Store",{"type":42,"tag":800,"props":926,"children":927},{},[928,933,945],{"type":42,"tag":827,"props":929,"children":930},{},[931],{"type":48,"value":932},"Analyze conversations with Intelligence operators",{"type":42,"tag":827,"props":934,"children":935},{},[936,938,944],{"type":48,"value":937},"Link ",{"type":42,"tag":156,"props":939,"children":941},{"className":940},[],[942],{"type":48,"value":943},"intelligenceConfigurationIds",{"type":48,"value":919},{"type":42,"tag":827,"props":946,"children":947},{},[948],{"type":48,"value":949},"Operators fire per Communication or at conversation close",{"type":42,"tag":800,"props":951,"children":952},{},[953,958,969],{"type":42,"tag":827,"props":954,"children":955},{},[956],{"type":48,"value":957},"Capture browser voice calls (Client SDK)",{"type":42,"tag":827,"props":959,"children":960},{},[961,963],{"type":48,"value":962},"Add VOICE capture rule with ",{"type":42,"tag":156,"props":964,"children":966},{"className":965},[],[967],{"type":48,"value":968},"metadata.callType: \"CLIENT\"",{"type":42,"tag":827,"props":970,"children":971},{},[972],{"type":48,"value":973},"PSTN-only by default; CLIENT needs explicit rule",{"type":42,"tag":800,"props":975,"children":976},{},[977,982,993],{"type":42,"tag":827,"props":978,"children":979},{},[980],{"type":48,"value":981},"Capture CHAT (via Conversation API (classic))",{"type":42,"tag":827,"props":983,"children":984},{},[985,986,992],{"type":48,"value":912},{"type":42,"tag":156,"props":987,"children":989},{"className":988},[],[990],{"type":48,"value":991},"conversationsV1Bridge.serviceId",{"type":48,"value":919},{"type":42,"tag":827,"props":994,"children":995},{},[996],{"type":48,"value":997},"CHAT flows through a Conversations (v1) Service bridged into Orchestrator",{"type":42,"tag":72,"props":999,"children":1001},{"id":1000},"️-critical-voice-double-billing-warning-1",[1002],{"type":48,"value":130},{"type":42,"tag":57,"props":1004,"children":1005},{},[1006],{"type":42,"tag":51,"props":1007,"children":1008},{},[1009],{"type":42,"tag":64,"props":1010,"children":1011},{},[1012],{"type":48,"value":141},{"type":42,"tag":51,"props":1014,"children":1015},{},[1016],{"type":42,"tag":64,"props":1017,"children":1018},{},[1019,1020,1025],{"type":48,"value":154},{"type":42,"tag":156,"props":1021,"children":1023},{"className":1022},[],[1024],{"type":48,"value":161},{"type":48,"value":163},{"type":42,"tag":51,"props":1027,"children":1028},{},[1029,1031,1036,1037,1042],{"type":48,"value":1030},"When you pass ",{"type":42,"tag":156,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":48,"value":500},{"type":48,"value":502},{"type":42,"tag":156,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":48,"value":508},{"type":48,"value":1043}," in your TwiML:",{"type":42,"tag":91,"props":1045,"children":1046},{},[1047,1058,1068,1078],{"type":42,"tag":95,"props":1048,"children":1049},{},[1050,1056],{"type":42,"tag":156,"props":1051,"children":1053},{"className":1052},[],[1054],{"type":48,"value":1055},"\u003CConversationRelay conversationConfiguration=\"CONFIG_ID\">",{"type":48,"value":1057}," — Active TwiML mode",{"type":42,"tag":95,"props":1059,"children":1060},{},[1061,1067],{"type":42,"tag":156,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":48,"value":1066},"\u003CConversationRelay conversationId=\"CONVERSATION_ID\">",{"type":48,"value":1057},{"type":42,"tag":95,"props":1069,"children":1070},{},[1071,1077],{"type":42,"tag":156,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":48,"value":1076},"\u003CTranscription conversationConfiguration=\"CONFIG_ID\">",{"type":48,"value":1057},{"type":42,"tag":95,"props":1079,"children":1080},{},[1081,1087],{"type":42,"tag":156,"props":1082,"children":1084},{"className":1083},[],[1085],{"type":48,"value":1086},"\u003CTranscription conversationId=\"CONVERSATION_ID\">",{"type":48,"value":1057},{"type":42,"tag":51,"props":1089,"children":1090},{},[1091,1093,1098],{"type":48,"value":1092},"You are using ",{"type":42,"tag":64,"props":1094,"children":1095},{},[1096],{"type":48,"value":1097},"active ingestion",{"type":48,"value":1099},". Your voice is already being captured and transcribed.",{"type":42,"tag":51,"props":1101,"children":1102},{},[1103],{"type":42,"tag":64,"props":1104,"children":1105},{},[1106],{"type":48,"value":1107},"What causes double billing:",{"type":42,"tag":91,"props":1109,"children":1110},{},[1111,1116,1121],{"type":42,"tag":95,"props":1112,"children":1113},{},[1114],{"type":48,"value":1115},"Passive voice capture rules use Real-Time Transcription (RTT) under the hood",{"type":42,"tag":95,"props":1117,"children":1118},{},[1119],{"type":48,"value":1120},"ConversationRelay\u002FTranscription use their own STT engines",{"type":42,"tag":95,"props":1122,"children":1123},{},[1124,1126],{"type":48,"value":1125},"If both are active on the same call = ",{"type":42,"tag":64,"props":1127,"children":1128},{},[1129],{"type":48,"value":1130},"you pay for BOTH STT engines",{"type":42,"tag":51,"props":1132,"children":1133},{},[1134],{"type":42,"tag":64,"props":1135,"children":1136},{},[1137],{"type":48,"value":1138},"Correct configuration for active voice (TwiML):",{"type":42,"tag":390,"props":1140,"children":1144},{"className":1141,"code":1142,"language":1143,"meta":398,"style":398},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"channelSettings\": {\n    \"VOICE\": {\n      \"statusTimeouts\": null  \u002F\u002F ✅ Define channel settings\n      \u002F\u002F ❌ NO captureRules — omit this field entirely\n    }\n  }\n}\n","json",[1145],{"type":42,"tag":156,"props":1146,"children":1147},{"__ignoreMap":398},[1148,1160,1190,1217,1251,1260,1269,1278],{"type":42,"tag":1149,"props":1150,"children":1153},"span",{"class":1151,"line":1152},"line",1,[1154],{"type":42,"tag":1149,"props":1155,"children":1157},{"style":1156},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1158],{"type":48,"value":1159},"{\n",{"type":42,"tag":1149,"props":1161,"children":1163},{"class":1151,"line":1162},2,[1164,1169,1175,1180,1185],{"type":42,"tag":1149,"props":1165,"children":1166},{"style":1156},[1167],{"type":48,"value":1168},"  \"",{"type":42,"tag":1149,"props":1170,"children":1172},{"style":1171},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1173],{"type":48,"value":1174},"channelSettings",{"type":42,"tag":1149,"props":1176,"children":1177},{"style":1156},[1178],{"type":48,"value":1179},"\"",{"type":42,"tag":1149,"props":1181,"children":1182},{"style":1156},[1183],{"type":48,"value":1184},":",{"type":42,"tag":1149,"props":1186,"children":1187},{"style":1156},[1188],{"type":48,"value":1189}," {\n",{"type":42,"tag":1149,"props":1191,"children":1193},{"class":1151,"line":1192},3,[1194,1199,1205,1209,1213],{"type":42,"tag":1149,"props":1195,"children":1196},{"style":1156},[1197],{"type":48,"value":1198},"    \"",{"type":42,"tag":1149,"props":1200,"children":1202},{"style":1201},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1203],{"type":48,"value":1204},"VOICE",{"type":42,"tag":1149,"props":1206,"children":1207},{"style":1156},[1208],{"type":48,"value":1179},{"type":42,"tag":1149,"props":1210,"children":1211},{"style":1156},[1212],{"type":48,"value":1184},{"type":42,"tag":1149,"props":1214,"children":1215},{"style":1156},[1216],{"type":48,"value":1189},{"type":42,"tag":1149,"props":1218,"children":1220},{"class":1151,"line":1219},4,[1221,1226,1232,1236,1240,1245],{"type":42,"tag":1149,"props":1222,"children":1223},{"style":1156},[1224],{"type":48,"value":1225},"      \"",{"type":42,"tag":1149,"props":1227,"children":1229},{"style":1228},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1230],{"type":48,"value":1231},"statusTimeouts",{"type":42,"tag":1149,"props":1233,"children":1234},{"style":1156},[1235],{"type":48,"value":1179},{"type":42,"tag":1149,"props":1237,"children":1238},{"style":1156},[1239],{"type":48,"value":1184},{"type":42,"tag":1149,"props":1241,"children":1242},{"style":1156},[1243],{"type":48,"value":1244}," null",{"type":42,"tag":1149,"props":1246,"children":1248},{"style":1247},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1249],{"type":48,"value":1250},"  \u002F\u002F ✅ Define channel settings\n",{"type":42,"tag":1149,"props":1252,"children":1254},{"class":1151,"line":1253},5,[1255],{"type":42,"tag":1149,"props":1256,"children":1257},{"style":1247},[1258],{"type":48,"value":1259},"      \u002F\u002F ❌ NO captureRules — omit this field entirely\n",{"type":42,"tag":1149,"props":1261,"children":1263},{"class":1151,"line":1262},6,[1264],{"type":42,"tag":1149,"props":1265,"children":1266},{"style":1156},[1267],{"type":48,"value":1268},"    }\n",{"type":42,"tag":1149,"props":1270,"children":1272},{"class":1151,"line":1271},7,[1273],{"type":42,"tag":1149,"props":1274,"children":1275},{"style":1156},[1276],{"type":48,"value":1277},"  }\n",{"type":42,"tag":1149,"props":1279,"children":1281},{"class":1151,"line":1280},8,[1282],{"type":42,"tag":1149,"props":1283,"children":1284},{"style":1156},[1285],{"type":48,"value":1286},"}\n",{"type":42,"tag":51,"props":1288,"children":1289},{},[1290],{"type":42,"tag":64,"props":1291,"children":1292},{},[1293],{"type":48,"value":1294},"When to use passive voice capture rules:",{"type":42,"tag":91,"props":1296,"children":1297},{},[1298,1303],{"type":42,"tag":95,"props":1299,"children":1300},{},[1301],{"type":48,"value":1302},"Human agent calls WITHOUT ConversationRelay or Transcription TwiML",{"type":42,"tag":95,"props":1304,"children":1305},{},[1306],{"type":48,"value":1307},"You want automatic capture with no TwiML changes",{"type":42,"tag":51,"props":1309,"children":1310},{},[1311],{"type":42,"tag":64,"props":1312,"children":1313},{},[1314],{"type":48,"value":1315},"When to use active voice (TwiML parameters):",{"type":42,"tag":91,"props":1317,"children":1318},{},[1319,1324,1329],{"type":42,"tag":95,"props":1320,"children":1321},{},[1322],{"type":48,"value":1323},"AI voice agents with ConversationRelay",{"type":42,"tag":95,"props":1325,"children":1326},{},[1327],{"type":48,"value":1328},"Adding transcription to existing API-created conversations",{"type":42,"tag":95,"props":1330,"children":1331},{},[1332],{"type":48,"value":1333},"Any scenario where you're already passing conversation parameters in TwiML",{"type":42,"tag":72,"props":1335,"children":1337},{"id":1336},"decision-frameworks",[1338],{"type":48,"value":1339},"Decision Frameworks",{"type":42,"tag":179,"props":1341,"children":1343},{"id":1342},"conversation-grouping",[1344],{"type":48,"value":1345},"Conversation Grouping",{"type":42,"tag":51,"props":1347,"children":1348},{},[1349,1351,1356],{"type":48,"value":1350},"The ",{"type":42,"tag":156,"props":1352,"children":1354},{"className":1353},[],[1355],{"type":48,"value":590},{"type":48,"value":1357}," on your configuration controls how new traffic groups into conversations.",{"type":42,"tag":792,"props":1359,"children":1360},{},[1361,1382],{"type":42,"tag":796,"props":1362,"children":1363},{},[1364],{"type":42,"tag":800,"props":1365,"children":1366},{},[1367,1372,1377],{"type":42,"tag":804,"props":1368,"children":1369},{},[1370],{"type":48,"value":1371},"Type",{"type":42,"tag":804,"props":1373,"children":1374},{},[1375],{"type":48,"value":1376},"Behavior",{"type":42,"tag":804,"props":1378,"children":1379},{},[1380],{"type":48,"value":1381},"When to use",{"type":42,"tag":820,"props":1383,"children":1384},{},[1385,1406,1427],{"type":42,"tag":800,"props":1386,"children":1387},{},[1388,1396,1401],{"type":42,"tag":827,"props":1389,"children":1390},{},[1391],{"type":42,"tag":156,"props":1392,"children":1394},{"className":1393},[],[1395],{"type":48,"value":263},{"type":42,"tag":827,"props":1397,"children":1398},{},[1399],{"type":48,"value":1400},"Separate conversations per channel. SMS and Voice between the same numbers create different conversations.",{"type":42,"tag":827,"props":1402,"children":1403},{},[1404],{"type":48,"value":1405},"The default. Keeps channels separate.",{"type":42,"tag":800,"props":1407,"children":1408},{},[1409,1417,1422],{"type":42,"tag":827,"props":1410,"children":1411},{},[1412],{"type":42,"tag":156,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":48,"value":309},{"type":42,"tag":827,"props":1418,"children":1419},{},[1420],{"type":48,"value":1421},"Same conversation across channels when participants share an address.",{"type":42,"tag":827,"props":1423,"children":1424},{},[1425],{"type":48,"value":1426},"Omnichannel on the same addresses—customer can switch between SMS and Voice seamlessly.",{"type":42,"tag":800,"props":1428,"children":1429},{},[1430,1438,1443],{"type":42,"tag":827,"props":1431,"children":1432},{},[1433],{"type":42,"tag":156,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":48,"value":215},{"type":42,"tag":827,"props":1439,"children":1440},{},[1441],{"type":48,"value":1442},"Groups by customer profile. The same customer from different devices or channels goes to one conversation.",{"type":42,"tag":827,"props":1444,"children":1445},{},[1446],{"type":48,"value":1447},"Preferred for production. Recommended when channels use different addresses (chat and voice).",{"type":42,"tag":51,"props":1449,"children":1450},{},[1451,1456],{"type":42,"tag":64,"props":1452,"children":1453},{},[1454],{"type":48,"value":1455},"Immutable after creation.",{"type":48,"value":1457}," Choose before creating the Configuration. To change grouping, create a new Configuration.",{"type":42,"tag":179,"props":1459,"children":1461},{"id":1460},"supported-channels",[1462],{"type":48,"value":1463},"Supported Channels",{"type":42,"tag":51,"props":1465,"children":1466},{},[1467],{"type":48,"value":1468},"Conversation Orchestrator supports voice, SMS, RCS, and WhatsApp channels. You can also bring Chat traffic in through the Conversations API (classic) bridge.",{"type":42,"tag":792,"props":1470,"children":1471},{},[1472,1498],{"type":42,"tag":796,"props":1473,"children":1474},{},[1475],{"type":42,"tag":800,"props":1476,"children":1477},{},[1478,1483,1488,1493],{"type":42,"tag":804,"props":1479,"children":1480},{},[1481],{"type":48,"value":1482},"Channel",{"type":42,"tag":804,"props":1484,"children":1485},{},[1486],{"type":48,"value":1487},"Address Format",{"type":42,"tag":804,"props":1489,"children":1490},{},[1491],{"type":48,"value":1492},"Example",{"type":42,"tag":804,"props":1494,"children":1495},{},[1496],{"type":48,"value":1497},"Ingestion Modes",{"type":42,"tag":820,"props":1499,"children":1500},{},[1501,1528,1554,1580,1605,1629,1653],{"type":42,"tag":800,"props":1502,"children":1503},{},[1504,1509,1514,1523],{"type":42,"tag":827,"props":1505,"children":1506},{},[1507],{"type":48,"value":1508},"Voice (PSTN)",{"type":42,"tag":827,"props":1510,"children":1511},{},[1512],{"type":48,"value":1513},"E.164 phone number",{"type":42,"tag":827,"props":1515,"children":1516},{},[1517],{"type":42,"tag":156,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":48,"value":1522},"+15559876543",{"type":42,"tag":827,"props":1524,"children":1525},{},[1526],{"type":48,"value":1527},"Passive and active",{"type":42,"tag":800,"props":1529,"children":1530},{},[1531,1536,1541,1550],{"type":42,"tag":827,"props":1532,"children":1533},{},[1534],{"type":48,"value":1535},"Voice (CLIENT)",{"type":42,"tag":827,"props":1537,"children":1538},{},[1539],{"type":48,"value":1540},"Client identity string",{"type":42,"tag":827,"props":1542,"children":1543},{},[1544],{"type":42,"tag":156,"props":1545,"children":1547},{"className":1546},[],[1548],{"type":48,"value":1549},"agent-1",{"type":42,"tag":827,"props":1551,"children":1552},{},[1553],{"type":48,"value":1527},{"type":42,"tag":800,"props":1555,"children":1556},{},[1557,1562,1567,1576],{"type":42,"tag":827,"props":1558,"children":1559},{},[1560],{"type":48,"value":1561},"Voice (PUBLIC_SIP)",{"type":42,"tag":827,"props":1563,"children":1564},{},[1565],{"type":48,"value":1566},"SIP URI or E.164 phone number",{"type":42,"tag":827,"props":1568,"children":1569},{},[1570],{"type":42,"tag":156,"props":1571,"children":1573},{"className":1572},[],[1574],{"type":48,"value":1575},"sip:user@example.com",{"type":42,"tag":827,"props":1577,"children":1578},{},[1579],{"type":48,"value":1527},{"type":42,"tag":800,"props":1581,"children":1582},{},[1583,1588,1592,1601],{"type":42,"tag":827,"props":1584,"children":1585},{},[1586],{"type":48,"value":1587},"SMS",{"type":42,"tag":827,"props":1589,"children":1590},{},[1591],{"type":48,"value":1513},{"type":42,"tag":827,"props":1593,"children":1594},{},[1595],{"type":42,"tag":156,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":48,"value":1600},"+15551234567",{"type":42,"tag":827,"props":1602,"children":1603},{},[1604],{"type":48,"value":1527},{"type":42,"tag":800,"props":1606,"children":1607},{},[1608,1613,1617,1625],{"type":42,"tag":827,"props":1609,"children":1610},{},[1611],{"type":48,"value":1612},"RCS",{"type":42,"tag":827,"props":1614,"children":1615},{},[1616],{"type":48,"value":1513},{"type":42,"tag":827,"props":1618,"children":1619},{},[1620],{"type":42,"tag":156,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":48,"value":1600},{"type":42,"tag":827,"props":1626,"children":1627},{},[1628],{"type":48,"value":1527},{"type":42,"tag":800,"props":1630,"children":1631},{},[1632,1637,1641,1649],{"type":42,"tag":827,"props":1633,"children":1634},{},[1635],{"type":48,"value":1636},"WhatsApp",{"type":42,"tag":827,"props":1638,"children":1639},{},[1640],{"type":48,"value":1513},{"type":42,"tag":827,"props":1642,"children":1643},{},[1644],{"type":42,"tag":156,"props":1645,"children":1647},{"className":1646},[],[1648],{"type":48,"value":1600},{"type":42,"tag":827,"props":1650,"children":1651},{},[1652],{"type":48,"value":1527},{"type":42,"tag":800,"props":1654,"children":1655},{},[1656,1661,1666,1675],{"type":42,"tag":827,"props":1657,"children":1658},{},[1659],{"type":48,"value":1660},"Chat",{"type":42,"tag":827,"props":1662,"children":1663},{},[1664],{"type":48,"value":1665},"Identity string",{"type":42,"tag":827,"props":1667,"children":1668},{},[1669],{"type":42,"tag":156,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":48,"value":1674},"user123",{"type":42,"tag":827,"props":1676,"children":1677},{},[1678],{"type":48,"value":1679},"Conversations API (classic) bridge only",{"type":42,"tag":179,"props":1681,"children":1683},{"id":1682},"channel-configuration-details",[1684],{"type":48,"value":1685},"Channel Configuration Details",{"type":42,"tag":51,"props":1687,"children":1688},{},[1689],{"type":42,"tag":64,"props":1690,"children":1691},{},[1692],{"type":48,"value":1693},"Voice:",{"type":42,"tag":91,"props":1695,"children":1696},{},[1697,1746,1751,1756,1775],{"type":42,"tag":95,"props":1698,"children":1699},{},[1700,1702,1708,1710],{"type":48,"value":1701},"Use ",{"type":42,"tag":156,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":48,"value":1707},"callType",{"type":48,"value":1709}," metadata in passive capture rules to distinguish call types:\n",{"type":42,"tag":91,"props":1711,"children":1712},{},[1713,1724,1735],{"type":42,"tag":95,"props":1714,"children":1715},{},[1716,1722],{"type":42,"tag":156,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":48,"value":1721},"PSTN",{"type":48,"value":1723}," — Standard phone calls over the public network",{"type":42,"tag":95,"props":1725,"children":1726},{},[1727,1733],{"type":42,"tag":156,"props":1728,"children":1730},{"className":1729},[],[1731],{"type":48,"value":1732},"CLIENT",{"type":48,"value":1734}," — In-app calls using Twilio Voice SDK",{"type":42,"tag":95,"props":1736,"children":1737},{},[1738,1744],{"type":42,"tag":156,"props":1739,"children":1741},{"className":1740},[],[1742],{"type":48,"value":1743},"PUBLIC_SIP",{"type":48,"value":1745}," — Calls over a SIP interface",{"type":42,"tag":95,"props":1747,"children":1748},{},[1749],{"type":48,"value":1750},"When you save voice capture rules, Conversation Orchestrator automatically provisions call filtering and Real-Time Transcription",{"type":42,"tag":95,"props":1752,"children":1753},{},[1754],{"type":48,"value":1755},"Each TTS fragment is a separate communication (3-5 per agent response)",{"type":42,"tag":95,"props":1757,"children":1758},{},[1759,1761,1767,1769],{"type":48,"value":1760},"Voice communications have ",{"type":42,"tag":156,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":48,"value":1766},"content.type",{"type":48,"value":1768}," of ",{"type":42,"tag":156,"props":1770,"children":1772},{"className":1771},[],[1773],{"type":48,"value":1774},"TRANSCRIPTION",{"type":42,"tag":95,"props":1776,"children":1777},{},[1778,1783,1785,1790],{"type":42,"tag":64,"props":1779,"children":1780},{},[1781],{"type":48,"value":1782},"Warning",{"type":48,"value":1784},": For dynamic or numerous client identities, use active TwiML instead of passive capture rules. Don't use wildcard identities with ",{"type":42,"tag":156,"props":1786,"children":1788},{"className":1787},[],[1789],{"type":48,"value":1732},{"type":48,"value":1791}," call type.",{"type":42,"tag":51,"props":1793,"children":1794},{},[1795],{"type":42,"tag":64,"props":1796,"children":1797},{},[1798],{"type":48,"value":1799},"SMS:",{"type":42,"tag":91,"props":1801,"children":1802},{},[1803,1808,1825,1838],{"type":42,"tag":95,"props":1804,"children":1805},{},[1806],{"type":48,"value":1807},"Bidirectional capture rules needed (from: phone, to: * AND from: *, to: phone)",{"type":42,"tag":95,"props":1809,"children":1810},{},[1811,1813,1818,1819],{"type":48,"value":1812},"Communications have ",{"type":42,"tag":156,"props":1814,"children":1816},{"className":1815},[],[1817],{"type":48,"value":1766},{"type":48,"value":1768},{"type":42,"tag":156,"props":1820,"children":1822},{"className":1821},[],[1823],{"type":48,"value":1824},"TEXT",{"type":42,"tag":95,"props":1826,"children":1827},{},[1828,1830,1836],{"type":48,"value":1829},"Includes ",{"type":42,"tag":156,"props":1831,"children":1833},{"className":1832},[],[1834],{"type":48,"value":1835},"deliveryStatus",{"type":48,"value":1837}," in recipients array",{"type":42,"tag":95,"props":1839,"children":1840},{},[1841,1843],{"type":48,"value":1842},"Recommended timeouts: ",{"type":42,"tag":156,"props":1844,"children":1846},{"className":1845},[],[1847],{"type":48,"value":1848},"inactive: 10, closed: 60",{"type":42,"tag":51,"props":1850,"children":1851},{},[1852],{"type":42,"tag":64,"props":1853,"children":1854},{},[1855],{"type":48,"value":1856},"RCS:",{"type":42,"tag":91,"props":1858,"children":1859},{},[1860,1865,1870],{"type":42,"tag":95,"props":1861,"children":1862},{},[1863],{"type":48,"value":1864},"Same pattern as SMS",{"type":42,"tag":95,"props":1866,"children":1867},{},[1868],{"type":48,"value":1869},"Text body captured; media attachments are not added to conversations",{"type":42,"tag":95,"props":1871,"children":1872},{},[1873,1874],{"type":48,"value":1842},{"type":42,"tag":156,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":48,"value":1848},{"type":42,"tag":51,"props":1880,"children":1881},{},[1882],{"type":42,"tag":64,"props":1883,"children":1884},{},[1885],{"type":48,"value":1886},"WhatsApp:",{"type":42,"tag":91,"props":1888,"children":1889},{},[1890,1903,1908,1913],{"type":42,"tag":95,"props":1891,"children":1892},{},[1893,1895,1901],{"type":48,"value":1894},"E.164 format addresses (with or without ",{"type":42,"tag":156,"props":1896,"children":1898},{"className":1897},[],[1899],{"type":48,"value":1900},"whatsapp:",{"type":48,"value":1902}," prefix)",{"type":42,"tag":95,"props":1904,"children":1905},{},[1906],{"type":48,"value":1907},"Text and template messages supported",{"type":42,"tag":95,"props":1909,"children":1910},{},[1911],{"type":48,"value":1912},"Media attachments on inbound\u002Foutbound messages are not added to conversations",{"type":42,"tag":95,"props":1914,"children":1915},{},[1916,1917],{"type":48,"value":1842},{"type":42,"tag":156,"props":1918,"children":1920},{"className":1919},[],[1921],{"type":48,"value":1848},{"type":42,"tag":51,"props":1923,"children":1924},{},[1925],{"type":42,"tag":64,"props":1926,"children":1927},{},[1928],{"type":48,"value":1929},"Chat (via Conversations API (classic)):",{"type":42,"tag":91,"props":1931,"children":1932},{},[1933,1938,1943,1954,1973],{"type":42,"tag":95,"props":1934,"children":1935},{},[1936],{"type":48,"value":1937},"Only available through Conversations API (classic) bridge",{"type":42,"tag":95,"props":1939,"children":1940},{},[1941],{"type":48,"value":1942},"Uses customer-defined identity strings",{"type":42,"tag":95,"props":1944,"children":1945},{},[1946,1948,1953],{"type":48,"value":1947},"Configure ",{"type":42,"tag":156,"props":1949,"children":1951},{"className":1950},[],[1952],{"type":48,"value":991},{"type":48,"value":919},{"type":42,"tag":95,"props":1955,"children":1956},{},[1957,1959,1965,1967],{"type":48,"value":1958},"Classic ",{"type":42,"tag":156,"props":1960,"children":1962},{"className":1961},[],[1963],{"type":48,"value":1964},"ConversationSid",{"type":48,"value":1966}," carried on address as ",{"type":42,"tag":156,"props":1968,"children":1970},{"className":1969},[],[1971],{"type":48,"value":1972},"channelId",{"type":42,"tag":95,"props":1974,"children":1975},{},[1976,1977],{"type":48,"value":1842},{"type":42,"tag":156,"props":1978,"children":1980},{"className":1979},[],[1981],{"type":48,"value":1982},"inactive: 15, closed: 60",{"type":42,"tag":72,"props":1984,"children":1986},{"id":1985},"integration-patterns",[1987],{"type":48,"value":1988},"Integration Patterns",{"type":42,"tag":51,"props":1990,"children":1991},{},[1992,1994,2000,2002,2008],{"type":48,"value":1993},"Code samples use raw ",{"type":42,"tag":156,"props":1995,"children":1997},{"className":1996},[],[1998],{"type":48,"value":1999},"fetch()",{"type":48,"value":2001}," for clarity. All Conversation Orchestrator APIs use Basic Auth — see ",{"type":42,"tag":156,"props":2003,"children":2005},{"className":2004},[],[2006],{"type":48,"value":2007},"twilio-iam-auth-setup",{"type":48,"value":678},{"type":42,"tag":179,"props":2010,"children":2012},{"id":2011},"authentication-helper",[2013],{"type":48,"value":2014},"Authentication Helper",{"type":42,"tag":390,"props":2016,"children":2020},{"className":2017,"code":2018,"language":2019,"meta":398,"style":398},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const CONVERSATIONS_V2_BASE = 'https:\u002F\u002Fconversations.twilio.com\u002Fv2';\n\nfunction getAuthHeaders() {\n  const credentials = Buffer.from(\n    `${process.env.TWILIO_ACCOUNT_SID}:${process.env.TWILIO_AUTH_TOKEN}`\n  ).toString('base64');\n  return {\n    'Authorization': `Basic ${credentials}`,\n    'Content-Type': 'application\u002Fjson',\n  };\n}\n","javascript",[2021],{"type":42,"tag":156,"props":2022,"children":2023},{"__ignoreMap":398},[2024,2064,2073,2096,2134,2205,2249,2262,2312,2350,2359],{"type":42,"tag":1149,"props":2025,"children":2026},{"class":1151,"line":1152},[2027,2032,2038,2043,2048,2054,2059],{"type":42,"tag":1149,"props":2028,"children":2029},{"style":1171},[2030],{"type":48,"value":2031},"const",{"type":42,"tag":1149,"props":2033,"children":2035},{"style":2034},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[2036],{"type":48,"value":2037}," CONVERSATIONS_V2_BASE ",{"type":42,"tag":1149,"props":2039,"children":2040},{"style":1156},[2041],{"type":48,"value":2042},"=",{"type":42,"tag":1149,"props":2044,"children":2045},{"style":1156},[2046],{"type":48,"value":2047}," '",{"type":42,"tag":1149,"props":2049,"children":2051},{"style":2050},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[2052],{"type":48,"value":2053},"https:\u002F\u002Fconversations.twilio.com\u002Fv2",{"type":42,"tag":1149,"props":2055,"children":2056},{"style":1156},[2057],{"type":48,"value":2058},"'",{"type":42,"tag":1149,"props":2060,"children":2061},{"style":1156},[2062],{"type":48,"value":2063},";\n",{"type":42,"tag":1149,"props":2065,"children":2066},{"class":1151,"line":1162},[2067],{"type":42,"tag":1149,"props":2068,"children":2070},{"emptyLinePlaceholder":2069},true,[2071],{"type":48,"value":2072},"\n",{"type":42,"tag":1149,"props":2074,"children":2075},{"class":1151,"line":1192},[2076,2081,2087,2092],{"type":42,"tag":1149,"props":2077,"children":2078},{"style":1171},[2079],{"type":48,"value":2080},"function",{"type":42,"tag":1149,"props":2082,"children":2084},{"style":2083},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[2085],{"type":48,"value":2086}," getAuthHeaders",{"type":42,"tag":1149,"props":2088,"children":2089},{"style":1156},[2090],{"type":48,"value":2091},"()",{"type":42,"tag":1149,"props":2093,"children":2094},{"style":1156},[2095],{"type":48,"value":1189},{"type":42,"tag":1149,"props":2097,"children":2098},{"class":1151,"line":1219},[2099,2104,2109,2114,2119,2123,2128],{"type":42,"tag":1149,"props":2100,"children":2101},{"style":1171},[2102],{"type":48,"value":2103},"  const",{"type":42,"tag":1149,"props":2105,"children":2106},{"style":2034},[2107],{"type":48,"value":2108}," credentials",{"type":42,"tag":1149,"props":2110,"children":2111},{"style":1156},[2112],{"type":48,"value":2113}," =",{"type":42,"tag":1149,"props":2115,"children":2116},{"style":2034},[2117],{"type":48,"value":2118}," Buffer",{"type":42,"tag":1149,"props":2120,"children":2121},{"style":1156},[2122],{"type":48,"value":678},{"type":42,"tag":1149,"props":2124,"children":2125},{"style":2083},[2126],{"type":48,"value":2127},"from",{"type":42,"tag":1149,"props":2129,"children":2131},{"style":2130},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2132],{"type":48,"value":2133},"(\n",{"type":42,"tag":1149,"props":2135,"children":2136},{"class":1151,"line":1253},[2137,2142,2147,2151,2156,2160,2165,2170,2174,2179,2183,2187,2191,2195,2200],{"type":42,"tag":1149,"props":2138,"children":2139},{"style":1156},[2140],{"type":48,"value":2141},"    `${",{"type":42,"tag":1149,"props":2143,"children":2144},{"style":2034},[2145],{"type":48,"value":2146},"process",{"type":42,"tag":1149,"props":2148,"children":2149},{"style":1156},[2150],{"type":48,"value":678},{"type":42,"tag":1149,"props":2152,"children":2153},{"style":2034},[2154],{"type":48,"value":2155},"env",{"type":42,"tag":1149,"props":2157,"children":2158},{"style":1156},[2159],{"type":48,"value":678},{"type":42,"tag":1149,"props":2161,"children":2162},{"style":2034},[2163],{"type":48,"value":2164},"TWILIO_ACCOUNT_SID",{"type":42,"tag":1149,"props":2166,"children":2167},{"style":1156},[2168],{"type":48,"value":2169},"}",{"type":42,"tag":1149,"props":2171,"children":2172},{"style":2050},[2173],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2175,"children":2176},{"style":1156},[2177],{"type":48,"value":2178},"${",{"type":42,"tag":1149,"props":2180,"children":2181},{"style":2034},[2182],{"type":48,"value":2146},{"type":42,"tag":1149,"props":2184,"children":2185},{"style":1156},[2186],{"type":48,"value":678},{"type":42,"tag":1149,"props":2188,"children":2189},{"style":2034},[2190],{"type":48,"value":2155},{"type":42,"tag":1149,"props":2192,"children":2193},{"style":1156},[2194],{"type":48,"value":678},{"type":42,"tag":1149,"props":2196,"children":2197},{"style":2034},[2198],{"type":48,"value":2199},"TWILIO_AUTH_TOKEN",{"type":42,"tag":1149,"props":2201,"children":2202},{"style":1156},[2203],{"type":48,"value":2204},"}`\n",{"type":42,"tag":1149,"props":2206,"children":2207},{"class":1151,"line":1262},[2208,2213,2217,2222,2227,2231,2236,2240,2245],{"type":42,"tag":1149,"props":2209,"children":2210},{"style":2130},[2211],{"type":48,"value":2212},"  )",{"type":42,"tag":1149,"props":2214,"children":2215},{"style":1156},[2216],{"type":48,"value":678},{"type":42,"tag":1149,"props":2218,"children":2219},{"style":2083},[2220],{"type":48,"value":2221},"toString",{"type":42,"tag":1149,"props":2223,"children":2224},{"style":2130},[2225],{"type":48,"value":2226},"(",{"type":42,"tag":1149,"props":2228,"children":2229},{"style":1156},[2230],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2232,"children":2233},{"style":2050},[2234],{"type":48,"value":2235},"base64",{"type":42,"tag":1149,"props":2237,"children":2238},{"style":1156},[2239],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2241,"children":2242},{"style":2130},[2243],{"type":48,"value":2244},")",{"type":42,"tag":1149,"props":2246,"children":2247},{"style":1156},[2248],{"type":48,"value":2063},{"type":42,"tag":1149,"props":2250,"children":2251},{"class":1151,"line":1271},[2252,2258],{"type":42,"tag":1149,"props":2253,"children":2255},{"style":2254},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[2256],{"type":48,"value":2257},"  return",{"type":42,"tag":1149,"props":2259,"children":2260},{"style":1156},[2261],{"type":48,"value":1189},{"type":42,"tag":1149,"props":2263,"children":2264},{"class":1151,"line":1280},[2265,2270,2275,2279,2283,2288,2293,2297,2302,2307],{"type":42,"tag":1149,"props":2266,"children":2267},{"style":1156},[2268],{"type":48,"value":2269},"    '",{"type":42,"tag":1149,"props":2271,"children":2272},{"style":2130},[2273],{"type":48,"value":2274},"Authorization",{"type":42,"tag":1149,"props":2276,"children":2277},{"style":1156},[2278],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2280,"children":2281},{"style":1156},[2282],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2284,"children":2285},{"style":1156},[2286],{"type":48,"value":2287}," `",{"type":42,"tag":1149,"props":2289,"children":2290},{"style":2050},[2291],{"type":48,"value":2292},"Basic ",{"type":42,"tag":1149,"props":2294,"children":2295},{"style":1156},[2296],{"type":48,"value":2178},{"type":42,"tag":1149,"props":2298,"children":2299},{"style":2034},[2300],{"type":48,"value":2301},"credentials",{"type":42,"tag":1149,"props":2303,"children":2304},{"style":1156},[2305],{"type":48,"value":2306},"}`",{"type":42,"tag":1149,"props":2308,"children":2309},{"style":1156},[2310],{"type":48,"value":2311},",\n",{"type":42,"tag":1149,"props":2313,"children":2315},{"class":1151,"line":2314},9,[2316,2320,2325,2329,2333,2337,2342,2346],{"type":42,"tag":1149,"props":2317,"children":2318},{"style":1156},[2319],{"type":48,"value":2269},{"type":42,"tag":1149,"props":2321,"children":2322},{"style":2130},[2323],{"type":48,"value":2324},"Content-Type",{"type":42,"tag":1149,"props":2326,"children":2327},{"style":1156},[2328],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2330,"children":2331},{"style":1156},[2332],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2334,"children":2335},{"style":1156},[2336],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2338,"children":2339},{"style":2050},[2340],{"type":48,"value":2341},"application\u002Fjson",{"type":42,"tag":1149,"props":2343,"children":2344},{"style":1156},[2345],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2347,"children":2348},{"style":1156},[2349],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2351,"children":2353},{"class":1151,"line":2352},10,[2354],{"type":42,"tag":1149,"props":2355,"children":2356},{"style":1156},[2357],{"type":48,"value":2358},"  };\n",{"type":42,"tag":1149,"props":2360,"children":2362},{"class":1151,"line":2361},11,[2363],{"type":42,"tag":1149,"props":2364,"children":2365},{"style":1156},[2366],{"type":48,"value":1286},{"type":42,"tag":179,"props":2368,"children":2370},{"id":2369},"create-a-configuration",[2371],{"type":48,"value":2372},"Create a Configuration",{"type":42,"tag":390,"props":2374,"children":2376},{"className":2017,"code":2375,"language":2019,"meta":398,"style":398},"const configResponse = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations`,\n  {\n    method: 'POST',\n    headers: getAuthHeaders(),\n    body: JSON.stringify({\n      displayName: 'my-app-config',\n      description: 'Production conversation config',\n      conversationGroupingType: 'GROUP_BY_PROFILE',\n      memoryStoreId: 'mem_store_...', \u002F\u002F Required — create via Memory API first\n      memoryExtractionEnabled: true,\n      channelSettings: {\n        SMS: {\n          captureRules: [\n            { from: '+15551234567', to: '*', metadata: {} },\n            { from: '*', to: '+15551234567', metadata: {} },\n          ],\n          statusTimeouts: { inactive: 10, closed: 60 },\n        },\n        VOICE: {\n          captureRules: [\n            { from: '*', to: '+15551234567', metadata: {} },\n          ],\n        },\n      },\n    }),\n  }\n);\n\u002F\u002F May return 202 without config ID — poll GET \u002FControlPlane\u002FConfigurations to find by displayName\n",[2377],{"type":42,"tag":156,"props":2378,"children":2379},{"__ignoreMap":398},[2380,2410,2441,2449,2478,2502,2536,2565,2594,2622,2657,2679,2696,2713,2731,2810,2882,2895,2949,2958,2975,2991,3063,3075,3083,3092,3109,3117,3129],{"type":42,"tag":1149,"props":2381,"children":2382},{"class":1151,"line":1152},[2383,2387,2392,2396,2401,2406],{"type":42,"tag":1149,"props":2384,"children":2385},{"style":1171},[2386],{"type":48,"value":2031},{"type":42,"tag":1149,"props":2388,"children":2389},{"style":2034},[2390],{"type":48,"value":2391}," configResponse ",{"type":42,"tag":1149,"props":2393,"children":2394},{"style":1156},[2395],{"type":48,"value":2042},{"type":42,"tag":1149,"props":2397,"children":2398},{"style":2254},[2399],{"type":48,"value":2400}," await",{"type":42,"tag":1149,"props":2402,"children":2403},{"style":2083},[2404],{"type":48,"value":2405}," fetch",{"type":42,"tag":1149,"props":2407,"children":2408},{"style":2034},[2409],{"type":48,"value":2133},{"type":42,"tag":1149,"props":2411,"children":2412},{"class":1151,"line":1162},[2413,2418,2423,2427,2432,2437],{"type":42,"tag":1149,"props":2414,"children":2415},{"style":1156},[2416],{"type":48,"value":2417},"  `${",{"type":42,"tag":1149,"props":2419,"children":2420},{"style":2034},[2421],{"type":48,"value":2422},"CONVERSATIONS_V2_BASE",{"type":42,"tag":1149,"props":2424,"children":2425},{"style":1156},[2426],{"type":48,"value":2169},{"type":42,"tag":1149,"props":2428,"children":2429},{"style":2050},[2430],{"type":48,"value":2431},"\u002FControlPlane\u002FConfigurations",{"type":42,"tag":1149,"props":2433,"children":2434},{"style":1156},[2435],{"type":48,"value":2436},"`",{"type":42,"tag":1149,"props":2438,"children":2439},{"style":1156},[2440],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2442,"children":2443},{"class":1151,"line":1192},[2444],{"type":42,"tag":1149,"props":2445,"children":2446},{"style":1156},[2447],{"type":48,"value":2448},"  {\n",{"type":42,"tag":1149,"props":2450,"children":2451},{"class":1151,"line":1219},[2452,2457,2461,2465,2470,2474],{"type":42,"tag":1149,"props":2453,"children":2454},{"style":2130},[2455],{"type":48,"value":2456},"    method",{"type":42,"tag":1149,"props":2458,"children":2459},{"style":1156},[2460],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2462,"children":2463},{"style":1156},[2464],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2466,"children":2467},{"style":2050},[2468],{"type":48,"value":2469},"POST",{"type":42,"tag":1149,"props":2471,"children":2472},{"style":1156},[2473],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2475,"children":2476},{"style":1156},[2477],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2479,"children":2480},{"class":1151,"line":1253},[2481,2486,2490,2494,2498],{"type":42,"tag":1149,"props":2482,"children":2483},{"style":2130},[2484],{"type":48,"value":2485},"    headers",{"type":42,"tag":1149,"props":2487,"children":2488},{"style":1156},[2489],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2491,"children":2492},{"style":2083},[2493],{"type":48,"value":2086},{"type":42,"tag":1149,"props":2495,"children":2496},{"style":2034},[2497],{"type":48,"value":2091},{"type":42,"tag":1149,"props":2499,"children":2500},{"style":1156},[2501],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2503,"children":2504},{"class":1151,"line":1262},[2505,2510,2514,2519,2523,2528,2532],{"type":42,"tag":1149,"props":2506,"children":2507},{"style":2130},[2508],{"type":48,"value":2509},"    body",{"type":42,"tag":1149,"props":2511,"children":2512},{"style":1156},[2513],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2515,"children":2516},{"style":2034},[2517],{"type":48,"value":2518}," JSON",{"type":42,"tag":1149,"props":2520,"children":2521},{"style":1156},[2522],{"type":48,"value":678},{"type":42,"tag":1149,"props":2524,"children":2525},{"style":2083},[2526],{"type":48,"value":2527},"stringify",{"type":42,"tag":1149,"props":2529,"children":2530},{"style":2034},[2531],{"type":48,"value":2226},{"type":42,"tag":1149,"props":2533,"children":2534},{"style":1156},[2535],{"type":48,"value":1159},{"type":42,"tag":1149,"props":2537,"children":2538},{"class":1151,"line":1271},[2539,2544,2548,2552,2557,2561],{"type":42,"tag":1149,"props":2540,"children":2541},{"style":2130},[2542],{"type":48,"value":2543},"      displayName",{"type":42,"tag":1149,"props":2545,"children":2546},{"style":1156},[2547],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2549,"children":2550},{"style":1156},[2551],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2553,"children":2554},{"style":2050},[2555],{"type":48,"value":2556},"my-app-config",{"type":42,"tag":1149,"props":2558,"children":2559},{"style":1156},[2560],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2562,"children":2563},{"style":1156},[2564],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2566,"children":2567},{"class":1151,"line":1280},[2568,2573,2577,2581,2586,2590],{"type":42,"tag":1149,"props":2569,"children":2570},{"style":2130},[2571],{"type":48,"value":2572},"      description",{"type":42,"tag":1149,"props":2574,"children":2575},{"style":1156},[2576],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2578,"children":2579},{"style":1156},[2580],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2582,"children":2583},{"style":2050},[2584],{"type":48,"value":2585},"Production conversation config",{"type":42,"tag":1149,"props":2587,"children":2588},{"style":1156},[2589],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2591,"children":2592},{"style":1156},[2593],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2595,"children":2596},{"class":1151,"line":2314},[2597,2602,2606,2610,2614,2618],{"type":42,"tag":1149,"props":2598,"children":2599},{"style":2130},[2600],{"type":48,"value":2601},"      conversationGroupingType",{"type":42,"tag":1149,"props":2603,"children":2604},{"style":1156},[2605],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2607,"children":2608},{"style":1156},[2609],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2611,"children":2612},{"style":2050},[2613],{"type":48,"value":215},{"type":42,"tag":1149,"props":2615,"children":2616},{"style":1156},[2617],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2619,"children":2620},{"style":1156},[2621],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2623,"children":2624},{"class":1151,"line":2352},[2625,2630,2634,2638,2643,2647,2652],{"type":42,"tag":1149,"props":2626,"children":2627},{"style":2130},[2628],{"type":48,"value":2629},"      memoryStoreId",{"type":42,"tag":1149,"props":2631,"children":2632},{"style":1156},[2633],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2635,"children":2636},{"style":1156},[2637],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2639,"children":2640},{"style":2050},[2641],{"type":48,"value":2642},"mem_store_...",{"type":42,"tag":1149,"props":2644,"children":2645},{"style":1156},[2646],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2648,"children":2649},{"style":1156},[2650],{"type":48,"value":2651},",",{"type":42,"tag":1149,"props":2653,"children":2654},{"style":1247},[2655],{"type":48,"value":2656}," \u002F\u002F Required — create via Memory API first\n",{"type":42,"tag":1149,"props":2658,"children":2659},{"class":1151,"line":2361},[2660,2665,2669,2675],{"type":42,"tag":1149,"props":2661,"children":2662},{"style":2130},[2663],{"type":48,"value":2664},"      memoryExtractionEnabled",{"type":42,"tag":1149,"props":2666,"children":2667},{"style":1156},[2668],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2670,"children":2672},{"style":2671},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2673],{"type":48,"value":2674}," true",{"type":42,"tag":1149,"props":2676,"children":2677},{"style":1156},[2678],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2680,"children":2682},{"class":1151,"line":2681},12,[2683,2688,2692],{"type":42,"tag":1149,"props":2684,"children":2685},{"style":2130},[2686],{"type":48,"value":2687},"      channelSettings",{"type":42,"tag":1149,"props":2689,"children":2690},{"style":1156},[2691],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2693,"children":2694},{"style":1156},[2695],{"type":48,"value":1189},{"type":42,"tag":1149,"props":2697,"children":2699},{"class":1151,"line":2698},13,[2700,2705,2709],{"type":42,"tag":1149,"props":2701,"children":2702},{"style":2130},[2703],{"type":48,"value":2704},"        SMS",{"type":42,"tag":1149,"props":2706,"children":2707},{"style":1156},[2708],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2710,"children":2711},{"style":1156},[2712],{"type":48,"value":1189},{"type":42,"tag":1149,"props":2714,"children":2716},{"class":1151,"line":2715},14,[2717,2722,2726],{"type":42,"tag":1149,"props":2718,"children":2719},{"style":2130},[2720],{"type":48,"value":2721},"          captureRules",{"type":42,"tag":1149,"props":2723,"children":2724},{"style":1156},[2725],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2727,"children":2728},{"style":2034},[2729],{"type":48,"value":2730}," [\n",{"type":42,"tag":1149,"props":2732,"children":2734},{"class":1151,"line":2733},15,[2735,2740,2745,2749,2753,2757,2761,2765,2770,2774,2778,2783,2787,2791,2796,2800,2805],{"type":42,"tag":1149,"props":2736,"children":2737},{"style":1156},[2738],{"type":48,"value":2739},"            {",{"type":42,"tag":1149,"props":2741,"children":2742},{"style":2130},[2743],{"type":48,"value":2744}," from",{"type":42,"tag":1149,"props":2746,"children":2747},{"style":1156},[2748],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2750,"children":2751},{"style":1156},[2752],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2754,"children":2755},{"style":2050},[2756],{"type":48,"value":1600},{"type":42,"tag":1149,"props":2758,"children":2759},{"style":1156},[2760],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2762,"children":2763},{"style":1156},[2764],{"type":48,"value":2651},{"type":42,"tag":1149,"props":2766,"children":2767},{"style":2130},[2768],{"type":48,"value":2769}," to",{"type":42,"tag":1149,"props":2771,"children":2772},{"style":1156},[2773],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2775,"children":2776},{"style":1156},[2777],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2779,"children":2780},{"style":2050},[2781],{"type":48,"value":2782},"*",{"type":42,"tag":1149,"props":2784,"children":2785},{"style":1156},[2786],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2788,"children":2789},{"style":1156},[2790],{"type":48,"value":2651},{"type":42,"tag":1149,"props":2792,"children":2793},{"style":2130},[2794],{"type":48,"value":2795}," metadata",{"type":42,"tag":1149,"props":2797,"children":2798},{"style":1156},[2799],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2801,"children":2802},{"style":1156},[2803],{"type":48,"value":2804}," {}",{"type":42,"tag":1149,"props":2806,"children":2807},{"style":1156},[2808],{"type":48,"value":2809}," },\n",{"type":42,"tag":1149,"props":2811,"children":2813},{"class":1151,"line":2812},16,[2814,2818,2822,2826,2830,2834,2838,2842,2846,2850,2854,2858,2862,2866,2870,2874,2878],{"type":42,"tag":1149,"props":2815,"children":2816},{"style":1156},[2817],{"type":48,"value":2739},{"type":42,"tag":1149,"props":2819,"children":2820},{"style":2130},[2821],{"type":48,"value":2744},{"type":42,"tag":1149,"props":2823,"children":2824},{"style":1156},[2825],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2827,"children":2828},{"style":1156},[2829],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2831,"children":2832},{"style":2050},[2833],{"type":48,"value":2782},{"type":42,"tag":1149,"props":2835,"children":2836},{"style":1156},[2837],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2839,"children":2840},{"style":1156},[2841],{"type":48,"value":2651},{"type":42,"tag":1149,"props":2843,"children":2844},{"style":2130},[2845],{"type":48,"value":2769},{"type":42,"tag":1149,"props":2847,"children":2848},{"style":1156},[2849],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2851,"children":2852},{"style":1156},[2853],{"type":48,"value":2047},{"type":42,"tag":1149,"props":2855,"children":2856},{"style":2050},[2857],{"type":48,"value":1600},{"type":42,"tag":1149,"props":2859,"children":2860},{"style":1156},[2861],{"type":48,"value":2058},{"type":42,"tag":1149,"props":2863,"children":2864},{"style":1156},[2865],{"type":48,"value":2651},{"type":42,"tag":1149,"props":2867,"children":2868},{"style":2130},[2869],{"type":48,"value":2795},{"type":42,"tag":1149,"props":2871,"children":2872},{"style":1156},[2873],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2875,"children":2876},{"style":1156},[2877],{"type":48,"value":2804},{"type":42,"tag":1149,"props":2879,"children":2880},{"style":1156},[2881],{"type":48,"value":2809},{"type":42,"tag":1149,"props":2883,"children":2885},{"class":1151,"line":2884},17,[2886,2891],{"type":42,"tag":1149,"props":2887,"children":2888},{"style":2034},[2889],{"type":48,"value":2890},"          ]",{"type":42,"tag":1149,"props":2892,"children":2893},{"style":1156},[2894],{"type":48,"value":2311},{"type":42,"tag":1149,"props":2896,"children":2898},{"class":1151,"line":2897},18,[2899,2904,2908,2913,2918,2922,2927,2931,2936,2940,2945],{"type":42,"tag":1149,"props":2900,"children":2901},{"style":2130},[2902],{"type":48,"value":2903},"          statusTimeouts",{"type":42,"tag":1149,"props":2905,"children":2906},{"style":1156},[2907],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2909,"children":2910},{"style":1156},[2911],{"type":48,"value":2912}," {",{"type":42,"tag":1149,"props":2914,"children":2915},{"style":2130},[2916],{"type":48,"value":2917}," inactive",{"type":42,"tag":1149,"props":2919,"children":2920},{"style":1156},[2921],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2923,"children":2924},{"style":1228},[2925],{"type":48,"value":2926}," 10",{"type":42,"tag":1149,"props":2928,"children":2929},{"style":1156},[2930],{"type":48,"value":2651},{"type":42,"tag":1149,"props":2932,"children":2933},{"style":2130},[2934],{"type":48,"value":2935}," closed",{"type":42,"tag":1149,"props":2937,"children":2938},{"style":1156},[2939],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2941,"children":2942},{"style":1228},[2943],{"type":48,"value":2944}," 60",{"type":42,"tag":1149,"props":2946,"children":2947},{"style":1156},[2948],{"type":48,"value":2809},{"type":42,"tag":1149,"props":2950,"children":2952},{"class":1151,"line":2951},19,[2953],{"type":42,"tag":1149,"props":2954,"children":2955},{"style":1156},[2956],{"type":48,"value":2957},"        },\n",{"type":42,"tag":1149,"props":2959,"children":2961},{"class":1151,"line":2960},20,[2962,2967,2971],{"type":42,"tag":1149,"props":2963,"children":2964},{"style":2130},[2965],{"type":48,"value":2966},"        VOICE",{"type":42,"tag":1149,"props":2968,"children":2969},{"style":1156},[2970],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2972,"children":2973},{"style":1156},[2974],{"type":48,"value":1189},{"type":42,"tag":1149,"props":2976,"children":2978},{"class":1151,"line":2977},21,[2979,2983,2987],{"type":42,"tag":1149,"props":2980,"children":2981},{"style":2130},[2982],{"type":48,"value":2721},{"type":42,"tag":1149,"props":2984,"children":2985},{"style":1156},[2986],{"type":48,"value":1184},{"type":42,"tag":1149,"props":2988,"children":2989},{"style":2034},[2990],{"type":48,"value":2730},{"type":42,"tag":1149,"props":2992,"children":2994},{"class":1151,"line":2993},22,[2995,2999,3003,3007,3011,3015,3019,3023,3027,3031,3035,3039,3043,3047,3051,3055,3059],{"type":42,"tag":1149,"props":2996,"children":2997},{"style":1156},[2998],{"type":48,"value":2739},{"type":42,"tag":1149,"props":3000,"children":3001},{"style":2130},[3002],{"type":48,"value":2744},{"type":42,"tag":1149,"props":3004,"children":3005},{"style":1156},[3006],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3008,"children":3009},{"style":1156},[3010],{"type":48,"value":2047},{"type":42,"tag":1149,"props":3012,"children":3013},{"style":2050},[3014],{"type":48,"value":2782},{"type":42,"tag":1149,"props":3016,"children":3017},{"style":1156},[3018],{"type":48,"value":2058},{"type":42,"tag":1149,"props":3020,"children":3021},{"style":1156},[3022],{"type":48,"value":2651},{"type":42,"tag":1149,"props":3024,"children":3025},{"style":2130},[3026],{"type":48,"value":2769},{"type":42,"tag":1149,"props":3028,"children":3029},{"style":1156},[3030],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3032,"children":3033},{"style":1156},[3034],{"type":48,"value":2047},{"type":42,"tag":1149,"props":3036,"children":3037},{"style":2050},[3038],{"type":48,"value":1600},{"type":42,"tag":1149,"props":3040,"children":3041},{"style":1156},[3042],{"type":48,"value":2058},{"type":42,"tag":1149,"props":3044,"children":3045},{"style":1156},[3046],{"type":48,"value":2651},{"type":42,"tag":1149,"props":3048,"children":3049},{"style":2130},[3050],{"type":48,"value":2795},{"type":42,"tag":1149,"props":3052,"children":3053},{"style":1156},[3054],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3056,"children":3057},{"style":1156},[3058],{"type":48,"value":2804},{"type":42,"tag":1149,"props":3060,"children":3061},{"style":1156},[3062],{"type":48,"value":2809},{"type":42,"tag":1149,"props":3064,"children":3066},{"class":1151,"line":3065},23,[3067,3071],{"type":42,"tag":1149,"props":3068,"children":3069},{"style":2034},[3070],{"type":48,"value":2890},{"type":42,"tag":1149,"props":3072,"children":3073},{"style":1156},[3074],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3076,"children":3078},{"class":1151,"line":3077},24,[3079],{"type":42,"tag":1149,"props":3080,"children":3081},{"style":1156},[3082],{"type":48,"value":2957},{"type":42,"tag":1149,"props":3084,"children":3086},{"class":1151,"line":3085},25,[3087],{"type":42,"tag":1149,"props":3088,"children":3089},{"style":1156},[3090],{"type":48,"value":3091},"      },\n",{"type":42,"tag":1149,"props":3093,"children":3095},{"class":1151,"line":3094},26,[3096,3101,3105],{"type":42,"tag":1149,"props":3097,"children":3098},{"style":1156},[3099],{"type":48,"value":3100},"    }",{"type":42,"tag":1149,"props":3102,"children":3103},{"style":2034},[3104],{"type":48,"value":2244},{"type":42,"tag":1149,"props":3106,"children":3107},{"style":1156},[3108],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3110,"children":3112},{"class":1151,"line":3111},27,[3113],{"type":42,"tag":1149,"props":3114,"children":3115},{"style":1156},[3116],{"type":48,"value":1277},{"type":42,"tag":1149,"props":3118,"children":3120},{"class":1151,"line":3119},28,[3121,3125],{"type":42,"tag":1149,"props":3122,"children":3123},{"style":2034},[3124],{"type":48,"value":2244},{"type":42,"tag":1149,"props":3126,"children":3127},{"style":1156},[3128],{"type":48,"value":2063},{"type":42,"tag":1149,"props":3130,"children":3132},{"class":1151,"line":3131},29,[3133],{"type":42,"tag":1149,"props":3134,"children":3135},{"style":1247},[3136],{"type":48,"value":3137},"\u002F\u002F May return 202 without config ID — poll GET \u002FControlPlane\u002FConfigurations to find by displayName\n",{"type":42,"tag":390,"props":3139,"children":3143},{"className":3140,"code":3141,"language":3142,"meta":398,"style":398},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import os, requests\n\naccount_sid = os.environ[\"TWILIO_ACCOUNT_SID\"]\nauth_token = os.environ[\"TWILIO_AUTH_TOKEN\"]\ntwilio_phone = os.environ[\"TWILIO_PHONE_NUMBER\"]\n\nconfig = requests.post(\n    \"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\",\n    auth=(account_sid, auth_token),\n    json={\n        \"displayName\": \"my-app-config\",\n        \"description\": \"Production conversation config\",\n        \"conversationGroupingType\": \"GROUP_BY_PROFILE\",\n        \"memoryStoreId\": \"mem_store_...\",\n        \"memoryExtractionEnabled\": True,\n        \"channelSettings\": {\n            \"SMS\": {\n                \"captureRules\": [\n                    {\"from\": twilio_phone, \"to\": \"*\", \"metadata\": {}},\n                    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {}}\n                ],\n                \"statusTimeouts\": {\"inactive\": 10, \"closed\": 60}\n            },\n            \"VOICE\": {\n                \"captureRules\": [\n                    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {}}\n                ]\n            }\n        }\n    }\n).json()\n","python",[3144],{"type":42,"tag":156,"props":3145,"children":3146},{"__ignoreMap":398},[3147,3155,3162,3170,3178,3186,3193,3201,3209,3217,3225,3233,3241,3249,3257,3265,3273,3281,3289,3297,3305,3313,3321,3329,3337,3344,3351,3359,3367,3375,3383],{"type":42,"tag":1149,"props":3148,"children":3149},{"class":1151,"line":1152},[3150],{"type":42,"tag":1149,"props":3151,"children":3152},{},[3153],{"type":48,"value":3154},"import os, requests\n",{"type":42,"tag":1149,"props":3156,"children":3157},{"class":1151,"line":1162},[3158],{"type":42,"tag":1149,"props":3159,"children":3160},{"emptyLinePlaceholder":2069},[3161],{"type":48,"value":2072},{"type":42,"tag":1149,"props":3163,"children":3164},{"class":1151,"line":1192},[3165],{"type":42,"tag":1149,"props":3166,"children":3167},{},[3168],{"type":48,"value":3169},"account_sid = os.environ[\"TWILIO_ACCOUNT_SID\"]\n",{"type":42,"tag":1149,"props":3171,"children":3172},{"class":1151,"line":1219},[3173],{"type":42,"tag":1149,"props":3174,"children":3175},{},[3176],{"type":48,"value":3177},"auth_token = os.environ[\"TWILIO_AUTH_TOKEN\"]\n",{"type":42,"tag":1149,"props":3179,"children":3180},{"class":1151,"line":1253},[3181],{"type":42,"tag":1149,"props":3182,"children":3183},{},[3184],{"type":48,"value":3185},"twilio_phone = os.environ[\"TWILIO_PHONE_NUMBER\"]\n",{"type":42,"tag":1149,"props":3187,"children":3188},{"class":1151,"line":1262},[3189],{"type":42,"tag":1149,"props":3190,"children":3191},{"emptyLinePlaceholder":2069},[3192],{"type":48,"value":2072},{"type":42,"tag":1149,"props":3194,"children":3195},{"class":1151,"line":1271},[3196],{"type":42,"tag":1149,"props":3197,"children":3198},{},[3199],{"type":48,"value":3200},"config = requests.post(\n",{"type":42,"tag":1149,"props":3202,"children":3203},{"class":1151,"line":1280},[3204],{"type":42,"tag":1149,"props":3205,"children":3206},{},[3207],{"type":48,"value":3208},"    \"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\",\n",{"type":42,"tag":1149,"props":3210,"children":3211},{"class":1151,"line":2314},[3212],{"type":42,"tag":1149,"props":3213,"children":3214},{},[3215],{"type":48,"value":3216},"    auth=(account_sid, auth_token),\n",{"type":42,"tag":1149,"props":3218,"children":3219},{"class":1151,"line":2352},[3220],{"type":42,"tag":1149,"props":3221,"children":3222},{},[3223],{"type":48,"value":3224},"    json={\n",{"type":42,"tag":1149,"props":3226,"children":3227},{"class":1151,"line":2361},[3228],{"type":42,"tag":1149,"props":3229,"children":3230},{},[3231],{"type":48,"value":3232},"        \"displayName\": \"my-app-config\",\n",{"type":42,"tag":1149,"props":3234,"children":3235},{"class":1151,"line":2681},[3236],{"type":42,"tag":1149,"props":3237,"children":3238},{},[3239],{"type":48,"value":3240},"        \"description\": \"Production conversation config\",\n",{"type":42,"tag":1149,"props":3242,"children":3243},{"class":1151,"line":2698},[3244],{"type":42,"tag":1149,"props":3245,"children":3246},{},[3247],{"type":48,"value":3248},"        \"conversationGroupingType\": \"GROUP_BY_PROFILE\",\n",{"type":42,"tag":1149,"props":3250,"children":3251},{"class":1151,"line":2715},[3252],{"type":42,"tag":1149,"props":3253,"children":3254},{},[3255],{"type":48,"value":3256},"        \"memoryStoreId\": \"mem_store_...\",\n",{"type":42,"tag":1149,"props":3258,"children":3259},{"class":1151,"line":2733},[3260],{"type":42,"tag":1149,"props":3261,"children":3262},{},[3263],{"type":48,"value":3264},"        \"memoryExtractionEnabled\": True,\n",{"type":42,"tag":1149,"props":3266,"children":3267},{"class":1151,"line":2812},[3268],{"type":42,"tag":1149,"props":3269,"children":3270},{},[3271],{"type":48,"value":3272},"        \"channelSettings\": {\n",{"type":42,"tag":1149,"props":3274,"children":3275},{"class":1151,"line":2884},[3276],{"type":42,"tag":1149,"props":3277,"children":3278},{},[3279],{"type":48,"value":3280},"            \"SMS\": {\n",{"type":42,"tag":1149,"props":3282,"children":3283},{"class":1151,"line":2897},[3284],{"type":42,"tag":1149,"props":3285,"children":3286},{},[3287],{"type":48,"value":3288},"                \"captureRules\": [\n",{"type":42,"tag":1149,"props":3290,"children":3291},{"class":1151,"line":2951},[3292],{"type":42,"tag":1149,"props":3293,"children":3294},{},[3295],{"type":48,"value":3296},"                    {\"from\": twilio_phone, \"to\": \"*\", \"metadata\": {}},\n",{"type":42,"tag":1149,"props":3298,"children":3299},{"class":1151,"line":2960},[3300],{"type":42,"tag":1149,"props":3301,"children":3302},{},[3303],{"type":48,"value":3304},"                    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {}}\n",{"type":42,"tag":1149,"props":3306,"children":3307},{"class":1151,"line":2977},[3308],{"type":42,"tag":1149,"props":3309,"children":3310},{},[3311],{"type":48,"value":3312},"                ],\n",{"type":42,"tag":1149,"props":3314,"children":3315},{"class":1151,"line":2993},[3316],{"type":42,"tag":1149,"props":3317,"children":3318},{},[3319],{"type":48,"value":3320},"                \"statusTimeouts\": {\"inactive\": 10, \"closed\": 60}\n",{"type":42,"tag":1149,"props":3322,"children":3323},{"class":1151,"line":3065},[3324],{"type":42,"tag":1149,"props":3325,"children":3326},{},[3327],{"type":48,"value":3328},"            },\n",{"type":42,"tag":1149,"props":3330,"children":3331},{"class":1151,"line":3077},[3332],{"type":42,"tag":1149,"props":3333,"children":3334},{},[3335],{"type":48,"value":3336},"            \"VOICE\": {\n",{"type":42,"tag":1149,"props":3338,"children":3339},{"class":1151,"line":3085},[3340],{"type":42,"tag":1149,"props":3341,"children":3342},{},[3343],{"type":48,"value":3288},{"type":42,"tag":1149,"props":3345,"children":3346},{"class":1151,"line":3094},[3347],{"type":42,"tag":1149,"props":3348,"children":3349},{},[3350],{"type":48,"value":3304},{"type":42,"tag":1149,"props":3352,"children":3353},{"class":1151,"line":3111},[3354],{"type":42,"tag":1149,"props":3355,"children":3356},{},[3357],{"type":48,"value":3358},"                ]\n",{"type":42,"tag":1149,"props":3360,"children":3361},{"class":1151,"line":3119},[3362],{"type":42,"tag":1149,"props":3363,"children":3364},{},[3365],{"type":48,"value":3366},"            }\n",{"type":42,"tag":1149,"props":3368,"children":3369},{"class":1151,"line":3131},[3370],{"type":42,"tag":1149,"props":3371,"children":3372},{},[3373],{"type":48,"value":3374},"        }\n",{"type":42,"tag":1149,"props":3376,"children":3378},{"class":1151,"line":3377},30,[3379],{"type":42,"tag":1149,"props":3380,"children":3381},{},[3382],{"type":48,"value":1268},{"type":42,"tag":1149,"props":3384,"children":3386},{"class":1151,"line":3385},31,[3387],{"type":42,"tag":1149,"props":3388,"children":3389},{},[3390],{"type":48,"value":3391},").json()\n",{"type":42,"tag":179,"props":3393,"children":3395},{"id":3394},"update-a-configuration-put-full-replacement",[3396],{"type":48,"value":3397},"Update a Configuration (PUT — Full Replacement)",{"type":42,"tag":390,"props":3399,"children":3401},{"className":2017,"code":3400,"language":2019,"meta":398,"style":398},"\u002F\u002F Step 1: Fetch current config (ALWAYS re-fetch before updating)\nconst current = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  { headers: getAuthHeaders() }\n).then(r => r.json());\n\n\u002F\u002F Step 2: Modify the field you need\ncurrent.channelSettings.VOICE.captureRules.push(\n  { from: '*', to: '+15551234567', metadata: { callType: 'CLIENT' } }\n);\n\n\u002F\u002F Step 3: PUT the complete object back\nawait fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  {\n    method: 'PUT',\n    headers: getAuthHeaders(),\n    body: JSON.stringify(current),\n  }\n);\n",[3402],{"type":42,"tag":156,"props":3403,"children":3404},{"__ignoreMap":398},[3405,3413,3441,3478,3508,3561,3568,3576,3621,3719,3730,3737,3745,3761,3796,3803,3831,3854,3886,3893],{"type":42,"tag":1149,"props":3406,"children":3407},{"class":1151,"line":1152},[3408],{"type":42,"tag":1149,"props":3409,"children":3410},{"style":1247},[3411],{"type":48,"value":3412},"\u002F\u002F Step 1: Fetch current config (ALWAYS re-fetch before updating)\n",{"type":42,"tag":1149,"props":3414,"children":3415},{"class":1151,"line":1162},[3416,3420,3425,3429,3433,3437],{"type":42,"tag":1149,"props":3417,"children":3418},{"style":1171},[3419],{"type":48,"value":2031},{"type":42,"tag":1149,"props":3421,"children":3422},{"style":2034},[3423],{"type":48,"value":3424}," current ",{"type":42,"tag":1149,"props":3426,"children":3427},{"style":1156},[3428],{"type":48,"value":2042},{"type":42,"tag":1149,"props":3430,"children":3431},{"style":2254},[3432],{"type":48,"value":2400},{"type":42,"tag":1149,"props":3434,"children":3435},{"style":2083},[3436],{"type":48,"value":2405},{"type":42,"tag":1149,"props":3438,"children":3439},{"style":2034},[3440],{"type":48,"value":2133},{"type":42,"tag":1149,"props":3442,"children":3443},{"class":1151,"line":1192},[3444,3448,3452,3456,3461,3465,3470,3474],{"type":42,"tag":1149,"props":3445,"children":3446},{"style":1156},[3447],{"type":48,"value":2417},{"type":42,"tag":1149,"props":3449,"children":3450},{"style":2034},[3451],{"type":48,"value":2422},{"type":42,"tag":1149,"props":3453,"children":3454},{"style":1156},[3455],{"type":48,"value":2169},{"type":42,"tag":1149,"props":3457,"children":3458},{"style":2050},[3459],{"type":48,"value":3460},"\u002FControlPlane\u002FConfigurations\u002F",{"type":42,"tag":1149,"props":3462,"children":3463},{"style":1156},[3464],{"type":48,"value":2178},{"type":42,"tag":1149,"props":3466,"children":3467},{"style":2034},[3468],{"type":48,"value":3469},"configId",{"type":42,"tag":1149,"props":3471,"children":3472},{"style":1156},[3473],{"type":48,"value":2306},{"type":42,"tag":1149,"props":3475,"children":3476},{"style":1156},[3477],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3479,"children":3480},{"class":1151,"line":1219},[3481,3486,3491,3495,3499,3504],{"type":42,"tag":1149,"props":3482,"children":3483},{"style":1156},[3484],{"type":48,"value":3485},"  {",{"type":42,"tag":1149,"props":3487,"children":3488},{"style":2130},[3489],{"type":48,"value":3490}," headers",{"type":42,"tag":1149,"props":3492,"children":3493},{"style":1156},[3494],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3496,"children":3497},{"style":2083},[3498],{"type":48,"value":2086},{"type":42,"tag":1149,"props":3500,"children":3501},{"style":2034},[3502],{"type":48,"value":3503},"() ",{"type":42,"tag":1149,"props":3505,"children":3506},{"style":1156},[3507],{"type":48,"value":1286},{"type":42,"tag":1149,"props":3509,"children":3510},{"class":1151,"line":1253},[3511,3515,3519,3524,3528,3534,3539,3544,3548,3552,3557],{"type":42,"tag":1149,"props":3512,"children":3513},{"style":2034},[3514],{"type":48,"value":2244},{"type":42,"tag":1149,"props":3516,"children":3517},{"style":1156},[3518],{"type":48,"value":678},{"type":42,"tag":1149,"props":3520,"children":3521},{"style":2083},[3522],{"type":48,"value":3523},"then",{"type":42,"tag":1149,"props":3525,"children":3526},{"style":2034},[3527],{"type":48,"value":2226},{"type":42,"tag":1149,"props":3529,"children":3531},{"style":3530},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[3532],{"type":48,"value":3533},"r",{"type":42,"tag":1149,"props":3535,"children":3536},{"style":1171},[3537],{"type":48,"value":3538}," =>",{"type":42,"tag":1149,"props":3540,"children":3541},{"style":2034},[3542],{"type":48,"value":3543}," r",{"type":42,"tag":1149,"props":3545,"children":3546},{"style":1156},[3547],{"type":48,"value":678},{"type":42,"tag":1149,"props":3549,"children":3550},{"style":2083},[3551],{"type":48,"value":1143},{"type":42,"tag":1149,"props":3553,"children":3554},{"style":2034},[3555],{"type":48,"value":3556},"())",{"type":42,"tag":1149,"props":3558,"children":3559},{"style":1156},[3560],{"type":48,"value":2063},{"type":42,"tag":1149,"props":3562,"children":3563},{"class":1151,"line":1262},[3564],{"type":42,"tag":1149,"props":3565,"children":3566},{"emptyLinePlaceholder":2069},[3567],{"type":48,"value":2072},{"type":42,"tag":1149,"props":3569,"children":3570},{"class":1151,"line":1271},[3571],{"type":42,"tag":1149,"props":3572,"children":3573},{"style":1247},[3574],{"type":48,"value":3575},"\u002F\u002F Step 2: Modify the field you need\n",{"type":42,"tag":1149,"props":3577,"children":3578},{"class":1151,"line":1280},[3579,3584,3588,3592,3596,3600,3604,3608,3612,3617],{"type":42,"tag":1149,"props":3580,"children":3581},{"style":2034},[3582],{"type":48,"value":3583},"current",{"type":42,"tag":1149,"props":3585,"children":3586},{"style":1156},[3587],{"type":48,"value":678},{"type":42,"tag":1149,"props":3589,"children":3590},{"style":2034},[3591],{"type":48,"value":1174},{"type":42,"tag":1149,"props":3593,"children":3594},{"style":1156},[3595],{"type":48,"value":678},{"type":42,"tag":1149,"props":3597,"children":3598},{"style":2034},[3599],{"type":48,"value":1204},{"type":42,"tag":1149,"props":3601,"children":3602},{"style":1156},[3603],{"type":48,"value":678},{"type":42,"tag":1149,"props":3605,"children":3606},{"style":2034},[3607],{"type":48,"value":161},{"type":42,"tag":1149,"props":3609,"children":3610},{"style":1156},[3611],{"type":48,"value":678},{"type":42,"tag":1149,"props":3613,"children":3614},{"style":2083},[3615],{"type":48,"value":3616},"push",{"type":42,"tag":1149,"props":3618,"children":3619},{"style":2034},[3620],{"type":48,"value":2133},{"type":42,"tag":1149,"props":3622,"children":3623},{"class":1151,"line":2314},[3624,3628,3632,3636,3640,3644,3648,3652,3656,3660,3664,3668,3672,3676,3680,3684,3688,3693,3697,3701,3705,3709,3714],{"type":42,"tag":1149,"props":3625,"children":3626},{"style":1156},[3627],{"type":48,"value":3485},{"type":42,"tag":1149,"props":3629,"children":3630},{"style":2130},[3631],{"type":48,"value":2744},{"type":42,"tag":1149,"props":3633,"children":3634},{"style":1156},[3635],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3637,"children":3638},{"style":1156},[3639],{"type":48,"value":2047},{"type":42,"tag":1149,"props":3641,"children":3642},{"style":2050},[3643],{"type":48,"value":2782},{"type":42,"tag":1149,"props":3645,"children":3646},{"style":1156},[3647],{"type":48,"value":2058},{"type":42,"tag":1149,"props":3649,"children":3650},{"style":1156},[3651],{"type":48,"value":2651},{"type":42,"tag":1149,"props":3653,"children":3654},{"style":2130},[3655],{"type":48,"value":2769},{"type":42,"tag":1149,"props":3657,"children":3658},{"style":1156},[3659],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3661,"children":3662},{"style":1156},[3663],{"type":48,"value":2047},{"type":42,"tag":1149,"props":3665,"children":3666},{"style":2050},[3667],{"type":48,"value":1600},{"type":42,"tag":1149,"props":3669,"children":3670},{"style":1156},[3671],{"type":48,"value":2058},{"type":42,"tag":1149,"props":3673,"children":3674},{"style":1156},[3675],{"type":48,"value":2651},{"type":42,"tag":1149,"props":3677,"children":3678},{"style":2130},[3679],{"type":48,"value":2795},{"type":42,"tag":1149,"props":3681,"children":3682},{"style":1156},[3683],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3685,"children":3686},{"style":1156},[3687],{"type":48,"value":2912},{"type":42,"tag":1149,"props":3689,"children":3690},{"style":2130},[3691],{"type":48,"value":3692}," callType",{"type":42,"tag":1149,"props":3694,"children":3695},{"style":1156},[3696],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3698,"children":3699},{"style":1156},[3700],{"type":48,"value":2047},{"type":42,"tag":1149,"props":3702,"children":3703},{"style":2050},[3704],{"type":48,"value":1732},{"type":42,"tag":1149,"props":3706,"children":3707},{"style":1156},[3708],{"type":48,"value":2058},{"type":42,"tag":1149,"props":3710,"children":3711},{"style":1156},[3712],{"type":48,"value":3713}," }",{"type":42,"tag":1149,"props":3715,"children":3716},{"style":1156},[3717],{"type":48,"value":3718}," }\n",{"type":42,"tag":1149,"props":3720,"children":3721},{"class":1151,"line":2352},[3722,3726],{"type":42,"tag":1149,"props":3723,"children":3724},{"style":2034},[3725],{"type":48,"value":2244},{"type":42,"tag":1149,"props":3727,"children":3728},{"style":1156},[3729],{"type":48,"value":2063},{"type":42,"tag":1149,"props":3731,"children":3732},{"class":1151,"line":2361},[3733],{"type":42,"tag":1149,"props":3734,"children":3735},{"emptyLinePlaceholder":2069},[3736],{"type":48,"value":2072},{"type":42,"tag":1149,"props":3738,"children":3739},{"class":1151,"line":2681},[3740],{"type":42,"tag":1149,"props":3741,"children":3742},{"style":1247},[3743],{"type":48,"value":3744},"\u002F\u002F Step 3: PUT the complete object back\n",{"type":42,"tag":1149,"props":3746,"children":3747},{"class":1151,"line":2698},[3748,3753,3757],{"type":42,"tag":1149,"props":3749,"children":3750},{"style":2254},[3751],{"type":48,"value":3752},"await",{"type":42,"tag":1149,"props":3754,"children":3755},{"style":2083},[3756],{"type":48,"value":2405},{"type":42,"tag":1149,"props":3758,"children":3759},{"style":2034},[3760],{"type":48,"value":2133},{"type":42,"tag":1149,"props":3762,"children":3763},{"class":1151,"line":2715},[3764,3768,3772,3776,3780,3784,3788,3792],{"type":42,"tag":1149,"props":3765,"children":3766},{"style":1156},[3767],{"type":48,"value":2417},{"type":42,"tag":1149,"props":3769,"children":3770},{"style":2034},[3771],{"type":48,"value":2422},{"type":42,"tag":1149,"props":3773,"children":3774},{"style":1156},[3775],{"type":48,"value":2169},{"type":42,"tag":1149,"props":3777,"children":3778},{"style":2050},[3779],{"type":48,"value":3460},{"type":42,"tag":1149,"props":3781,"children":3782},{"style":1156},[3783],{"type":48,"value":2178},{"type":42,"tag":1149,"props":3785,"children":3786},{"style":2034},[3787],{"type":48,"value":3469},{"type":42,"tag":1149,"props":3789,"children":3790},{"style":1156},[3791],{"type":48,"value":2306},{"type":42,"tag":1149,"props":3793,"children":3794},{"style":1156},[3795],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3797,"children":3798},{"class":1151,"line":2733},[3799],{"type":42,"tag":1149,"props":3800,"children":3801},{"style":1156},[3802],{"type":48,"value":2448},{"type":42,"tag":1149,"props":3804,"children":3805},{"class":1151,"line":2812},[3806,3810,3814,3818,3823,3827],{"type":42,"tag":1149,"props":3807,"children":3808},{"style":2130},[3809],{"type":48,"value":2456},{"type":42,"tag":1149,"props":3811,"children":3812},{"style":1156},[3813],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3815,"children":3816},{"style":1156},[3817],{"type":48,"value":2047},{"type":42,"tag":1149,"props":3819,"children":3820},{"style":2050},[3821],{"type":48,"value":3822},"PUT",{"type":42,"tag":1149,"props":3824,"children":3825},{"style":1156},[3826],{"type":48,"value":2058},{"type":42,"tag":1149,"props":3828,"children":3829},{"style":1156},[3830],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3832,"children":3833},{"class":1151,"line":2884},[3834,3838,3842,3846,3850],{"type":42,"tag":1149,"props":3835,"children":3836},{"style":2130},[3837],{"type":48,"value":2485},{"type":42,"tag":1149,"props":3839,"children":3840},{"style":1156},[3841],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3843,"children":3844},{"style":2083},[3845],{"type":48,"value":2086},{"type":42,"tag":1149,"props":3847,"children":3848},{"style":2034},[3849],{"type":48,"value":2091},{"type":42,"tag":1149,"props":3851,"children":3852},{"style":1156},[3853],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3855,"children":3856},{"class":1151,"line":2897},[3857,3861,3865,3869,3873,3877,3882],{"type":42,"tag":1149,"props":3858,"children":3859},{"style":2130},[3860],{"type":48,"value":2509},{"type":42,"tag":1149,"props":3862,"children":3863},{"style":1156},[3864],{"type":48,"value":1184},{"type":42,"tag":1149,"props":3866,"children":3867},{"style":2034},[3868],{"type":48,"value":2518},{"type":42,"tag":1149,"props":3870,"children":3871},{"style":1156},[3872],{"type":48,"value":678},{"type":42,"tag":1149,"props":3874,"children":3875},{"style":2083},[3876],{"type":48,"value":2527},{"type":42,"tag":1149,"props":3878,"children":3879},{"style":2034},[3880],{"type":48,"value":3881},"(current)",{"type":42,"tag":1149,"props":3883,"children":3884},{"style":1156},[3885],{"type":48,"value":2311},{"type":42,"tag":1149,"props":3887,"children":3888},{"class":1151,"line":2951},[3889],{"type":42,"tag":1149,"props":3890,"children":3891},{"style":1156},[3892],{"type":48,"value":1277},{"type":42,"tag":1149,"props":3894,"children":3895},{"class":1151,"line":2960},[3896,3900],{"type":42,"tag":1149,"props":3897,"children":3898},{"style":2034},[3899],{"type":48,"value":2244},{"type":42,"tag":1149,"props":3901,"children":3902},{"style":1156},[3903],{"type":48,"value":2063},{"type":42,"tag":390,"props":3905,"children":3907},{"className":3140,"code":3906,"language":3142,"meta":398,"style":398},"# Fetch current config\ncurrent = requests.get(\n    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\u002F{config_id}\",\n    auth=(account_sid, auth_token)\n).json()\n\n# Modify and PUT the whole thing back\ncurrent[\"channelSettings\"][\"VOICE\"][\"captureRules\"].append(\n    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {\"callType\": \"CLIENT\"}}\n)\n\nrequests.put(\n    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\u002F{config_id}\",\n    auth=(account_sid, auth_token),\n    json=current\n)\n",[3908],{"type":42,"tag":156,"props":3909,"children":3910},{"__ignoreMap":398},[3911,3919,3927,3935,3943,3950,3957,3965,3973,3981,3989,3996,4004,4011,4018,4026],{"type":42,"tag":1149,"props":3912,"children":3913},{"class":1151,"line":1152},[3914],{"type":42,"tag":1149,"props":3915,"children":3916},{},[3917],{"type":48,"value":3918},"# Fetch current config\n",{"type":42,"tag":1149,"props":3920,"children":3921},{"class":1151,"line":1162},[3922],{"type":42,"tag":1149,"props":3923,"children":3924},{},[3925],{"type":48,"value":3926},"current = requests.get(\n",{"type":42,"tag":1149,"props":3928,"children":3929},{"class":1151,"line":1192},[3930],{"type":42,"tag":1149,"props":3931,"children":3932},{},[3933],{"type":48,"value":3934},"    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FControlPlane\u002FConfigurations\u002F{config_id}\",\n",{"type":42,"tag":1149,"props":3936,"children":3937},{"class":1151,"line":1219},[3938],{"type":42,"tag":1149,"props":3939,"children":3940},{},[3941],{"type":48,"value":3942},"    auth=(account_sid, auth_token)\n",{"type":42,"tag":1149,"props":3944,"children":3945},{"class":1151,"line":1253},[3946],{"type":42,"tag":1149,"props":3947,"children":3948},{},[3949],{"type":48,"value":3391},{"type":42,"tag":1149,"props":3951,"children":3952},{"class":1151,"line":1262},[3953],{"type":42,"tag":1149,"props":3954,"children":3955},{"emptyLinePlaceholder":2069},[3956],{"type":48,"value":2072},{"type":42,"tag":1149,"props":3958,"children":3959},{"class":1151,"line":1271},[3960],{"type":42,"tag":1149,"props":3961,"children":3962},{},[3963],{"type":48,"value":3964},"# Modify and PUT the whole thing back\n",{"type":42,"tag":1149,"props":3966,"children":3967},{"class":1151,"line":1280},[3968],{"type":42,"tag":1149,"props":3969,"children":3970},{},[3971],{"type":48,"value":3972},"current[\"channelSettings\"][\"VOICE\"][\"captureRules\"].append(\n",{"type":42,"tag":1149,"props":3974,"children":3975},{"class":1151,"line":2314},[3976],{"type":42,"tag":1149,"props":3977,"children":3978},{},[3979],{"type":48,"value":3980},"    {\"from\": \"*\", \"to\": twilio_phone, \"metadata\": {\"callType\": \"CLIENT\"}}\n",{"type":42,"tag":1149,"props":3982,"children":3983},{"class":1151,"line":2352},[3984],{"type":42,"tag":1149,"props":3985,"children":3986},{},[3987],{"type":48,"value":3988},")\n",{"type":42,"tag":1149,"props":3990,"children":3991},{"class":1151,"line":2361},[3992],{"type":42,"tag":1149,"props":3993,"children":3994},{"emptyLinePlaceholder":2069},[3995],{"type":48,"value":2072},{"type":42,"tag":1149,"props":3997,"children":3998},{"class":1151,"line":2681},[3999],{"type":42,"tag":1149,"props":4000,"children":4001},{},[4002],{"type":48,"value":4003},"requests.put(\n",{"type":42,"tag":1149,"props":4005,"children":4006},{"class":1151,"line":2698},[4007],{"type":42,"tag":1149,"props":4008,"children":4009},{},[4010],{"type":48,"value":3934},{"type":42,"tag":1149,"props":4012,"children":4013},{"class":1151,"line":2715},[4014],{"type":42,"tag":1149,"props":4015,"children":4016},{},[4017],{"type":48,"value":3216},{"type":42,"tag":1149,"props":4019,"children":4020},{"class":1151,"line":2733},[4021],{"type":42,"tag":1149,"props":4022,"children":4023},{},[4024],{"type":48,"value":4025},"    json=current\n",{"type":42,"tag":1149,"props":4027,"children":4028},{"class":1151,"line":2812},[4029],{"type":42,"tag":1149,"props":4030,"children":4031},{},[4032],{"type":48,"value":3988},{"type":42,"tag":179,"props":4034,"children":4036},{"id":4035},"link-intelligence-configuration",[4037],{"type":48,"value":4038},"Link Intelligence Configuration",{"type":42,"tag":390,"props":4040,"children":4042},{"className":2017,"code":4041,"language":2019,"meta":398,"style":398},"\u002F\u002F Fetch current config, add Intelligence, PUT back\nconst current = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  { headers: getAuthHeaders() }\n).then(r => r.json());\n\ncurrent.intelligenceConfigurationIds = [intelligenceConfigId];\n\nawait fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FControlPlane\u002FConfigurations\u002F${configId}`,\n  {\n    method: 'PUT',\n    headers: getAuthHeaders(),\n    body: JSON.stringify(current),\n  }\n);\n",[4043],{"type":42,"tag":156,"props":4044,"children":4045},{"__ignoreMap":398},[4046,4054,4081,4116,4143,4190,4197,4226,4233,4248,4283,4290,4317,4340,4371,4378],{"type":42,"tag":1149,"props":4047,"children":4048},{"class":1151,"line":1152},[4049],{"type":42,"tag":1149,"props":4050,"children":4051},{"style":1247},[4052],{"type":48,"value":4053},"\u002F\u002F Fetch current config, add Intelligence, PUT back\n",{"type":42,"tag":1149,"props":4055,"children":4056},{"class":1151,"line":1162},[4057,4061,4065,4069,4073,4077],{"type":42,"tag":1149,"props":4058,"children":4059},{"style":1171},[4060],{"type":48,"value":2031},{"type":42,"tag":1149,"props":4062,"children":4063},{"style":2034},[4064],{"type":48,"value":3424},{"type":42,"tag":1149,"props":4066,"children":4067},{"style":1156},[4068],{"type":48,"value":2042},{"type":42,"tag":1149,"props":4070,"children":4071},{"style":2254},[4072],{"type":48,"value":2400},{"type":42,"tag":1149,"props":4074,"children":4075},{"style":2083},[4076],{"type":48,"value":2405},{"type":42,"tag":1149,"props":4078,"children":4079},{"style":2034},[4080],{"type":48,"value":2133},{"type":42,"tag":1149,"props":4082,"children":4083},{"class":1151,"line":1192},[4084,4088,4092,4096,4100,4104,4108,4112],{"type":42,"tag":1149,"props":4085,"children":4086},{"style":1156},[4087],{"type":48,"value":2417},{"type":42,"tag":1149,"props":4089,"children":4090},{"style":2034},[4091],{"type":48,"value":2422},{"type":42,"tag":1149,"props":4093,"children":4094},{"style":1156},[4095],{"type":48,"value":2169},{"type":42,"tag":1149,"props":4097,"children":4098},{"style":2050},[4099],{"type":48,"value":3460},{"type":42,"tag":1149,"props":4101,"children":4102},{"style":1156},[4103],{"type":48,"value":2178},{"type":42,"tag":1149,"props":4105,"children":4106},{"style":2034},[4107],{"type":48,"value":3469},{"type":42,"tag":1149,"props":4109,"children":4110},{"style":1156},[4111],{"type":48,"value":2306},{"type":42,"tag":1149,"props":4113,"children":4114},{"style":1156},[4115],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4117,"children":4118},{"class":1151,"line":1219},[4119,4123,4127,4131,4135,4139],{"type":42,"tag":1149,"props":4120,"children":4121},{"style":1156},[4122],{"type":48,"value":3485},{"type":42,"tag":1149,"props":4124,"children":4125},{"style":2130},[4126],{"type":48,"value":3490},{"type":42,"tag":1149,"props":4128,"children":4129},{"style":1156},[4130],{"type":48,"value":1184},{"type":42,"tag":1149,"props":4132,"children":4133},{"style":2083},[4134],{"type":48,"value":2086},{"type":42,"tag":1149,"props":4136,"children":4137},{"style":2034},[4138],{"type":48,"value":3503},{"type":42,"tag":1149,"props":4140,"children":4141},{"style":1156},[4142],{"type":48,"value":1286},{"type":42,"tag":1149,"props":4144,"children":4145},{"class":1151,"line":1253},[4146,4150,4154,4158,4162,4166,4170,4174,4178,4182,4186],{"type":42,"tag":1149,"props":4147,"children":4148},{"style":2034},[4149],{"type":48,"value":2244},{"type":42,"tag":1149,"props":4151,"children":4152},{"style":1156},[4153],{"type":48,"value":678},{"type":42,"tag":1149,"props":4155,"children":4156},{"style":2083},[4157],{"type":48,"value":3523},{"type":42,"tag":1149,"props":4159,"children":4160},{"style":2034},[4161],{"type":48,"value":2226},{"type":42,"tag":1149,"props":4163,"children":4164},{"style":3530},[4165],{"type":48,"value":3533},{"type":42,"tag":1149,"props":4167,"children":4168},{"style":1171},[4169],{"type":48,"value":3538},{"type":42,"tag":1149,"props":4171,"children":4172},{"style":2034},[4173],{"type":48,"value":3543},{"type":42,"tag":1149,"props":4175,"children":4176},{"style":1156},[4177],{"type":48,"value":678},{"type":42,"tag":1149,"props":4179,"children":4180},{"style":2083},[4181],{"type":48,"value":1143},{"type":42,"tag":1149,"props":4183,"children":4184},{"style":2034},[4185],{"type":48,"value":3556},{"type":42,"tag":1149,"props":4187,"children":4188},{"style":1156},[4189],{"type":48,"value":2063},{"type":42,"tag":1149,"props":4191,"children":4192},{"class":1151,"line":1262},[4193],{"type":42,"tag":1149,"props":4194,"children":4195},{"emptyLinePlaceholder":2069},[4196],{"type":48,"value":2072},{"type":42,"tag":1149,"props":4198,"children":4199},{"class":1151,"line":1271},[4200,4204,4208,4213,4217,4222],{"type":42,"tag":1149,"props":4201,"children":4202},{"style":2034},[4203],{"type":48,"value":3583},{"type":42,"tag":1149,"props":4205,"children":4206},{"style":1156},[4207],{"type":48,"value":678},{"type":42,"tag":1149,"props":4209,"children":4210},{"style":2034},[4211],{"type":48,"value":4212},"intelligenceConfigurationIds ",{"type":42,"tag":1149,"props":4214,"children":4215},{"style":1156},[4216],{"type":48,"value":2042},{"type":42,"tag":1149,"props":4218,"children":4219},{"style":2034},[4220],{"type":48,"value":4221}," [intelligenceConfigId]",{"type":42,"tag":1149,"props":4223,"children":4224},{"style":1156},[4225],{"type":48,"value":2063},{"type":42,"tag":1149,"props":4227,"children":4228},{"class":1151,"line":1280},[4229],{"type":42,"tag":1149,"props":4230,"children":4231},{"emptyLinePlaceholder":2069},[4232],{"type":48,"value":2072},{"type":42,"tag":1149,"props":4234,"children":4235},{"class":1151,"line":2314},[4236,4240,4244],{"type":42,"tag":1149,"props":4237,"children":4238},{"style":2254},[4239],{"type":48,"value":3752},{"type":42,"tag":1149,"props":4241,"children":4242},{"style":2083},[4243],{"type":48,"value":2405},{"type":42,"tag":1149,"props":4245,"children":4246},{"style":2034},[4247],{"type":48,"value":2133},{"type":42,"tag":1149,"props":4249,"children":4250},{"class":1151,"line":2352},[4251,4255,4259,4263,4267,4271,4275,4279],{"type":42,"tag":1149,"props":4252,"children":4253},{"style":1156},[4254],{"type":48,"value":2417},{"type":42,"tag":1149,"props":4256,"children":4257},{"style":2034},[4258],{"type":48,"value":2422},{"type":42,"tag":1149,"props":4260,"children":4261},{"style":1156},[4262],{"type":48,"value":2169},{"type":42,"tag":1149,"props":4264,"children":4265},{"style":2050},[4266],{"type":48,"value":3460},{"type":42,"tag":1149,"props":4268,"children":4269},{"style":1156},[4270],{"type":48,"value":2178},{"type":42,"tag":1149,"props":4272,"children":4273},{"style":2034},[4274],{"type":48,"value":3469},{"type":42,"tag":1149,"props":4276,"children":4277},{"style":1156},[4278],{"type":48,"value":2306},{"type":42,"tag":1149,"props":4280,"children":4281},{"style":1156},[4282],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4284,"children":4285},{"class":1151,"line":2361},[4286],{"type":42,"tag":1149,"props":4287,"children":4288},{"style":1156},[4289],{"type":48,"value":2448},{"type":42,"tag":1149,"props":4291,"children":4292},{"class":1151,"line":2681},[4293,4297,4301,4305,4309,4313],{"type":42,"tag":1149,"props":4294,"children":4295},{"style":2130},[4296],{"type":48,"value":2456},{"type":42,"tag":1149,"props":4298,"children":4299},{"style":1156},[4300],{"type":48,"value":1184},{"type":42,"tag":1149,"props":4302,"children":4303},{"style":1156},[4304],{"type":48,"value":2047},{"type":42,"tag":1149,"props":4306,"children":4307},{"style":2050},[4308],{"type":48,"value":3822},{"type":42,"tag":1149,"props":4310,"children":4311},{"style":1156},[4312],{"type":48,"value":2058},{"type":42,"tag":1149,"props":4314,"children":4315},{"style":1156},[4316],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4318,"children":4319},{"class":1151,"line":2698},[4320,4324,4328,4332,4336],{"type":42,"tag":1149,"props":4321,"children":4322},{"style":2130},[4323],{"type":48,"value":2485},{"type":42,"tag":1149,"props":4325,"children":4326},{"style":1156},[4327],{"type":48,"value":1184},{"type":42,"tag":1149,"props":4329,"children":4330},{"style":2083},[4331],{"type":48,"value":2086},{"type":42,"tag":1149,"props":4333,"children":4334},{"style":2034},[4335],{"type":48,"value":2091},{"type":42,"tag":1149,"props":4337,"children":4338},{"style":1156},[4339],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4341,"children":4342},{"class":1151,"line":2715},[4343,4347,4351,4355,4359,4363,4367],{"type":42,"tag":1149,"props":4344,"children":4345},{"style":2130},[4346],{"type":48,"value":2509},{"type":42,"tag":1149,"props":4348,"children":4349},{"style":1156},[4350],{"type":48,"value":1184},{"type":42,"tag":1149,"props":4352,"children":4353},{"style":2034},[4354],{"type":48,"value":2518},{"type":42,"tag":1149,"props":4356,"children":4357},{"style":1156},[4358],{"type":48,"value":678},{"type":42,"tag":1149,"props":4360,"children":4361},{"style":2083},[4362],{"type":48,"value":2527},{"type":42,"tag":1149,"props":4364,"children":4365},{"style":2034},[4366],{"type":48,"value":3881},{"type":42,"tag":1149,"props":4368,"children":4369},{"style":1156},[4370],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4372,"children":4373},{"class":1151,"line":2733},[4374],{"type":42,"tag":1149,"props":4375,"children":4376},{"style":1156},[4377],{"type":48,"value":1277},{"type":42,"tag":1149,"props":4379,"children":4380},{"class":1151,"line":2812},[4381,4385],{"type":42,"tag":1149,"props":4382,"children":4383},{"style":2034},[4384],{"type":48,"value":2244},{"type":42,"tag":1149,"props":4386,"children":4387},{"style":1156},[4388],{"type":48,"value":2063},{"type":42,"tag":179,"props":4390,"children":4392},{"id":4391},"read-conversations-and-communications",[4393],{"type":48,"value":4394},"Read Conversations and Communications",{"type":42,"tag":390,"props":4396,"children":4398},{"className":2017,"code":4397,"language":2019,"meta":398,"style":398},"\u002F\u002F List active conversations\nconst conversations = await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FConversations?Status=ACTIVE&PageSize=10`,\n  { headers: getAuthHeaders() }\n).then(r => r.json());\n\nfor (const conv of conversations.conversations ?? []) {\n  \u002F\u002F Note: List view has minimal data. For full details, fetch individual conversation\n  console.log(`Conversation: ${conv.id}, Created: ${conv.createdAt || 'N\u002FA'}`);\n  \n  \u002F\u002F List communications (messages + voice utterances)\n  const comms = await fetch(\n    `${CONVERSATIONS_V2_BASE}\u002FConversations\u002F${conv.id}\u002FCommunications`,\n    { headers: getAuthHeaders() }\n  ).then(r => r.json());\n\n  for (const comm of comms.communications ?? []) {\n    \u002F\u002F Use optional chaining - channel and body may be undefined in list view\n    console.log(`[${comm.channel ?? 'N\u002FA'}] ${comm.body ?? 'N\u002FA'}`);\n  }\n}\n",[4399],{"type":42,"tag":156,"props":4400,"children":4401},{"__ignoreMap":398},[4402,4410,4438,4466,4493,4540,4547,4602,4610,4711,4719,4727,4755,4808,4836,4883,4890,4942,4950,5060,5067],{"type":42,"tag":1149,"props":4403,"children":4404},{"class":1151,"line":1152},[4405],{"type":42,"tag":1149,"props":4406,"children":4407},{"style":1247},[4408],{"type":48,"value":4409},"\u002F\u002F List active conversations\n",{"type":42,"tag":1149,"props":4411,"children":4412},{"class":1151,"line":1162},[4413,4417,4422,4426,4430,4434],{"type":42,"tag":1149,"props":4414,"children":4415},{"style":1171},[4416],{"type":48,"value":2031},{"type":42,"tag":1149,"props":4418,"children":4419},{"style":2034},[4420],{"type":48,"value":4421}," conversations ",{"type":42,"tag":1149,"props":4423,"children":4424},{"style":1156},[4425],{"type":48,"value":2042},{"type":42,"tag":1149,"props":4427,"children":4428},{"style":2254},[4429],{"type":48,"value":2400},{"type":42,"tag":1149,"props":4431,"children":4432},{"style":2083},[4433],{"type":48,"value":2405},{"type":42,"tag":1149,"props":4435,"children":4436},{"style":2034},[4437],{"type":48,"value":2133},{"type":42,"tag":1149,"props":4439,"children":4440},{"class":1151,"line":1192},[4441,4445,4449,4453,4458,4462],{"type":42,"tag":1149,"props":4442,"children":4443},{"style":1156},[4444],{"type":48,"value":2417},{"type":42,"tag":1149,"props":4446,"children":4447},{"style":2034},[4448],{"type":48,"value":2422},{"type":42,"tag":1149,"props":4450,"children":4451},{"style":1156},[4452],{"type":48,"value":2169},{"type":42,"tag":1149,"props":4454,"children":4455},{"style":2050},[4456],{"type":48,"value":4457},"\u002FConversations?Status=ACTIVE&PageSize=10",{"type":42,"tag":1149,"props":4459,"children":4460},{"style":1156},[4461],{"type":48,"value":2436},{"type":42,"tag":1149,"props":4463,"children":4464},{"style":1156},[4465],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4467,"children":4468},{"class":1151,"line":1219},[4469,4473,4477,4481,4485,4489],{"type":42,"tag":1149,"props":4470,"children":4471},{"style":1156},[4472],{"type":48,"value":3485},{"type":42,"tag":1149,"props":4474,"children":4475},{"style":2130},[4476],{"type":48,"value":3490},{"type":42,"tag":1149,"props":4478,"children":4479},{"style":1156},[4480],{"type":48,"value":1184},{"type":42,"tag":1149,"props":4482,"children":4483},{"style":2083},[4484],{"type":48,"value":2086},{"type":42,"tag":1149,"props":4486,"children":4487},{"style":2034},[4488],{"type":48,"value":3503},{"type":42,"tag":1149,"props":4490,"children":4491},{"style":1156},[4492],{"type":48,"value":1286},{"type":42,"tag":1149,"props":4494,"children":4495},{"class":1151,"line":1253},[4496,4500,4504,4508,4512,4516,4520,4524,4528,4532,4536],{"type":42,"tag":1149,"props":4497,"children":4498},{"style":2034},[4499],{"type":48,"value":2244},{"type":42,"tag":1149,"props":4501,"children":4502},{"style":1156},[4503],{"type":48,"value":678},{"type":42,"tag":1149,"props":4505,"children":4506},{"style":2083},[4507],{"type":48,"value":3523},{"type":42,"tag":1149,"props":4509,"children":4510},{"style":2034},[4511],{"type":48,"value":2226},{"type":42,"tag":1149,"props":4513,"children":4514},{"style":3530},[4515],{"type":48,"value":3533},{"type":42,"tag":1149,"props":4517,"children":4518},{"style":1171},[4519],{"type":48,"value":3538},{"type":42,"tag":1149,"props":4521,"children":4522},{"style":2034},[4523],{"type":48,"value":3543},{"type":42,"tag":1149,"props":4525,"children":4526},{"style":1156},[4527],{"type":48,"value":678},{"type":42,"tag":1149,"props":4529,"children":4530},{"style":2083},[4531],{"type":48,"value":1143},{"type":42,"tag":1149,"props":4533,"children":4534},{"style":2034},[4535],{"type":48,"value":3556},{"type":42,"tag":1149,"props":4537,"children":4538},{"style":1156},[4539],{"type":48,"value":2063},{"type":42,"tag":1149,"props":4541,"children":4542},{"class":1151,"line":1262},[4543],{"type":42,"tag":1149,"props":4544,"children":4545},{"emptyLinePlaceholder":2069},[4546],{"type":48,"value":2072},{"type":42,"tag":1149,"props":4548,"children":4549},{"class":1151,"line":1271},[4550,4555,4560,4564,4569,4574,4579,4583,4588,4593,4598],{"type":42,"tag":1149,"props":4551,"children":4552},{"style":2254},[4553],{"type":48,"value":4554},"for",{"type":42,"tag":1149,"props":4556,"children":4557},{"style":2034},[4558],{"type":48,"value":4559}," (",{"type":42,"tag":1149,"props":4561,"children":4562},{"style":1171},[4563],{"type":48,"value":2031},{"type":42,"tag":1149,"props":4565,"children":4566},{"style":2034},[4567],{"type":48,"value":4568}," conv ",{"type":42,"tag":1149,"props":4570,"children":4571},{"style":1156},[4572],{"type":48,"value":4573},"of",{"type":42,"tag":1149,"props":4575,"children":4576},{"style":2034},[4577],{"type":48,"value":4578}," conversations",{"type":42,"tag":1149,"props":4580,"children":4581},{"style":1156},[4582],{"type":48,"value":678},{"type":42,"tag":1149,"props":4584,"children":4585},{"style":2034},[4586],{"type":48,"value":4587},"conversations ",{"type":42,"tag":1149,"props":4589,"children":4590},{"style":1156},[4591],{"type":48,"value":4592},"??",{"type":42,"tag":1149,"props":4594,"children":4595},{"style":2034},[4596],{"type":48,"value":4597}," []) ",{"type":42,"tag":1149,"props":4599,"children":4600},{"style":1156},[4601],{"type":48,"value":1159},{"type":42,"tag":1149,"props":4603,"children":4604},{"class":1151,"line":1280},[4605],{"type":42,"tag":1149,"props":4606,"children":4607},{"style":1247},[4608],{"type":48,"value":4609},"  \u002F\u002F Note: List view has minimal data. For full details, fetch individual conversation\n",{"type":42,"tag":1149,"props":4611,"children":4612},{"class":1151,"line":2314},[4613,4618,4622,4627,4631,4635,4640,4644,4649,4653,4658,4662,4667,4671,4675,4679,4684,4689,4693,4698,4703,4707],{"type":42,"tag":1149,"props":4614,"children":4615},{"style":2034},[4616],{"type":48,"value":4617},"  console",{"type":42,"tag":1149,"props":4619,"children":4620},{"style":1156},[4621],{"type":48,"value":678},{"type":42,"tag":1149,"props":4623,"children":4624},{"style":2083},[4625],{"type":48,"value":4626},"log",{"type":42,"tag":1149,"props":4628,"children":4629},{"style":2130},[4630],{"type":48,"value":2226},{"type":42,"tag":1149,"props":4632,"children":4633},{"style":1156},[4634],{"type":48,"value":2436},{"type":42,"tag":1149,"props":4636,"children":4637},{"style":2050},[4638],{"type":48,"value":4639},"Conversation: ",{"type":42,"tag":1149,"props":4641,"children":4642},{"style":1156},[4643],{"type":48,"value":2178},{"type":42,"tag":1149,"props":4645,"children":4646},{"style":2034},[4647],{"type":48,"value":4648},"conv",{"type":42,"tag":1149,"props":4650,"children":4651},{"style":1156},[4652],{"type":48,"value":678},{"type":42,"tag":1149,"props":4654,"children":4655},{"style":2034},[4656],{"type":48,"value":4657},"id",{"type":42,"tag":1149,"props":4659,"children":4660},{"style":1156},[4661],{"type":48,"value":2169},{"type":42,"tag":1149,"props":4663,"children":4664},{"style":2050},[4665],{"type":48,"value":4666},", Created: ",{"type":42,"tag":1149,"props":4668,"children":4669},{"style":1156},[4670],{"type":48,"value":2178},{"type":42,"tag":1149,"props":4672,"children":4673},{"style":2034},[4674],{"type":48,"value":4648},{"type":42,"tag":1149,"props":4676,"children":4677},{"style":1156},[4678],{"type":48,"value":678},{"type":42,"tag":1149,"props":4680,"children":4681},{"style":2034},[4682],{"type":48,"value":4683},"createdAt ",{"type":42,"tag":1149,"props":4685,"children":4686},{"style":1156},[4687],{"type":48,"value":4688},"||",{"type":42,"tag":1149,"props":4690,"children":4691},{"style":1156},[4692],{"type":48,"value":2047},{"type":42,"tag":1149,"props":4694,"children":4695},{"style":2050},[4696],{"type":48,"value":4697},"N\u002FA",{"type":42,"tag":1149,"props":4699,"children":4700},{"style":1156},[4701],{"type":48,"value":4702},"'}`",{"type":42,"tag":1149,"props":4704,"children":4705},{"style":2130},[4706],{"type":48,"value":2244},{"type":42,"tag":1149,"props":4708,"children":4709},{"style":1156},[4710],{"type":48,"value":2063},{"type":42,"tag":1149,"props":4712,"children":4713},{"class":1151,"line":2352},[4714],{"type":42,"tag":1149,"props":4715,"children":4716},{"style":2130},[4717],{"type":48,"value":4718},"  \n",{"type":42,"tag":1149,"props":4720,"children":4721},{"class":1151,"line":2361},[4722],{"type":42,"tag":1149,"props":4723,"children":4724},{"style":1247},[4725],{"type":48,"value":4726},"  \u002F\u002F List communications (messages + voice utterances)\n",{"type":42,"tag":1149,"props":4728,"children":4729},{"class":1151,"line":2681},[4730,4734,4739,4743,4747,4751],{"type":42,"tag":1149,"props":4731,"children":4732},{"style":1171},[4733],{"type":48,"value":2103},{"type":42,"tag":1149,"props":4735,"children":4736},{"style":2034},[4737],{"type":48,"value":4738}," comms",{"type":42,"tag":1149,"props":4740,"children":4741},{"style":1156},[4742],{"type":48,"value":2113},{"type":42,"tag":1149,"props":4744,"children":4745},{"style":2254},[4746],{"type":48,"value":2400},{"type":42,"tag":1149,"props":4748,"children":4749},{"style":2083},[4750],{"type":48,"value":2405},{"type":42,"tag":1149,"props":4752,"children":4753},{"style":2130},[4754],{"type":48,"value":2133},{"type":42,"tag":1149,"props":4756,"children":4757},{"class":1151,"line":2698},[4758,4762,4766,4770,4775,4779,4783,4787,4791,4795,4800,4804],{"type":42,"tag":1149,"props":4759,"children":4760},{"style":1156},[4761],{"type":48,"value":2141},{"type":42,"tag":1149,"props":4763,"children":4764},{"style":2034},[4765],{"type":48,"value":2422},{"type":42,"tag":1149,"props":4767,"children":4768},{"style":1156},[4769],{"type":48,"value":2169},{"type":42,"tag":1149,"props":4771,"children":4772},{"style":2050},[4773],{"type":48,"value":4774},"\u002FConversations\u002F",{"type":42,"tag":1149,"props":4776,"children":4777},{"style":1156},[4778],{"type":48,"value":2178},{"type":42,"tag":1149,"props":4780,"children":4781},{"style":2034},[4782],{"type":48,"value":4648},{"type":42,"tag":1149,"props":4784,"children":4785},{"style":1156},[4786],{"type":48,"value":678},{"type":42,"tag":1149,"props":4788,"children":4789},{"style":2034},[4790],{"type":48,"value":4657},{"type":42,"tag":1149,"props":4792,"children":4793},{"style":1156},[4794],{"type":48,"value":2169},{"type":42,"tag":1149,"props":4796,"children":4797},{"style":2050},[4798],{"type":48,"value":4799},"\u002FCommunications",{"type":42,"tag":1149,"props":4801,"children":4802},{"style":1156},[4803],{"type":48,"value":2436},{"type":42,"tag":1149,"props":4805,"children":4806},{"style":1156},[4807],{"type":48,"value":2311},{"type":42,"tag":1149,"props":4809,"children":4810},{"class":1151,"line":2715},[4811,4816,4820,4824,4828,4832],{"type":42,"tag":1149,"props":4812,"children":4813},{"style":1156},[4814],{"type":48,"value":4815},"    {",{"type":42,"tag":1149,"props":4817,"children":4818},{"style":2130},[4819],{"type":48,"value":3490},{"type":42,"tag":1149,"props":4821,"children":4822},{"style":1156},[4823],{"type":48,"value":1184},{"type":42,"tag":1149,"props":4825,"children":4826},{"style":2083},[4827],{"type":48,"value":2086},{"type":42,"tag":1149,"props":4829,"children":4830},{"style":2130},[4831],{"type":48,"value":3503},{"type":42,"tag":1149,"props":4833,"children":4834},{"style":1156},[4835],{"type":48,"value":1286},{"type":42,"tag":1149,"props":4837,"children":4838},{"class":1151,"line":2733},[4839,4843,4847,4851,4855,4859,4863,4867,4871,4875,4879],{"type":42,"tag":1149,"props":4840,"children":4841},{"style":2130},[4842],{"type":48,"value":2212},{"type":42,"tag":1149,"props":4844,"children":4845},{"style":1156},[4846],{"type":48,"value":678},{"type":42,"tag":1149,"props":4848,"children":4849},{"style":2083},[4850],{"type":48,"value":3523},{"type":42,"tag":1149,"props":4852,"children":4853},{"style":2130},[4854],{"type":48,"value":2226},{"type":42,"tag":1149,"props":4856,"children":4857},{"style":3530},[4858],{"type":48,"value":3533},{"type":42,"tag":1149,"props":4860,"children":4861},{"style":1171},[4862],{"type":48,"value":3538},{"type":42,"tag":1149,"props":4864,"children":4865},{"style":2034},[4866],{"type":48,"value":3543},{"type":42,"tag":1149,"props":4868,"children":4869},{"style":1156},[4870],{"type":48,"value":678},{"type":42,"tag":1149,"props":4872,"children":4873},{"style":2083},[4874],{"type":48,"value":1143},{"type":42,"tag":1149,"props":4876,"children":4877},{"style":2130},[4878],{"type":48,"value":3556},{"type":42,"tag":1149,"props":4880,"children":4881},{"style":1156},[4882],{"type":48,"value":2063},{"type":42,"tag":1149,"props":4884,"children":4885},{"class":1151,"line":2812},[4886],{"type":42,"tag":1149,"props":4887,"children":4888},{"emptyLinePlaceholder":2069},[4889],{"type":48,"value":2072},{"type":42,"tag":1149,"props":4891,"children":4892},{"class":1151,"line":2884},[4893,4898,4902,4906,4911,4916,4920,4924,4929,4934,4938],{"type":42,"tag":1149,"props":4894,"children":4895},{"style":2254},[4896],{"type":48,"value":4897},"  for",{"type":42,"tag":1149,"props":4899,"children":4900},{"style":2130},[4901],{"type":48,"value":4559},{"type":42,"tag":1149,"props":4903,"children":4904},{"style":1171},[4905],{"type":48,"value":2031},{"type":42,"tag":1149,"props":4907,"children":4908},{"style":2034},[4909],{"type":48,"value":4910}," comm",{"type":42,"tag":1149,"props":4912,"children":4913},{"style":1156},[4914],{"type":48,"value":4915}," of",{"type":42,"tag":1149,"props":4917,"children":4918},{"style":2034},[4919],{"type":48,"value":4738},{"type":42,"tag":1149,"props":4921,"children":4922},{"style":1156},[4923],{"type":48,"value":678},{"type":42,"tag":1149,"props":4925,"children":4926},{"style":2034},[4927],{"type":48,"value":4928},"communications",{"type":42,"tag":1149,"props":4930,"children":4931},{"style":1156},[4932],{"type":48,"value":4933}," ??",{"type":42,"tag":1149,"props":4935,"children":4936},{"style":2130},[4937],{"type":48,"value":4597},{"type":42,"tag":1149,"props":4939,"children":4940},{"style":1156},[4941],{"type":48,"value":1159},{"type":42,"tag":1149,"props":4943,"children":4944},{"class":1151,"line":2897},[4945],{"type":42,"tag":1149,"props":4946,"children":4947},{"style":1247},[4948],{"type":48,"value":4949},"    \u002F\u002F Use optional chaining - channel and body may be undefined in list view\n",{"type":42,"tag":1149,"props":4951,"children":4952},{"class":1151,"line":2951},[4953,4958,4962,4966,4970,4974,4979,4983,4988,4992,4997,5001,5005,5009,5014,5019,5023,5027,5031,5036,5040,5044,5048,5052,5056],{"type":42,"tag":1149,"props":4954,"children":4955},{"style":2034},[4956],{"type":48,"value":4957},"    console",{"type":42,"tag":1149,"props":4959,"children":4960},{"style":1156},[4961],{"type":48,"value":678},{"type":42,"tag":1149,"props":4963,"children":4964},{"style":2083},[4965],{"type":48,"value":4626},{"type":42,"tag":1149,"props":4967,"children":4968},{"style":2130},[4969],{"type":48,"value":2226},{"type":42,"tag":1149,"props":4971,"children":4972},{"style":1156},[4973],{"type":48,"value":2436},{"type":42,"tag":1149,"props":4975,"children":4976},{"style":2050},[4977],{"type":48,"value":4978},"[",{"type":42,"tag":1149,"props":4980,"children":4981},{"style":1156},[4982],{"type":48,"value":2178},{"type":42,"tag":1149,"props":4984,"children":4985},{"style":2034},[4986],{"type":48,"value":4987},"comm",{"type":42,"tag":1149,"props":4989,"children":4990},{"style":1156},[4991],{"type":48,"value":678},{"type":42,"tag":1149,"props":4993,"children":4994},{"style":2034},[4995],{"type":48,"value":4996},"channel ",{"type":42,"tag":1149,"props":4998,"children":4999},{"style":1156},[5000],{"type":48,"value":4592},{"type":42,"tag":1149,"props":5002,"children":5003},{"style":1156},[5004],{"type":48,"value":2047},{"type":42,"tag":1149,"props":5006,"children":5007},{"style":2050},[5008],{"type":48,"value":4697},{"type":42,"tag":1149,"props":5010,"children":5011},{"style":1156},[5012],{"type":48,"value":5013},"'}",{"type":42,"tag":1149,"props":5015,"children":5016},{"style":2050},[5017],{"type":48,"value":5018},"] ",{"type":42,"tag":1149,"props":5020,"children":5021},{"style":1156},[5022],{"type":48,"value":2178},{"type":42,"tag":1149,"props":5024,"children":5025},{"style":2034},[5026],{"type":48,"value":4987},{"type":42,"tag":1149,"props":5028,"children":5029},{"style":1156},[5030],{"type":48,"value":678},{"type":42,"tag":1149,"props":5032,"children":5033},{"style":2034},[5034],{"type":48,"value":5035},"body ",{"type":42,"tag":1149,"props":5037,"children":5038},{"style":1156},[5039],{"type":48,"value":4592},{"type":42,"tag":1149,"props":5041,"children":5042},{"style":1156},[5043],{"type":48,"value":2047},{"type":42,"tag":1149,"props":5045,"children":5046},{"style":2050},[5047],{"type":48,"value":4697},{"type":42,"tag":1149,"props":5049,"children":5050},{"style":1156},[5051],{"type":48,"value":4702},{"type":42,"tag":1149,"props":5053,"children":5054},{"style":2130},[5055],{"type":48,"value":2244},{"type":42,"tag":1149,"props":5057,"children":5058},{"style":1156},[5059],{"type":48,"value":2063},{"type":42,"tag":1149,"props":5061,"children":5062},{"class":1151,"line":2960},[5063],{"type":42,"tag":1149,"props":5064,"children":5065},{"style":1156},[5066],{"type":48,"value":1277},{"type":42,"tag":1149,"props":5068,"children":5069},{"class":1151,"line":2977},[5070],{"type":42,"tag":1149,"props":5071,"children":5072},{"style":1156},[5073],{"type":48,"value":1286},{"type":42,"tag":390,"props":5075,"children":5077},{"className":3140,"code":5076,"language":3142,"meta":398,"style":398},"conversations = requests.get(\n    \"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\",\n    auth=(account_sid, auth_token),\n    params={\"Status\": \"ACTIVE\", \"PageSize\": 10}\n).json()\n\nfor conv in conversations.get(\"conversations\", []):\n    conv_id = conv[\"id\"]\n    # Note: List view has minimal data. Use .get() for defensive access\n    print(f\"Conversation: {conv_id}, Created: {conv.get('createdAt', 'N\u002FA')}\")\n    \n    comms = requests.get(\n        f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\u002F{conv_id}\u002FCommunications\",\n        auth=(account_sid, auth_token)\n    ).json()\n\n    for comm in comms.get(\"communications\", []):\n        # Use .get() - channel and body may be missing in list view\n        print(f\"  [{comm.get('channel', 'N\u002FA')}] {comm.get('body', 'N\u002FA')}\")\n",[5078],{"type":42,"tag":156,"props":5079,"children":5080},{"__ignoreMap":398},[5081,5089,5097,5104,5112,5119,5126,5134,5142,5150,5158,5166,5174,5182,5190,5198,5205,5213,5221],{"type":42,"tag":1149,"props":5082,"children":5083},{"class":1151,"line":1152},[5084],{"type":42,"tag":1149,"props":5085,"children":5086},{},[5087],{"type":48,"value":5088},"conversations = requests.get(\n",{"type":42,"tag":1149,"props":5090,"children":5091},{"class":1151,"line":1162},[5092],{"type":42,"tag":1149,"props":5093,"children":5094},{},[5095],{"type":48,"value":5096},"    \"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\",\n",{"type":42,"tag":1149,"props":5098,"children":5099},{"class":1151,"line":1192},[5100],{"type":42,"tag":1149,"props":5101,"children":5102},{},[5103],{"type":48,"value":3216},{"type":42,"tag":1149,"props":5105,"children":5106},{"class":1151,"line":1219},[5107],{"type":42,"tag":1149,"props":5108,"children":5109},{},[5110],{"type":48,"value":5111},"    params={\"Status\": \"ACTIVE\", \"PageSize\": 10}\n",{"type":42,"tag":1149,"props":5113,"children":5114},{"class":1151,"line":1253},[5115],{"type":42,"tag":1149,"props":5116,"children":5117},{},[5118],{"type":48,"value":3391},{"type":42,"tag":1149,"props":5120,"children":5121},{"class":1151,"line":1262},[5122],{"type":42,"tag":1149,"props":5123,"children":5124},{"emptyLinePlaceholder":2069},[5125],{"type":48,"value":2072},{"type":42,"tag":1149,"props":5127,"children":5128},{"class":1151,"line":1271},[5129],{"type":42,"tag":1149,"props":5130,"children":5131},{},[5132],{"type":48,"value":5133},"for conv in conversations.get(\"conversations\", []):\n",{"type":42,"tag":1149,"props":5135,"children":5136},{"class":1151,"line":1280},[5137],{"type":42,"tag":1149,"props":5138,"children":5139},{},[5140],{"type":48,"value":5141},"    conv_id = conv[\"id\"]\n",{"type":42,"tag":1149,"props":5143,"children":5144},{"class":1151,"line":2314},[5145],{"type":42,"tag":1149,"props":5146,"children":5147},{},[5148],{"type":48,"value":5149},"    # Note: List view has minimal data. Use .get() for defensive access\n",{"type":42,"tag":1149,"props":5151,"children":5152},{"class":1151,"line":2352},[5153],{"type":42,"tag":1149,"props":5154,"children":5155},{},[5156],{"type":48,"value":5157},"    print(f\"Conversation: {conv_id}, Created: {conv.get('createdAt', 'N\u002FA')}\")\n",{"type":42,"tag":1149,"props":5159,"children":5160},{"class":1151,"line":2361},[5161],{"type":42,"tag":1149,"props":5162,"children":5163},{},[5164],{"type":48,"value":5165},"    \n",{"type":42,"tag":1149,"props":5167,"children":5168},{"class":1151,"line":2681},[5169],{"type":42,"tag":1149,"props":5170,"children":5171},{},[5172],{"type":48,"value":5173},"    comms = requests.get(\n",{"type":42,"tag":1149,"props":5175,"children":5176},{"class":1151,"line":2698},[5177],{"type":42,"tag":1149,"props":5178,"children":5179},{},[5180],{"type":48,"value":5181},"        f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\u002F{conv_id}\u002FCommunications\",\n",{"type":42,"tag":1149,"props":5183,"children":5184},{"class":1151,"line":2715},[5185],{"type":42,"tag":1149,"props":5186,"children":5187},{},[5188],{"type":48,"value":5189},"        auth=(account_sid, auth_token)\n",{"type":42,"tag":1149,"props":5191,"children":5192},{"class":1151,"line":2733},[5193],{"type":42,"tag":1149,"props":5194,"children":5195},{},[5196],{"type":48,"value":5197},"    ).json()\n",{"type":42,"tag":1149,"props":5199,"children":5200},{"class":1151,"line":2812},[5201],{"type":42,"tag":1149,"props":5202,"children":5203},{"emptyLinePlaceholder":2069},[5204],{"type":48,"value":2072},{"type":42,"tag":1149,"props":5206,"children":5207},{"class":1151,"line":2884},[5208],{"type":42,"tag":1149,"props":5209,"children":5210},{},[5211],{"type":48,"value":5212},"    for comm in comms.get(\"communications\", []):\n",{"type":42,"tag":1149,"props":5214,"children":5215},{"class":1151,"line":2897},[5216],{"type":42,"tag":1149,"props":5217,"children":5218},{},[5219],{"type":48,"value":5220},"        # Use .get() - channel and body may be missing in list view\n",{"type":42,"tag":1149,"props":5222,"children":5223},{"class":1151,"line":2951},[5224],{"type":42,"tag":1149,"props":5225,"children":5226},{},[5227],{"type":48,"value":5228},"        print(f\"  [{comm.get('channel', 'N\u002FA')}] {comm.get('body', 'N\u002FA')}\")\n",{"type":42,"tag":179,"props":5230,"children":5232},{"id":5231},"close-a-conversation",[5233],{"type":48,"value":5234},"Close a Conversation",{"type":42,"tag":51,"props":5236,"children":5237},{},[5238],{"type":48,"value":5239},"Closing triggers Memory extraction (if enabled) and CONVERSATION_END Intelligence operators.",{"type":42,"tag":390,"props":5241,"children":5243},{"className":2017,"code":5242,"language":2019,"meta":398,"style":398},"await fetch(\n  `${CONVERSATIONS_V2_BASE}\u002FConversations\u002F${convId}`,\n  {\n    method: 'PATCH',\n    headers: getAuthHeaders(),\n    body: JSON.stringify({ status: 'CLOSED' }),\n  }\n);\n",[5244],{"type":42,"tag":156,"props":5245,"children":5246},{"__ignoreMap":398},[5247,5262,5298,5305,5333,5356,5422,5429],{"type":42,"tag":1149,"props":5248,"children":5249},{"class":1151,"line":1152},[5250,5254,5258],{"type":42,"tag":1149,"props":5251,"children":5252},{"style":2254},[5253],{"type":48,"value":3752},{"type":42,"tag":1149,"props":5255,"children":5256},{"style":2083},[5257],{"type":48,"value":2405},{"type":42,"tag":1149,"props":5259,"children":5260},{"style":2034},[5261],{"type":48,"value":2133},{"type":42,"tag":1149,"props":5263,"children":5264},{"class":1151,"line":1162},[5265,5269,5273,5277,5281,5285,5290,5294],{"type":42,"tag":1149,"props":5266,"children":5267},{"style":1156},[5268],{"type":48,"value":2417},{"type":42,"tag":1149,"props":5270,"children":5271},{"style":2034},[5272],{"type":48,"value":2422},{"type":42,"tag":1149,"props":5274,"children":5275},{"style":1156},[5276],{"type":48,"value":2169},{"type":42,"tag":1149,"props":5278,"children":5279},{"style":2050},[5280],{"type":48,"value":4774},{"type":42,"tag":1149,"props":5282,"children":5283},{"style":1156},[5284],{"type":48,"value":2178},{"type":42,"tag":1149,"props":5286,"children":5287},{"style":2034},[5288],{"type":48,"value":5289},"convId",{"type":42,"tag":1149,"props":5291,"children":5292},{"style":1156},[5293],{"type":48,"value":2306},{"type":42,"tag":1149,"props":5295,"children":5296},{"style":1156},[5297],{"type":48,"value":2311},{"type":42,"tag":1149,"props":5299,"children":5300},{"class":1151,"line":1192},[5301],{"type":42,"tag":1149,"props":5302,"children":5303},{"style":1156},[5304],{"type":48,"value":2448},{"type":42,"tag":1149,"props":5306,"children":5307},{"class":1151,"line":1219},[5308,5312,5316,5320,5325,5329],{"type":42,"tag":1149,"props":5309,"children":5310},{"style":2130},[5311],{"type":48,"value":2456},{"type":42,"tag":1149,"props":5313,"children":5314},{"style":1156},[5315],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5317,"children":5318},{"style":1156},[5319],{"type":48,"value":2047},{"type":42,"tag":1149,"props":5321,"children":5322},{"style":2050},[5323],{"type":48,"value":5324},"PATCH",{"type":42,"tag":1149,"props":5326,"children":5327},{"style":1156},[5328],{"type":48,"value":2058},{"type":42,"tag":1149,"props":5330,"children":5331},{"style":1156},[5332],{"type":48,"value":2311},{"type":42,"tag":1149,"props":5334,"children":5335},{"class":1151,"line":1253},[5336,5340,5344,5348,5352],{"type":42,"tag":1149,"props":5337,"children":5338},{"style":2130},[5339],{"type":48,"value":2485},{"type":42,"tag":1149,"props":5341,"children":5342},{"style":1156},[5343],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5345,"children":5346},{"style":2083},[5347],{"type":48,"value":2086},{"type":42,"tag":1149,"props":5349,"children":5350},{"style":2034},[5351],{"type":48,"value":2091},{"type":42,"tag":1149,"props":5353,"children":5354},{"style":1156},[5355],{"type":48,"value":2311},{"type":42,"tag":1149,"props":5357,"children":5358},{"class":1151,"line":1262},[5359,5363,5367,5371,5375,5379,5383,5388,5393,5397,5401,5406,5410,5414,5418],{"type":42,"tag":1149,"props":5360,"children":5361},{"style":2130},[5362],{"type":48,"value":2509},{"type":42,"tag":1149,"props":5364,"children":5365},{"style":1156},[5366],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5368,"children":5369},{"style":2034},[5370],{"type":48,"value":2518},{"type":42,"tag":1149,"props":5372,"children":5373},{"style":1156},[5374],{"type":48,"value":678},{"type":42,"tag":1149,"props":5376,"children":5377},{"style":2083},[5378],{"type":48,"value":2527},{"type":42,"tag":1149,"props":5380,"children":5381},{"style":2034},[5382],{"type":48,"value":2226},{"type":42,"tag":1149,"props":5384,"children":5385},{"style":1156},[5386],{"type":48,"value":5387},"{",{"type":42,"tag":1149,"props":5389,"children":5390},{"style":2130},[5391],{"type":48,"value":5392}," status",{"type":42,"tag":1149,"props":5394,"children":5395},{"style":1156},[5396],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5398,"children":5399},{"style":1156},[5400],{"type":48,"value":2047},{"type":42,"tag":1149,"props":5402,"children":5403},{"style":2050},[5404],{"type":48,"value":5405},"CLOSED",{"type":42,"tag":1149,"props":5407,"children":5408},{"style":1156},[5409],{"type":48,"value":2058},{"type":42,"tag":1149,"props":5411,"children":5412},{"style":1156},[5413],{"type":48,"value":3713},{"type":42,"tag":1149,"props":5415,"children":5416},{"style":2034},[5417],{"type":48,"value":2244},{"type":42,"tag":1149,"props":5419,"children":5420},{"style":1156},[5421],{"type":48,"value":2311},{"type":42,"tag":1149,"props":5423,"children":5424},{"class":1151,"line":1271},[5425],{"type":42,"tag":1149,"props":5426,"children":5427},{"style":1156},[5428],{"type":48,"value":1277},{"type":42,"tag":1149,"props":5430,"children":5431},{"class":1151,"line":1280},[5432,5436],{"type":42,"tag":1149,"props":5433,"children":5434},{"style":2034},[5435],{"type":48,"value":2244},{"type":42,"tag":1149,"props":5437,"children":5438},{"style":1156},[5439],{"type":48,"value":2063},{"type":42,"tag":390,"props":5441,"children":5443},{"className":3140,"code":5442,"language":3142,"meta":398,"style":398},"requests.patch(\n    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\u002F{conv_id}\",\n    auth=(account_sid, auth_token),\n    json={\"status\": \"CLOSED\"}\n)\n",[5444],{"type":42,"tag":156,"props":5445,"children":5446},{"__ignoreMap":398},[5447,5455,5463,5470,5478],{"type":42,"tag":1149,"props":5448,"children":5449},{"class":1151,"line":1152},[5450],{"type":42,"tag":1149,"props":5451,"children":5452},{},[5453],{"type":48,"value":5454},"requests.patch(\n",{"type":42,"tag":1149,"props":5456,"children":5457},{"class":1151,"line":1162},[5458],{"type":42,"tag":1149,"props":5459,"children":5460},{},[5461],{"type":48,"value":5462},"    f\"https:\u002F\u002Fconversations.twilio.com\u002Fv2\u002FConversations\u002F{conv_id}\",\n",{"type":42,"tag":1149,"props":5464,"children":5465},{"class":1151,"line":1192},[5466],{"type":42,"tag":1149,"props":5467,"children":5468},{},[5469],{"type":48,"value":3216},{"type":42,"tag":1149,"props":5471,"children":5472},{"class":1151,"line":1219},[5473],{"type":42,"tag":1149,"props":5474,"children":5475},{},[5476],{"type":48,"value":5477},"    json={\"status\": \"CLOSED\"}\n",{"type":42,"tag":1149,"props":5479,"children":5480},{"class":1151,"line":1253},[5481],{"type":42,"tag":1149,"props":5482,"children":5483},{},[5484],{"type":48,"value":3988},{"type":42,"tag":179,"props":5486,"children":5488},{"id":5487},"voice-integration-patterns",[5489],{"type":48,"value":5490},"Voice Integration Patterns",{"type":42,"tag":51,"props":5492,"children":5493},{},[5494,5499,5501,5506,5508,5513,5515,5520,5522,5526],{"type":42,"tag":64,"props":5495,"children":5496},{},[5497],{"type":48,"value":5498},"Active TwiML (recommended for AI voice agents):",{"type":48,"value":5500}," Pass ",{"type":42,"tag":156,"props":5502,"children":5504},{"className":5503},[],[5505],{"type":48,"value":500},{"type":48,"value":5507}," on ",{"type":42,"tag":156,"props":5509,"children":5511},{"className":5510},[],[5512],{"type":48,"value":516},{"type":48,"value":5514}," to create a new conversation. Do NOT add passive VOICE ",{"type":42,"tag":156,"props":5516,"children":5518},{"className":5517},[],[5519],{"type":48,"value":161},{"type":48,"value":5521}," — this avoids double STT billing. See the ",{"type":42,"tag":170,"props":5523,"children":5524},{"href":648},[5525],{"type":48,"value":175},{"type":48,"value":652},{"type":42,"tag":390,"props":5528,"children":5532},{"className":5529,"code":5530,"language":5531,"meta":398,"style":398},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CResponse>\n  \u003CConnect>\n    \u003CConversationRelay\n      url=\"wss:\u002F\u002Fyour-relay\u002Fvoice\"\n      conversationConfiguration=\"CONFIG_ID_HERE\"\n      ttsProvider=\"ElevenLabs\"\n      voice=\"your-voice-id\"\n    \u002F>\n  \u003C\u002FConnect>\n\u003C\u002FResponse>\n","xml",[5533],{"type":42,"tag":156,"props":5534,"children":5535},{"__ignoreMap":398},[5536,5544,5552,5560,5568,5576,5584,5592,5600,5608],{"type":42,"tag":1149,"props":5537,"children":5538},{"class":1151,"line":1152},[5539],{"type":42,"tag":1149,"props":5540,"children":5541},{},[5542],{"type":48,"value":5543},"\u003CResponse>\n",{"type":42,"tag":1149,"props":5545,"children":5546},{"class":1151,"line":1162},[5547],{"type":42,"tag":1149,"props":5548,"children":5549},{},[5550],{"type":48,"value":5551},"  \u003CConnect>\n",{"type":42,"tag":1149,"props":5553,"children":5554},{"class":1151,"line":1192},[5555],{"type":42,"tag":1149,"props":5556,"children":5557},{},[5558],{"type":48,"value":5559},"    \u003CConversationRelay\n",{"type":42,"tag":1149,"props":5561,"children":5562},{"class":1151,"line":1219},[5563],{"type":42,"tag":1149,"props":5564,"children":5565},{},[5566],{"type":48,"value":5567},"      url=\"wss:\u002F\u002Fyour-relay\u002Fvoice\"\n",{"type":42,"tag":1149,"props":5569,"children":5570},{"class":1151,"line":1253},[5571],{"type":42,"tag":1149,"props":5572,"children":5573},{},[5574],{"type":48,"value":5575},"      conversationConfiguration=\"CONFIG_ID_HERE\"\n",{"type":42,"tag":1149,"props":5577,"children":5578},{"class":1151,"line":1262},[5579],{"type":42,"tag":1149,"props":5580,"children":5581},{},[5582],{"type":48,"value":5583},"      ttsProvider=\"ElevenLabs\"\n",{"type":42,"tag":1149,"props":5585,"children":5586},{"class":1151,"line":1271},[5587],{"type":42,"tag":1149,"props":5588,"children":5589},{},[5590],{"type":48,"value":5591},"      voice=\"your-voice-id\"\n",{"type":42,"tag":1149,"props":5593,"children":5594},{"class":1151,"line":1280},[5595],{"type":42,"tag":1149,"props":5596,"children":5597},{},[5598],{"type":48,"value":5599},"    \u002F>\n",{"type":42,"tag":1149,"props":5601,"children":5602},{"class":1151,"line":2314},[5603],{"type":42,"tag":1149,"props":5604,"children":5605},{},[5606],{"type":48,"value":5607},"  \u003C\u002FConnect>\n",{"type":42,"tag":1149,"props":5609,"children":5610},{"class":1151,"line":2352},[5611],{"type":42,"tag":1149,"props":5612,"children":5613},{},[5614],{"type":48,"value":5615},"\u003C\u002FResponse>\n",{"type":42,"tag":51,"props":5617,"children":5618},{},[5619,5621,5626,5628,5633],{"type":48,"value":5620},"Still define VOICE in ",{"type":42,"tag":156,"props":5622,"children":5624},{"className":5623},[],[5625],{"type":48,"value":1174},{"type":48,"value":5627}," for lifecycle\u002Ftimeouts — just omit ",{"type":42,"tag":156,"props":5629,"children":5631},{"className":5630},[],[5632],{"type":48,"value":161},{"type":48,"value":1184},{"type":42,"tag":390,"props":5635,"children":5637},{"className":1141,"code":5636,"language":1143,"meta":398,"style":398},"{\n  \"channelSettings\": {\n    \"VOICE\": {\n      \"statusTimeouts\": null\n    }\n  }\n}\n",[5638],{"type":42,"tag":156,"props":5639,"children":5640},{"__ignoreMap":398},[5641,5648,5671,5694,5718,5725,5732],{"type":42,"tag":1149,"props":5642,"children":5643},{"class":1151,"line":1152},[5644],{"type":42,"tag":1149,"props":5645,"children":5646},{"style":1156},[5647],{"type":48,"value":1159},{"type":42,"tag":1149,"props":5649,"children":5650},{"class":1151,"line":1162},[5651,5655,5659,5663,5667],{"type":42,"tag":1149,"props":5652,"children":5653},{"style":1156},[5654],{"type":48,"value":1168},{"type":42,"tag":1149,"props":5656,"children":5657},{"style":1171},[5658],{"type":48,"value":1174},{"type":42,"tag":1149,"props":5660,"children":5661},{"style":1156},[5662],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5664,"children":5665},{"style":1156},[5666],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5668,"children":5669},{"style":1156},[5670],{"type":48,"value":1189},{"type":42,"tag":1149,"props":5672,"children":5673},{"class":1151,"line":1192},[5674,5678,5682,5686,5690],{"type":42,"tag":1149,"props":5675,"children":5676},{"style":1156},[5677],{"type":48,"value":1198},{"type":42,"tag":1149,"props":5679,"children":5680},{"style":1201},[5681],{"type":48,"value":1204},{"type":42,"tag":1149,"props":5683,"children":5684},{"style":1156},[5685],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5687,"children":5688},{"style":1156},[5689],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5691,"children":5692},{"style":1156},[5693],{"type":48,"value":1189},{"type":42,"tag":1149,"props":5695,"children":5696},{"class":1151,"line":1219},[5697,5701,5705,5709,5713],{"type":42,"tag":1149,"props":5698,"children":5699},{"style":1156},[5700],{"type":48,"value":1225},{"type":42,"tag":1149,"props":5702,"children":5703},{"style":1228},[5704],{"type":48,"value":1231},{"type":42,"tag":1149,"props":5706,"children":5707},{"style":1156},[5708],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5710,"children":5711},{"style":1156},[5712],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5714,"children":5715},{"style":1156},[5716],{"type":48,"value":5717}," null\n",{"type":42,"tag":1149,"props":5719,"children":5720},{"class":1151,"line":1253},[5721],{"type":42,"tag":1149,"props":5722,"children":5723},{"style":1156},[5724],{"type":48,"value":1268},{"type":42,"tag":1149,"props":5726,"children":5727},{"class":1151,"line":1262},[5728],{"type":42,"tag":1149,"props":5729,"children":5730},{"style":1156},[5731],{"type":48,"value":1277},{"type":42,"tag":1149,"props":5733,"children":5734},{"class":1151,"line":1271},[5735],{"type":42,"tag":1149,"props":5736,"children":5737},{"style":1156},[5738],{"type":48,"value":1286},{"type":42,"tag":51,"props":5740,"children":5741},{},[5742,5747,5749,5754,5756,5761],{"type":42,"tag":64,"props":5743,"children":5744},{},[5745],{"type":48,"value":5746},"Attach voice to an existing conversation (Real-Time Transcription):",{"type":48,"value":5748}," Use ",{"type":42,"tag":156,"props":5750,"children":5752},{"className":5751},[],[5753],{"type":48,"value":523},{"type":48,"value":5755}," with ",{"type":42,"tag":156,"props":5757,"children":5759},{"className":5758},[],[5760],{"type":48,"value":508},{"type":48,"value":5762}," to add a voice call's transcription to a conversation you created via API:",{"type":42,"tag":390,"props":5764,"children":5766},{"className":5529,"code":5765,"language":5531,"meta":398,"style":398},"\u003CResponse>\n  \u003CStart>\n    \u003CTranscription conversationId=\"CONVERSATION_ID\"\u002F>\n  \u003C\u002FStart>\n  \u003CSay>Welcome to support. How can I help you today?\u003C\u002FSay>\n\u003C\u002FResponse>\n",[5767],{"type":42,"tag":156,"props":5768,"children":5769},{"__ignoreMap":398},[5770,5777,5785,5793,5801,5809],{"type":42,"tag":1149,"props":5771,"children":5772},{"class":1151,"line":1152},[5773],{"type":42,"tag":1149,"props":5774,"children":5775},{},[5776],{"type":48,"value":5543},{"type":42,"tag":1149,"props":5778,"children":5779},{"class":1151,"line":1162},[5780],{"type":42,"tag":1149,"props":5781,"children":5782},{},[5783],{"type":48,"value":5784},"  \u003CStart>\n",{"type":42,"tag":1149,"props":5786,"children":5787},{"class":1151,"line":1192},[5788],{"type":42,"tag":1149,"props":5789,"children":5790},{},[5791],{"type":48,"value":5792},"    \u003CTranscription conversationId=\"CONVERSATION_ID\"\u002F>\n",{"type":42,"tag":1149,"props":5794,"children":5795},{"class":1151,"line":1219},[5796],{"type":42,"tag":1149,"props":5797,"children":5798},{},[5799],{"type":48,"value":5800},"  \u003C\u002FStart>\n",{"type":42,"tag":1149,"props":5802,"children":5803},{"class":1151,"line":1253},[5804],{"type":42,"tag":1149,"props":5805,"children":5806},{},[5807],{"type":48,"value":5808},"  \u003CSay>Welcome to support. How can I help you today?\u003C\u002FSay>\n",{"type":42,"tag":1149,"props":5810,"children":5811},{"class":1151,"line":1262},[5812],{"type":42,"tag":1149,"props":5813,"children":5814},{},[5815],{"type":48,"value":5615},{"type":42,"tag":51,"props":5817,"children":5818},{},[5819,5824,5826,5831],{"type":42,"tag":64,"props":5820,"children":5821},{},[5822],{"type":48,"value":5823},"Passive voice capture (human agent calls):",{"type":48,"value":5825}," Use VOICE ",{"type":42,"tag":156,"props":5827,"children":5829},{"className":5828},[],[5830],{"type":48,"value":161},{"type":48,"value":5832}," to automatically capture calls without TwiML changes. Appropriate for human agent scenarios where ConversationRelay is not used:",{"type":42,"tag":390,"props":5834,"children":5836},{"className":1141,"code":5835,"language":1143,"meta":398,"style":398},"{\n  \"VOICE\": {\n    \"captureRules\": [\n      { \"from\": \"*\", \"to\": \"+15551234567\", \"metadata\": {} }\n    ]\n  }\n}\n",[5837],{"type":42,"tag":156,"props":5838,"children":5839},{"__ignoreMap":398},[5840,5847,5870,5893,5992,6000,6007],{"type":42,"tag":1149,"props":5841,"children":5842},{"class":1151,"line":1152},[5843],{"type":42,"tag":1149,"props":5844,"children":5845},{"style":1156},[5846],{"type":48,"value":1159},{"type":42,"tag":1149,"props":5848,"children":5849},{"class":1151,"line":1162},[5850,5854,5858,5862,5866],{"type":42,"tag":1149,"props":5851,"children":5852},{"style":1156},[5853],{"type":48,"value":1168},{"type":42,"tag":1149,"props":5855,"children":5856},{"style":1171},[5857],{"type":48,"value":1204},{"type":42,"tag":1149,"props":5859,"children":5860},{"style":1156},[5861],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5863,"children":5864},{"style":1156},[5865],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5867,"children":5868},{"style":1156},[5869],{"type":48,"value":1189},{"type":42,"tag":1149,"props":5871,"children":5872},{"class":1151,"line":1192},[5873,5877,5881,5885,5889],{"type":42,"tag":1149,"props":5874,"children":5875},{"style":1156},[5876],{"type":48,"value":1198},{"type":42,"tag":1149,"props":5878,"children":5879},{"style":1201},[5880],{"type":48,"value":161},{"type":42,"tag":1149,"props":5882,"children":5883},{"style":1156},[5884],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5886,"children":5887},{"style":1156},[5888],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5890,"children":5891},{"style":1156},[5892],{"type":48,"value":2730},{"type":42,"tag":1149,"props":5894,"children":5895},{"class":1151,"line":1219},[5896,5901,5906,5910,5914,5918,5922,5926,5930,5934,5938,5943,5947,5951,5955,5959,5963,5967,5971,5976,5980,5984,5988],{"type":42,"tag":1149,"props":5897,"children":5898},{"style":1156},[5899],{"type":48,"value":5900},"      {",{"type":42,"tag":1149,"props":5902,"children":5903},{"style":1156},[5904],{"type":48,"value":5905}," \"",{"type":42,"tag":1149,"props":5907,"children":5908},{"style":1228},[5909],{"type":48,"value":2127},{"type":42,"tag":1149,"props":5911,"children":5912},{"style":1156},[5913],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5915,"children":5916},{"style":1156},[5917],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5919,"children":5920},{"style":1156},[5921],{"type":48,"value":5905},{"type":42,"tag":1149,"props":5923,"children":5924},{"style":2050},[5925],{"type":48,"value":2782},{"type":42,"tag":1149,"props":5927,"children":5928},{"style":1156},[5929],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5931,"children":5932},{"style":1156},[5933],{"type":48,"value":2651},{"type":42,"tag":1149,"props":5935,"children":5936},{"style":1156},[5937],{"type":48,"value":5905},{"type":42,"tag":1149,"props":5939,"children":5940},{"style":1228},[5941],{"type":48,"value":5942},"to",{"type":42,"tag":1149,"props":5944,"children":5945},{"style":1156},[5946],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5948,"children":5949},{"style":1156},[5950],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5952,"children":5953},{"style":1156},[5954],{"type":48,"value":5905},{"type":42,"tag":1149,"props":5956,"children":5957},{"style":2050},[5958],{"type":48,"value":1600},{"type":42,"tag":1149,"props":5960,"children":5961},{"style":1156},[5962],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5964,"children":5965},{"style":1156},[5966],{"type":48,"value":2651},{"type":42,"tag":1149,"props":5968,"children":5969},{"style":1156},[5970],{"type":48,"value":5905},{"type":42,"tag":1149,"props":5972,"children":5973},{"style":1228},[5974],{"type":48,"value":5975},"metadata",{"type":42,"tag":1149,"props":5977,"children":5978},{"style":1156},[5979],{"type":48,"value":1179},{"type":42,"tag":1149,"props":5981,"children":5982},{"style":1156},[5983],{"type":48,"value":1184},{"type":42,"tag":1149,"props":5985,"children":5986},{"style":1156},[5987],{"type":48,"value":2804},{"type":42,"tag":1149,"props":5989,"children":5990},{"style":1156},[5991],{"type":48,"value":3718},{"type":42,"tag":1149,"props":5993,"children":5994},{"class":1151,"line":1253},[5995],{"type":42,"tag":1149,"props":5996,"children":5997},{"style":1156},[5998],{"type":48,"value":5999},"    ]\n",{"type":42,"tag":1149,"props":6001,"children":6002},{"class":1151,"line":1262},[6003],{"type":42,"tag":1149,"props":6004,"children":6005},{"style":1156},[6006],{"type":48,"value":1277},{"type":42,"tag":1149,"props":6008,"children":6009},{"class":1151,"line":1271},[6010],{"type":42,"tag":1149,"props":6011,"children":6012},{"style":1156},[6013],{"type":48,"value":1286},{"type":42,"tag":57,"props":6015,"children":6016},{},[6017],{"type":42,"tag":51,"props":6018,"children":6019},{},[6020,6025,6027,6031],{"type":42,"tag":64,"props":6021,"children":6022},{},[6023],{"type":48,"value":6024},"Warning:",{"type":48,"value":6026}," Do NOT combine passive VOICE capture rules with active TwiML voice. See the ",{"type":42,"tag":170,"props":6028,"children":6029},{"href":648},[6030],{"type":48,"value":175},{"type":48,"value":652},{"type":42,"tag":72,"props":6033,"children":6035},{"id":6034},"gotchas",[6036],{"type":48,"value":6037},"Gotchas",{"type":42,"tag":179,"props":6039,"children":6041},{"id":6040},"setup",[6042],{"type":48,"value":6043},"Setup",{"type":42,"tag":6045,"props":6046,"children":6047},"ol",{},[6048,6071,6088],{"type":42,"tag":95,"props":6049,"children":6050},{},[6051,6056,6058,6063,6065,6070],{"type":42,"tag":64,"props":6052,"children":6053},{},[6054],{"type":48,"value":6055},"Memory Store is required.",{"type":48,"value":6057}," You cannot create a Configuration without a ",{"type":42,"tag":156,"props":6059,"children":6061},{"className":6060},[],[6062],{"type":48,"value":668},{"type":48,"value":6064},". Create the Memory Store first via ",{"type":42,"tag":156,"props":6066,"children":6068},{"className":6067},[],[6069],{"type":48,"value":704},{"type":48,"value":678},{"type":42,"tag":95,"props":6072,"children":6073},{},[6074,6079,6081,6086],{"type":42,"tag":64,"props":6075,"children":6076},{},[6077],{"type":48,"value":6078},"JSON-only API.",{"type":48,"value":6080}," All Conversation Orchestrator endpoints require ",{"type":42,"tag":156,"props":6082,"children":6084},{"className":6083},[],[6085],{"type":48,"value":782},{"type":48,"value":6087},". Form-encoded bodies are rejected. This matches Intelligence v3 but differs from most Twilio APIs.",{"type":42,"tag":95,"props":6089,"children":6090},{},[6091,6096,6098,6103,6105,6110,6111,6116,6117,6122],{"type":42,"tag":64,"props":6092,"children":6093},{},[6094],{"type":48,"value":6095},"Async creation.",{"type":48,"value":6097}," POST to ",{"type":42,"tag":156,"props":6099,"children":6101},{"className":6100},[],[6102],{"type":48,"value":2431},{"type":48,"value":6104}," returns 202 with an operation. Poll the operation's ",{"type":42,"tag":156,"props":6106,"children":6108},{"className":6107},[],[6109],{"type":48,"value":731},{"type":48,"value":733},{"type":42,"tag":156,"props":6112,"children":6114},{"className":6113},[],[6115],{"type":48,"value":739},{"type":48,"value":741},{"type":42,"tag":156,"props":6118,"children":6120},{"className":6119},[],[6121],{"type":48,"value":747},{"type":48,"value":749},{"type":42,"tag":179,"props":6124,"children":6126},{"id":6125},"configuration",[6127],{"type":48,"value":6128},"Configuration",{"type":42,"tag":6045,"props":6130,"children":6131},{"start":1219},[6132,6155,6172,6182,6208],{"type":42,"tag":95,"props":6133,"children":6134},{},[6135,6140,6142,6147,6148,6153],{"type":42,"tag":64,"props":6136,"children":6137},{},[6138],{"type":48,"value":6139},"PUT replaces everything.",{"type":48,"value":6141}," The most common bug: fetching a config, modifying one field, PUTting back — but forgetting to include ",{"type":42,"tag":156,"props":6143,"children":6145},{"className":6144},[],[6146],{"type":48,"value":1174},{"type":48,"value":502},{"type":42,"tag":156,"props":6149,"children":6151},{"className":6150},[],[6152],{"type":48,"value":668},{"type":48,"value":6154},". The API accepts the PUT and silently removes the omitted fields. Always re-fetch, modify, PUT.",{"type":42,"tag":95,"props":6156,"children":6157},{},[6158,6163,6165,6170],{"type":42,"tag":64,"props":6159,"children":6160},{},[6161],{"type":48,"value":6162},"Grouping type is immutable.",{"type":48,"value":6164}," ",{"type":42,"tag":156,"props":6166,"children":6168},{"className":6167},[],[6169],{"type":48,"value":590},{"type":48,"value":6171}," cannot be changed after creation. To switch grouping, create a new Configuration and close conversations on the old one.",{"type":42,"tag":95,"props":6173,"children":6174},{},[6175,6180],{"type":42,"tag":64,"props":6176,"children":6177},{},[6178],{"type":48,"value":6179},"10 Configuration limit per account.",{"type":48,"value":6181}," Hard limit at GA (up to 100 capture rules per channel per config). Delete unused Configurations to make room. For customers with large phone number portfolios, partition numbers across multiple Configurations.",{"type":42,"tag":95,"props":6183,"children":6184},{},[6185,6190,6192,6198,6200,6206],{"type":42,"tag":64,"props":6186,"children":6187},{},[6188],{"type":48,"value":6189},"CLIENT voice capture is opt-in.",{"type":48,"value":6191}," Browser-originated calls via the Twilio Client SDK are not captured by default VOICE rules. You need a separate capture rule with ",{"type":42,"tag":156,"props":6193,"children":6195},{"className":6194},[],[6196],{"type":48,"value":6197},"\"metadata\": {\"callType\": \"CLIENT\"}",{"type":48,"value":6199},". SIP calls similarly need ",{"type":42,"tag":156,"props":6201,"children":6203},{"className":6202},[],[6204],{"type":48,"value":6205},"{\"callType\": \"PUBLIC_SIP\"}",{"type":48,"value":6207},". PSTN is the only type captured by default.",{"type":42,"tag":95,"props":6209,"children":6210},{},[6211,6221,6223,6228,6230,6235,6236,6241,6243,6249],{"type":42,"tag":64,"props":6212,"children":6213},{},[6214,6219],{"type":42,"tag":156,"props":6215,"children":6217},{"className":6216},[],[6218],{"type":48,"value":500},{"type":48,"value":6220}," (no \"Id\" suffix) is the correct TwiML attribute name.",{"type":48,"value":6222}," The attribute on ",{"type":42,"tag":156,"props":6224,"children":6226},{"className":6225},[],[6227],{"type":48,"value":516},{"type":48,"value":6229}," and ",{"type":42,"tag":156,"props":6231,"children":6233},{"className":6232},[],[6234],{"type":48,"value":523},{"type":48,"value":741},{"type":42,"tag":156,"props":6237,"children":6239},{"className":6238},[],[6240],{"type":48,"value":500},{"type":48,"value":6242},", NOT ",{"type":42,"tag":156,"props":6244,"children":6246},{"className":6245},[],[6247],{"type":48,"value":6248},"conversationConfigurationId",{"type":48,"value":6250},". The incorrect name is silently ignored (unrecognized TwiML attributes produce no error), resulting in no conversation being created.",{"type":42,"tag":179,"props":6252,"children":6254},{"id":6253},"runtime",[6255],{"type":48,"value":6256},"Runtime",{"type":42,"tag":6045,"props":6258,"children":6259},{"start":2314},[6260,6277,6287,6297,6328],{"type":42,"tag":95,"props":6261,"children":6262},{},[6263,6268,6270,6275],{"type":42,"tag":64,"props":6264,"children":6265},{},[6266],{"type":48,"value":6267},"Timeout precedence across channels.",{"type":48,"value":6269}," If a customer is on a voice call and sends an SMS, both channels are active in the same Conversation (with ",{"type":42,"tag":156,"props":6271,"children":6273},{"className":6272},[],[6274],{"type":48,"value":215},{"type":48,"value":6276},"). When the voice call ends, the SMS channel's timeout still governs — the Conversation won't close until the SMS timeout expires. Channel close events are proposals, not commands.",{"type":42,"tag":95,"props":6278,"children":6279},{},[6280,6285],{"type":42,"tag":64,"props":6281,"children":6282},{},[6283],{"type":48,"value":6284},"Config versioning pins at creation.",{"type":48,"value":6286}," Intelligence rules and capture rules are pinned to the Configuration version at conversation creation time. Upgrading Intelligence (adding operators, changing rules) doesn't affect existing conversations. Close active conversations to pick up the new version.",{"type":42,"tag":95,"props":6288,"children":6289},{},[6290,6295],{"type":42,"tag":64,"props":6291,"children":6292},{},[6293],{"type":48,"value":6294},"ConversationRelay TTS fragmentation.",{"type":48,"value":6296}," ConversationRelay writes one Communication per TTS fragment, not per complete utterance. A single agent response may produce 3-5 Communications. Intelligence operators fire per Communication, so operator cost scales with fragment count.",{"type":42,"tag":95,"props":6298,"children":6299},{},[6300,6305,6307,6313,6315,6320,6321,6326],{"type":42,"tag":64,"props":6301,"children":6302},{},[6303],{"type":48,"value":6304},"Overly broad wildcard VOICE rules match multiple call types.",{"type":48,"value":6306}," A rule ",{"type":42,"tag":156,"props":6308,"children":6310},{"className":6309},[],[6311],{"type":48,"value":6312},"{\"from\": \"*\", \"to\": \"*\", \"metadata\": {\"callType\": \"PSTN\"}}",{"type":48,"value":6314}," will match all PSTN calls in your account, not just those to\u002Ffrom specific numbers. If you also have CLIENT capture rules, each call could match multiple rules, leading to unexpected conversation grouping. Always use specific ",{"type":42,"tag":156,"props":6316,"children":6318},{"className":6317},[],[6319],{"type":48,"value":2127},{"type":48,"value":502},{"type":42,"tag":156,"props":6322,"children":6324},{"className":6323},[],[6325],{"type":48,"value":5942},{"type":48,"value":6327}," addresses to limit rule scope.",{"type":42,"tag":95,"props":6329,"children":6330},{},[6331,6336,6338,6342,6344,6349],{"type":42,"tag":64,"props":6332,"children":6333},{},[6334],{"type":48,"value":6335},"Active TwiML voice and passive capture rules cause double STT billing.",{"type":48,"value":6337}," See the ",{"type":42,"tag":170,"props":6339,"children":6340},{"href":648},[6341],{"type":48,"value":175},{"type":48,"value":6343}," section for full details. Do not use passive VOICE ",{"type":42,"tag":156,"props":6345,"children":6347},{"className":6346},[],[6348],{"type":48,"value":161},{"type":48,"value":6350}," when passing conversation parameters in TwiML.",{"type":42,"tag":179,"props":6352,"children":6354},{"id":6353},"observability",[6355],{"type":48,"value":6356},"Observability",{"type":42,"tag":6045,"props":6358,"children":6359},{"start":2715},[6360,6383,6393,6409],{"type":42,"tag":95,"props":6361,"children":6362},{},[6363,6368,6370,6375,6377,6382],{"type":42,"tag":64,"props":6364,"children":6365},{},[6366],{"type":48,"value":6367},"Silent Memory linkage failure.",{"type":48,"value":6369}," If ",{"type":42,"tag":156,"props":6371,"children":6373},{"className":6372},[],[6374],{"type":48,"value":668},{"type":48,"value":6376}," points to a deleted or invalid store, capture still works but identity resolution and extraction silently fail. No error is returned. See ",{"type":42,"tag":156,"props":6378,"children":6380},{"className":6379},[],[6381],{"type":48,"value":676},{"type":48,"value":678},{"type":42,"tag":95,"props":6384,"children":6385},{},[6386,6391],{"type":42,"tag":64,"props":6387,"children":6388},{},[6389],{"type":48,"value":6390},"No participant type filtering for Intelligence.",{"type":48,"value":6392}," Operators fire on ALL Communications — customer messages AND agent responses. There is no config-level filter. Use the operator prompt to specify which participant to analyze.",{"type":42,"tag":95,"props":6394,"children":6395},{},[6396,6401,6403,6408],{"type":42,"tag":64,"props":6397,"children":6398},{},[6399],{"type":48,"value":6400},"Memory extraction is opt-in and fires on INACTIVE and\u002For CLOSED.",{"type":48,"value":6402}," Extraction does not run automatically — it must be enabled. It can be configured to fire on the INACTIVE transition, the CLOSED transition, or both. It does NOT fire while a conversation is ACTIVE. For mid-conversation Memory writes, post directly to the Observations endpoint via ",{"type":42,"tag":156,"props":6404,"children":6406},{"className":6405},[],[6407],{"type":48,"value":704},{"type":48,"value":678},{"type":42,"tag":95,"props":6410,"children":6411},{},[6412,6417,6419,6425,6426,6432,6434,6440,6442,6448,6450,6456,6458,6464,6466,6472,6474,6480,6481,6487],{"type":42,"tag":64,"props":6413,"children":6414},{},[6415],{"type":48,"value":6416},"List endpoints return partial data.",{"type":48,"value":6418}," When listing Conversations or Communications via GET ",{"type":42,"tag":156,"props":6420,"children":6422},{"className":6421},[],[6423],{"type":48,"value":6424},"\u002FConversations",{"type":48,"value":502},{"type":42,"tag":156,"props":6427,"children":6429},{"className":6428},[],[6430],{"type":48,"value":6431},"\u002FConversations\u002F{id}\u002FCommunications",{"type":48,"value":6433},", response objects are missing fields that are present when fetching individual resources. Missing fields include ",{"type":42,"tag":156,"props":6435,"children":6437},{"className":6436},[],[6438],{"type":48,"value":6439},"dateCreated",{"type":48,"value":6441}," (list) vs ",{"type":42,"tag":156,"props":6443,"children":6445},{"className":6444},[],[6446],{"type":48,"value":6447},"createdAt",{"type":48,"value":6449}," (single GET), ",{"type":42,"tag":156,"props":6451,"children":6453},{"className":6452},[],[6454],{"type":48,"value":6455},"channels",{"type":48,"value":6457},", ",{"type":42,"tag":156,"props":6459,"children":6461},{"className":6460},[],[6462],{"type":48,"value":6463},"body",{"type":48,"value":6465},", and ",{"type":42,"tag":156,"props":6467,"children":6469},{"className":6468},[],[6470],{"type":48,"value":6471},"channel",{"type":48,"value":6473},". Always use defensive field access (",{"type":42,"tag":156,"props":6475,"children":6477},{"className":6476},[],[6478],{"type":48,"value":6479},"conv?.createdAt",{"type":48,"value":502},{"type":42,"tag":156,"props":6482,"children":6484},{"className":6483},[],[6485],{"type":48,"value":6486},"conv.get('createdAt')",{"type":48,"value":6488},") and fetch individual resources if you need complete data. Example:",{"type":42,"tag":390,"props":6490,"children":6492},{"className":2017,"code":6491,"language":2019,"meta":398,"style":398},"\u002F\u002F List returns partial data\nconst list = await fetch(`${BASE}\u002FConversations?PageSize=10`);\nfor (const conv of list.conversations) {\n  console.log(conv.dateCreated); \u002F\u002F undefined\n  console.log(conv.createdAt);   \u002F\u002F also undefined in list view\n  \n  \u002F\u002F Fetch full details if needed\n  const full = await fetch(`${BASE}\u002FConversations\u002F${conv.id}`);\n  console.log(full.createdAt);   \u002F\u002F ✅ present (note: 'createdAt' not 'dateCreated')\n}\n",[6493],{"type":42,"tag":156,"props":6494,"children":6495},{"__ignoreMap":398},[6496,6504,6563,6604,6649,6693,6700,6708,6780,6825],{"type":42,"tag":1149,"props":6497,"children":6498},{"class":1151,"line":1152},[6499],{"type":42,"tag":1149,"props":6500,"children":6501},{"style":1247},[6502],{"type":48,"value":6503},"\u002F\u002F List returns partial data\n",{"type":42,"tag":1149,"props":6505,"children":6506},{"class":1151,"line":1162},[6507,6511,6516,6520,6524,6528,6532,6537,6542,6546,6551,6555,6559],{"type":42,"tag":1149,"props":6508,"children":6509},{"style":1171},[6510],{"type":48,"value":2031},{"type":42,"tag":1149,"props":6512,"children":6513},{"style":2034},[6514],{"type":48,"value":6515}," list ",{"type":42,"tag":1149,"props":6517,"children":6518},{"style":1156},[6519],{"type":48,"value":2042},{"type":42,"tag":1149,"props":6521,"children":6522},{"style":2254},[6523],{"type":48,"value":2400},{"type":42,"tag":1149,"props":6525,"children":6526},{"style":2083},[6527],{"type":48,"value":2405},{"type":42,"tag":1149,"props":6529,"children":6530},{"style":2034},[6531],{"type":48,"value":2226},{"type":42,"tag":1149,"props":6533,"children":6534},{"style":1156},[6535],{"type":48,"value":6536},"`${",{"type":42,"tag":1149,"props":6538,"children":6539},{"style":2034},[6540],{"type":48,"value":6541},"BASE",{"type":42,"tag":1149,"props":6543,"children":6544},{"style":1156},[6545],{"type":48,"value":2169},{"type":42,"tag":1149,"props":6547,"children":6548},{"style":2050},[6549],{"type":48,"value":6550},"\u002FConversations?PageSize=10",{"type":42,"tag":1149,"props":6552,"children":6553},{"style":1156},[6554],{"type":48,"value":2436},{"type":42,"tag":1149,"props":6556,"children":6557},{"style":2034},[6558],{"type":48,"value":2244},{"type":42,"tag":1149,"props":6560,"children":6561},{"style":1156},[6562],{"type":48,"value":2063},{"type":42,"tag":1149,"props":6564,"children":6565},{"class":1151,"line":1192},[6566,6570,6574,6578,6582,6586,6591,6595,6600],{"type":42,"tag":1149,"props":6567,"children":6568},{"style":2254},[6569],{"type":48,"value":4554},{"type":42,"tag":1149,"props":6571,"children":6572},{"style":2034},[6573],{"type":48,"value":4559},{"type":42,"tag":1149,"props":6575,"children":6576},{"style":1171},[6577],{"type":48,"value":2031},{"type":42,"tag":1149,"props":6579,"children":6580},{"style":2034},[6581],{"type":48,"value":4568},{"type":42,"tag":1149,"props":6583,"children":6584},{"style":1156},[6585],{"type":48,"value":4573},{"type":42,"tag":1149,"props":6587,"children":6588},{"style":2034},[6589],{"type":48,"value":6590}," list",{"type":42,"tag":1149,"props":6592,"children":6593},{"style":1156},[6594],{"type":48,"value":678},{"type":42,"tag":1149,"props":6596,"children":6597},{"style":2034},[6598],{"type":48,"value":6599},"conversations) ",{"type":42,"tag":1149,"props":6601,"children":6602},{"style":1156},[6603],{"type":48,"value":1159},{"type":42,"tag":1149,"props":6605,"children":6606},{"class":1151,"line":1219},[6607,6611,6615,6619,6623,6627,6631,6635,6639,6644],{"type":42,"tag":1149,"props":6608,"children":6609},{"style":2034},[6610],{"type":48,"value":4617},{"type":42,"tag":1149,"props":6612,"children":6613},{"style":1156},[6614],{"type":48,"value":678},{"type":42,"tag":1149,"props":6616,"children":6617},{"style":2083},[6618],{"type":48,"value":4626},{"type":42,"tag":1149,"props":6620,"children":6621},{"style":2130},[6622],{"type":48,"value":2226},{"type":42,"tag":1149,"props":6624,"children":6625},{"style":2034},[6626],{"type":48,"value":4648},{"type":42,"tag":1149,"props":6628,"children":6629},{"style":1156},[6630],{"type":48,"value":678},{"type":42,"tag":1149,"props":6632,"children":6633},{"style":2034},[6634],{"type":48,"value":6439},{"type":42,"tag":1149,"props":6636,"children":6637},{"style":2130},[6638],{"type":48,"value":2244},{"type":42,"tag":1149,"props":6640,"children":6641},{"style":1156},[6642],{"type":48,"value":6643},";",{"type":42,"tag":1149,"props":6645,"children":6646},{"style":1247},[6647],{"type":48,"value":6648}," \u002F\u002F undefined\n",{"type":42,"tag":1149,"props":6650,"children":6651},{"class":1151,"line":1253},[6652,6656,6660,6664,6668,6672,6676,6680,6684,6688],{"type":42,"tag":1149,"props":6653,"children":6654},{"style":2034},[6655],{"type":48,"value":4617},{"type":42,"tag":1149,"props":6657,"children":6658},{"style":1156},[6659],{"type":48,"value":678},{"type":42,"tag":1149,"props":6661,"children":6662},{"style":2083},[6663],{"type":48,"value":4626},{"type":42,"tag":1149,"props":6665,"children":6666},{"style":2130},[6667],{"type":48,"value":2226},{"type":42,"tag":1149,"props":6669,"children":6670},{"style":2034},[6671],{"type":48,"value":4648},{"type":42,"tag":1149,"props":6673,"children":6674},{"style":1156},[6675],{"type":48,"value":678},{"type":42,"tag":1149,"props":6677,"children":6678},{"style":2034},[6679],{"type":48,"value":6447},{"type":42,"tag":1149,"props":6681,"children":6682},{"style":2130},[6683],{"type":48,"value":2244},{"type":42,"tag":1149,"props":6685,"children":6686},{"style":1156},[6687],{"type":48,"value":6643},{"type":42,"tag":1149,"props":6689,"children":6690},{"style":1247},[6691],{"type":48,"value":6692},"   \u002F\u002F also undefined in list view\n",{"type":42,"tag":1149,"props":6694,"children":6695},{"class":1151,"line":1262},[6696],{"type":42,"tag":1149,"props":6697,"children":6698},{"style":2130},[6699],{"type":48,"value":4718},{"type":42,"tag":1149,"props":6701,"children":6702},{"class":1151,"line":1271},[6703],{"type":42,"tag":1149,"props":6704,"children":6705},{"style":1247},[6706],{"type":48,"value":6707},"  \u002F\u002F Fetch full details if needed\n",{"type":42,"tag":1149,"props":6709,"children":6710},{"class":1151,"line":1280},[6711,6715,6720,6724,6728,6732,6736,6740,6744,6748,6752,6756,6760,6764,6768,6772,6776],{"type":42,"tag":1149,"props":6712,"children":6713},{"style":1171},[6714],{"type":48,"value":2103},{"type":42,"tag":1149,"props":6716,"children":6717},{"style":2034},[6718],{"type":48,"value":6719}," full",{"type":42,"tag":1149,"props":6721,"children":6722},{"style":1156},[6723],{"type":48,"value":2113},{"type":42,"tag":1149,"props":6725,"children":6726},{"style":2254},[6727],{"type":48,"value":2400},{"type":42,"tag":1149,"props":6729,"children":6730},{"style":2083},[6731],{"type":48,"value":2405},{"type":42,"tag":1149,"props":6733,"children":6734},{"style":2130},[6735],{"type":48,"value":2226},{"type":42,"tag":1149,"props":6737,"children":6738},{"style":1156},[6739],{"type":48,"value":6536},{"type":42,"tag":1149,"props":6741,"children":6742},{"style":2034},[6743],{"type":48,"value":6541},{"type":42,"tag":1149,"props":6745,"children":6746},{"style":1156},[6747],{"type":48,"value":2169},{"type":42,"tag":1149,"props":6749,"children":6750},{"style":2050},[6751],{"type":48,"value":4774},{"type":42,"tag":1149,"props":6753,"children":6754},{"style":1156},[6755],{"type":48,"value":2178},{"type":42,"tag":1149,"props":6757,"children":6758},{"style":2034},[6759],{"type":48,"value":4648},{"type":42,"tag":1149,"props":6761,"children":6762},{"style":1156},[6763],{"type":48,"value":678},{"type":42,"tag":1149,"props":6765,"children":6766},{"style":2034},[6767],{"type":48,"value":4657},{"type":42,"tag":1149,"props":6769,"children":6770},{"style":1156},[6771],{"type":48,"value":2306},{"type":42,"tag":1149,"props":6773,"children":6774},{"style":2130},[6775],{"type":48,"value":2244},{"type":42,"tag":1149,"props":6777,"children":6778},{"style":1156},[6779],{"type":48,"value":2063},{"type":42,"tag":1149,"props":6781,"children":6782},{"class":1151,"line":2314},[6783,6787,6791,6795,6799,6804,6808,6812,6816,6820],{"type":42,"tag":1149,"props":6784,"children":6785},{"style":2034},[6786],{"type":48,"value":4617},{"type":42,"tag":1149,"props":6788,"children":6789},{"style":1156},[6790],{"type":48,"value":678},{"type":42,"tag":1149,"props":6792,"children":6793},{"style":2083},[6794],{"type":48,"value":4626},{"type":42,"tag":1149,"props":6796,"children":6797},{"style":2130},[6798],{"type":48,"value":2226},{"type":42,"tag":1149,"props":6800,"children":6801},{"style":2034},[6802],{"type":48,"value":6803},"full",{"type":42,"tag":1149,"props":6805,"children":6806},{"style":1156},[6807],{"type":48,"value":678},{"type":42,"tag":1149,"props":6809,"children":6810},{"style":2034},[6811],{"type":48,"value":6447},{"type":42,"tag":1149,"props":6813,"children":6814},{"style":2130},[6815],{"type":48,"value":2244},{"type":42,"tag":1149,"props":6817,"children":6818},{"style":1156},[6819],{"type":48,"value":6643},{"type":42,"tag":1149,"props":6821,"children":6822},{"style":1247},[6823],{"type":48,"value":6824},"   \u002F\u002F ✅ present (note: 'createdAt' not 'dateCreated')\n",{"type":42,"tag":1149,"props":6826,"children":6827},{"class":1151,"line":2352},[6828],{"type":42,"tag":1149,"props":6829,"children":6830},{"style":1156},[6831],{"type":48,"value":1286},{"type":42,"tag":72,"props":6833,"children":6835},{"id":6834},"related-resources",[6836],{"type":48,"value":6837},"Related Resources",{"type":42,"tag":91,"props":6839,"children":6840},{},[6841,6852,6863,6874,6885],{"type":42,"tag":95,"props":6842,"children":6843},{},[6844,6850],{"type":42,"tag":170,"props":6845,"children":6847},{"href":6846},"..\u002Ftwilio-conversation-intelligence\u002FSKILL.md",[6848],{"type":48,"value":6849},"Conversation Intelligence Skill",{"type":48,"value":6851}," — Intelligence Configuration, Language Operators, real-time and post-conversation analysis",{"type":42,"tag":95,"props":6853,"children":6854},{},[6855,6861],{"type":42,"tag":170,"props":6856,"children":6858},{"href":6857},"..\u002Ftwilio-customer-memory\u002FSKILL.md",[6859],{"type":48,"value":6860},"Customer Memory Skill",{"type":48,"value":6862}," — Memory Store, profiles, traits, observations, Recall",{"type":42,"tag":95,"props":6864,"children":6865},{},[6866,6872],{"type":42,"tag":170,"props":6867,"children":6869},{"href":6868},"..\u002Ftwilio-voice-conversation-relay\u002FSKILL.md",[6870],{"type":48,"value":6871},"ConversationRelay Skill",{"type":48,"value":6873}," — Voice AI agent setup with WebSocket streaming",{"type":42,"tag":95,"props":6875,"children":6876},{},[6877,6883],{"type":42,"tag":170,"props":6878,"children":6880},{"href":6879},"..\u002Ftwilio-agent-connect\u002FSKILL.md",[6881],{"type":48,"value":6882},"Agent Connect Skill",{"type":48,"value":6884}," — AI-to-human escalation via TAC SDK",{"type":42,"tag":95,"props":6886,"children":6887},{},[6888,6894],{"type":42,"tag":170,"props":6889,"children":6891},{"href":6890},"..\u002Ftwilio-debugging-observability\u002FSKILL.md",[6892],{"type":48,"value":6893},"Debugging Skill",{"type":48,"value":6895}," — Error triage, Event Streams, linkage chain verification",{"type":42,"tag":6897,"props":6898,"children":6899},"style",{},[6900],{"type":48,"value":6901},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6903,"total":7108},[6904,6925,6948,6965,6981,7000,7019,7035,7051,7065,7077,7092],{"slug":6905,"name":6905,"fn":6906,"description":6907,"org":6908,"tags":6909,"stars":6922,"repoUrl":6923,"updatedAt":6924},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6910,6913,6916,6919],{"name":6911,"slug":6912,"type":15},"Documents","documents",{"name":6914,"slug":6915,"type":15},"Healthcare","healthcare",{"name":6917,"slug":6918,"type":15},"Insurance","insurance",{"name":6920,"slug":6921,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":6926,"name":6926,"fn":6927,"description":6928,"org":6929,"tags":6930,"stars":6945,"repoUrl":6946,"updatedAt":6947},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6931,6934,6936,6939,6942],{"name":6932,"slug":6933,"type":15},".NET","dotnet",{"name":6935,"slug":6926,"type":15},"ASP.NET Core",{"name":6937,"slug":6938,"type":15},"Blazor","blazor",{"name":6940,"slug":6941,"type":15},"C#","csharp",{"name":6943,"slug":6944,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":6949,"name":6949,"fn":6950,"description":6951,"org":6952,"tags":6953,"stars":6945,"repoUrl":6946,"updatedAt":6964},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6954,6957,6960,6963],{"name":6955,"slug":6956,"type":15},"Apps SDK","apps-sdk",{"name":6958,"slug":6959,"type":15},"ChatGPT","chatgpt",{"name":6961,"slug":6962,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":6966,"name":6966,"fn":6967,"description":6968,"org":6969,"tags":6970,"stars":6945,"repoUrl":6946,"updatedAt":6980},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6971,6974,6977],{"name":6972,"slug":6973,"type":15},"API Development","api-development",{"name":6975,"slug":6976,"type":15},"CLI","cli",{"name":6978,"slug":6979,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":6982,"name":6982,"fn":6983,"description":6984,"org":6985,"tags":6986,"stars":6945,"repoUrl":6946,"updatedAt":6999},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6987,6990,6993,6996],{"name":6988,"slug":6989,"type":15},"Cloudflare","cloudflare",{"name":6991,"slug":6992,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":6994,"slug":6995,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":6997,"slug":6998,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":7001,"name":7001,"fn":7002,"description":7003,"org":7004,"tags":7005,"stars":6945,"repoUrl":6946,"updatedAt":7018},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7006,7009,7012,7015],{"name":7007,"slug":7008,"type":15},"Productivity","productivity",{"name":7010,"slug":7011,"type":15},"Project Management","project-management",{"name":7013,"slug":7014,"type":15},"Strategy","strategy",{"name":7016,"slug":7017,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":7020,"name":7020,"fn":7021,"description":7022,"org":7023,"tags":7024,"stars":6945,"repoUrl":6946,"updatedAt":7034},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7025,7028,7030,7033],{"name":7026,"slug":7027,"type":15},"Design","design",{"name":7029,"slug":7020,"type":15},"Figma",{"name":7031,"slug":7032,"type":15},"Frontend","frontend",{"name":6961,"slug":6962,"type":15},"2026-04-12T05:06:47.939943",{"slug":7036,"name":7036,"fn":7037,"description":7038,"org":7039,"tags":7040,"stars":6945,"repoUrl":6946,"updatedAt":7050},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7041,7042,7045,7046,7047],{"name":7026,"slug":7027,"type":15},{"name":7043,"slug":7044,"type":15},"Design System","design-system",{"name":7029,"slug":7020,"type":15},{"name":7031,"slug":7032,"type":15},{"name":7048,"slug":7049,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":7052,"name":7052,"fn":7053,"description":7054,"org":7055,"tags":7056,"stars":6945,"repoUrl":6946,"updatedAt":7064},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7057,7058,7059,7062,7063],{"name":7026,"slug":7027,"type":15},{"name":7043,"slug":7044,"type":15},{"name":7060,"slug":7061,"type":15},"Documentation","documentation",{"name":7029,"slug":7020,"type":15},{"name":7031,"slug":7032,"type":15},"2026-05-16T06:07:47.821474",{"slug":7066,"name":7066,"fn":7067,"description":7068,"org":7069,"tags":7070,"stars":6945,"repoUrl":6946,"updatedAt":7076},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7071,7072,7073,7074,7075],{"name":7026,"slug":7027,"type":15},{"name":7029,"slug":7020,"type":15},{"name":7031,"slug":7032,"type":15},{"name":7048,"slug":7049,"type":15},{"name":6943,"slug":6944,"type":15},"2026-05-16T06:07:40.583615",{"slug":7078,"name":7078,"fn":7079,"description":7080,"org":7081,"tags":7082,"stars":6945,"repoUrl":6946,"updatedAt":7091},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7083,7086,7087,7090],{"name":7084,"slug":7085,"type":15},"Animation","animation",{"name":6978,"slug":6979,"type":15},{"name":7088,"slug":7089,"type":15},"Creative","creative",{"name":7026,"slug":7027,"type":15},"2026-05-02T05:31:48.48485",{"slug":7093,"name":7093,"fn":7094,"description":7095,"org":7096,"tags":7097,"stars":6945,"repoUrl":6946,"updatedAt":7107},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7098,7099,7100,7103,7106],{"name":7088,"slug":7089,"type":15},{"name":7026,"slug":7027,"type":15},{"name":7101,"slug":7102,"type":15},"Image Generation","image-generation",{"name":7104,"slug":7105,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675,{"items":7110,"total":7223},[7111,7127,7143,7155,7173,7191,7211],{"slug":7112,"name":7112,"fn":7113,"description":7114,"org":7115,"tags":7116,"stars":25,"repoUrl":26,"updatedAt":27},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7117,7120,7123,7126],{"name":7118,"slug":7119,"type":15},"Accessibility","accessibility",{"name":7121,"slug":7122,"type":15},"Charts","charts",{"name":7124,"slug":7125,"type":15},"Data Visualization","data-visualization",{"name":7026,"slug":7027,"type":15},{"slug":7128,"name":7128,"fn":7129,"description":7130,"org":7131,"tags":7132,"stars":25,"repoUrl":26,"updatedAt":7142},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7133,7136,7139],{"name":7134,"slug":7135,"type":15},"Agents","agents",{"name":7137,"slug":7138,"type":15},"Browser Automation","browser-automation",{"name":7140,"slug":7141,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":7144,"name":7144,"fn":7145,"description":7146,"org":7147,"tags":7148,"stars":25,"repoUrl":26,"updatedAt":7154},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7149,7150,7153],{"name":7137,"slug":7138,"type":15},{"name":7151,"slug":7152,"type":15},"Local Development","local-development",{"name":7140,"slug":7141,"type":15},"2026-04-06T18:41:17.526867",{"slug":7156,"name":7156,"fn":7157,"description":7158,"org":7159,"tags":7160,"stars":25,"repoUrl":26,"updatedAt":7172},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7161,7162,7163,7166,7169],{"name":7134,"slug":7135,"type":15},{"name":6994,"slug":6995,"type":15},{"name":7164,"slug":7165,"type":15},"SDK","sdk",{"name":7167,"slug":7168,"type":15},"Serverless","serverless",{"name":7170,"slug":7171,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":7174,"name":7174,"fn":7175,"description":7176,"org":7177,"tags":7178,"stars":25,"repoUrl":26,"updatedAt":7190},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7179,7180,7183,7186,7187],{"name":7031,"slug":7032,"type":15},{"name":7181,"slug":7182,"type":15},"React","react",{"name":7184,"slug":7185,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":7048,"slug":7049,"type":15},{"name":7188,"slug":7189,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":7192,"name":7192,"fn":7193,"description":7194,"org":7195,"tags":7196,"stars":25,"repoUrl":26,"updatedAt":7210},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7197,7200,7203,7206,7209],{"name":7198,"slug":7199,"type":15},"AI Infrastructure","ai-infrastructure",{"name":7201,"slug":7202,"type":15},"Cost Optimization","cost-optimization",{"name":7204,"slug":7205,"type":15},"LLM","llm",{"name":7207,"slug":7208,"type":15},"Performance","performance",{"name":7188,"slug":7189,"type":15},"2026-04-06T18:40:44.377464",{"slug":7212,"name":7212,"fn":7213,"description":7214,"org":7215,"tags":7216,"stars":25,"repoUrl":26,"updatedAt":7222},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7217,7218,7221],{"name":7201,"slug":7202,"type":15},{"name":7219,"slug":7220,"type":15},"Database","database",{"name":7204,"slug":7205,"type":15},"2026-04-06T18:41:08.513425",600]