Compatibility
Compare Twilio, VoiceTel, and RestComm before you migrate voice workloads.
Every REST resource and voice markup surface on the VoiceML compatibility matrix is scored side-by-side with Twilio (reference) and RestComm (open-source CPaaS). Use it to see what moves with a hostname swap, what needs markup changes, and what stays out of scope — before you cut traffic over.
Validate VoiceML Migration guide
Why VoiceTel built its own implementation from scratch
Most Twilio-compatible CPaaS platforms in market are not original implementations — they are RestComm and their derivatives. The community open-source RestComm stack ships the compatibility layer that voice and messaging providers then rebrand. VoiceTel authored VoiceML from scratch to make a truly conformant implementation that provides frictionless migration.
Compatibility matrix
Legend: Yes — supported, Partial — partial or documented limitation, No — unsupported (404 or 501), N/A — out of scope on this surface.
One table per Twilio product. VoiceTel's compatibility surface is grouped the same way Twilio's docs are, so you can pick the product you're migrating and skip to its block.
Programmable Voice
The 2010-04-01 voice REST surface — Calls, Conferences, Queues, Recordings, Applications, account-level resources, and hosted SIP domains. The bulk of the migration-from-Twilio compatibility work lives here. Twilio docs →
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| Account | GET /Accounts/{Sid}, POST /Accounts/{Sid} | Yes | Yes | Partial | VoiceTel: self-account fetch/update; FriendlyName / Status mutable on the authenticated account. |
| Account / Balance | GET /Balance | Yes | Yes | No | VoiceTel: account balance + currency. Polling-friendly endpoint mirrors Twilio's shape. |
| Account / Exports | GET /Exports, GET /Exports/{Date} | Yes | Yes | No | VoiceTel: daily CDR/messaging export catalog and per-date fetch. |
| Account / Notifications | GET /Notifications | Yes | Partial | No | VoiceTel stub: 200 + empty list. Account-wide events go to StatusCallback. |
| GET /Notifications/{Sid} | Yes | Partial | No | VoiceTel single-resource fetch on stub — always 404. | |
| Account / Transcriptions (top-level) | GET /Transcriptions, GET /Transcriptions/{Sid}, DELETE /Transcriptions/{Sid} | Yes | Yes | No | VoiceTel: tenant-wide transcription index across Calls and Recordings; idempotent delete. |
| Applications | POST /Applications, GET /Applications[/{Sid}], POST /Applications/{Sid}, DELETE /Applications/{Sid} | Yes | Yes | Partial | VoiceTel: voice-only fields (no SMS). RestComm uses RcmlUrl instead of VoiceUrl — not a drop-in field swap. |
| Calls | POST /Calls | Yes | Yes | Partial | VoiceTel normalises To/From against per-tenant phone regions; MachineDetection truly optional; Twiml/ApplicationSid accepted; per-call SIP/auth params wired through to the originate. RestComm uses RCML URL fields and the 2012-04-24 path prefix. |
| GET /Calls/{Sid} | Yes | Yes | Partial | ||
| GET /Calls (filters: To, From, Status, ParentCallSid, StartTime≥/≤, EndTime≥/≤, Page, PageSize≤1000) | Yes | Yes | Partial | VoiceTel: full Twilio query surface; EndTime auto-restricts to terminal-status rows. |
|
| POST /Calls/{Sid} (Status / Twiml / Url / FallbackUrl / StatusCallback*) | Yes | Yes | Partial | VoiceTel: full Call resource on success; Twiml wins over Url. |
|
| DELETE /Calls/{Sid} | Yes | Yes | Partial | ||
| Calls / Recordings | GET /Calls/{Sid}/Recordings | Yes | Yes | Partial | |
| GET /Calls/{Sid}/Recordings/{Sid} | Yes | Yes | Partial | ||
| POST /Calls/{Sid}/Recordings (start mid-call) | Yes | Yes | Partial | VoiceTel honours RecordingMaxDuration / PlayBeep / RecordingStatusCallback*. |
|
| POST /Calls/{Sid}/Recordings/{Sid} (Status=stopped/paused/in-progress) | Yes | Yes | Partial | VoiceTel: stop, pause, resume; idempotent against already-completed. | |
| DELETE /Calls/{Sid}/Recordings/{Sid} | Yes | Yes | Partial | VoiceTel unlinks WAV and drops row. | |
| Calls / Streams | GET /Calls/{Sid}/Streams[/{Sid}] | Yes | Yes | No | Twilio Media Streams WebSocket protocol. VoiceTel mirrors <Connect><Stream> / <Start><Stream>. RestComm has no equivalent live media fork REST surface. |
| POST /Calls/{Sid}/Streams (start) | Yes | Yes | No | VoiceTel returns MZ-prefixed SID. | |
| POST /Calls/{Sid}/Streams/{Sid} (Status=stopped) | Yes | Yes | No | ||
| Calls / Siprec | GET /Calls/{Sid}/Siprec[/{Sid}] | Yes | Yes | No | SIPREC session recording fork. VoiceTel mirrors <Start><Siprec>; returns SR-prefixed SID. |
| POST /Calls/{Sid}/Siprec (start) | Yes | Yes | No | ||
| POST /Calls/{Sid}/Siprec/{Sid} (Status=stopped) | Yes | Yes | No | ||
| Calls / Transcriptions | GET /Calls/{Sid}/Transcriptions[/{Sid}] | Yes | Yes | Partial | VoiceTel mirrors <Start><Transcription>; returns RT-prefixed SID. RestComm transcription depends on deployment plugins. |
| POST /Calls/{Sid}/Transcriptions (start) | Yes | Yes | Partial | ||
| POST /Calls/{Sid}/Transcriptions/{Sid} (Status=stopped) | Yes | Yes | Partial | ||
| Calls / Payments | POST /Calls/{Sid}/Payments[/{Sid}] | Yes | Yes | No | VoiceTel: card capture enabled per account — contact support to turn on. |
| Calls / Events | GET /Calls/{Sid}/Events | Yes | Partial | No | VoiceTel compatibility stub: 200 + empty list. Per-call events are delivered to your StatusCallback URL. |
| Calls / Notifications | GET /Calls/{Sid}/Notifications | Yes | Partial | No | VoiceTel stub: 200 + empty list. |
| GET /Calls/{Sid}/Notifications/{Sid} | Yes | Partial | No | VoiceTel single-resource fetch on the same stub — always 404. | |
| Calls / UserDefinedMessages | POST /Calls/{Sid}/UserDefinedMessages | Yes | No | No | VoiceTel returns 501 + Twilio error code 20501. Out of scope on the VoiceML compatibility surface. |
| Conferences | GET /Conferences | Yes | Yes | Partial | VoiceTel: live conference query, multi-tenant namespaced. |
| GET /Conferences/{Sid} | Yes | Yes | Partial | ||
| POST /Conferences/{Sid} (Status=completed to end) | Yes | Yes | Partial | ||
| Conferences / Participants | POST /Conferences/{Sid}/Participants (dial-in) | Yes | Yes | Partial | VoiceTel places outbound leg that joins on answer; returns status=queued while ringing. |
| GET /Conferences/{Sid}/Participants[/{Sid}] | Yes | Yes | Partial | ||
| POST /Conferences/{Sid}/Participants/{Sid} (Muted, Hold) | Yes | Yes | Partial | VoiceTel: mute/unmute and hold/unhold wired. | |
| DELETE /Conferences/{Sid}/Participants/{Sid} (kick) | Yes | Yes | Partial | ||
| Conferences / Recordings | GET /Conferences/{Sid}/Recordings | Yes | Yes | Partial | VoiceTel: metadata persisted at conference start. |
| GET /Conferences/{Sid}/Recordings/{Sid} | Yes | Yes | Partial | ||
| POST /Conferences/{Sid}/Recordings/{Sid} (Status=stopped/paused/in-progress) | Yes | Yes | Partial | Same semantics as call recordings; enforces conference scope from URL path. | |
| DELETE /Conferences/{Sid}/Recordings/{Sid} | Yes | Yes | Partial | ||
| Connect / ConversationRelay | <Connect><ConversationRelay url="wss://..."/></Connect> | Yes | Yes | No | Voice markup verb (no REST mirror). VoiceTel bridges to a customer-hosted WebSocket for LLM-driven voice agents with Twilio-shaped wire messages. RestComm has no ConversationRelay equivalent. |
| Connect / other sub-nouns | <VirtualAgent>, <Conversation>, <Room>, <Autopilot> | Yes | No | No | Twilio-hosted AI / Programmable Video / Studio surfaces. VoiceTel: use <ConversationRelay> for voice-agent integration. |
| OutgoingCallerIds | POST /OutgoingCallerIds, GET /OutgoingCallerIds[/{Sid}], POST /OutgoingCallerIds/{Sid}, DELETE /OutgoingCallerIds/{Sid} | Yes | Yes | Partial | VoiceTel: PN-prefixed verified caller-ID resource. Full CRUD; verification flow is provider-side. |
| Queues | POST /Queues, GET /Queues[/{Sid}], POST /Queues/{Sid}, DELETE /Queues/{Sid} | Yes | Yes | Partial | VoiceTel: full CRUD; in-process state. |
| Queues / Members | GET /Queues/{Sid}/Members[/{Sid}|Front], POST /Queues/{Sid}/Members/{Sid|Front} | Yes | Yes | Partial | VoiceTel extension — REST dequeue alongside <Dial><Queue> markup. |
| Recordings (top-level) | GET /Recordings[/{Sid}] | Yes | Yes | Partial | |
| DELETE /Recordings/{Sid} | Yes | Yes | Partial | VoiceTel: row + local WAV + S3 object (best-effort). | |
| GET /Recordings/{Sid}.wav | Yes | Yes | Partial | VoiceTel: binary audio/wav — 200 (local), 302 to presigned S3 (archived), or 410 Gone. |
|
| Recordings / Transcriptions | GET /Recordings/{Sid}/Transcriptions, GET /Recordings/{Sid}/Transcriptions/{Sid}, DELETE /Recordings/{Sid}/Transcriptions/{Sid} | Yes | Yes | No | VoiceTel: per-recording transcription sub-resource. STT vendor selected per tenant. |
| SIP / Domains | POST /SIP/Domains, GET /SIP/Domains[/{Sid}], POST /SIP/Domains/{Sid}, DELETE /SIP/Domains/{Sid} | Yes | Yes | Partial | VoiceTel: SD-prefixed SIP-ingress resource — full CRUD. See SIP trunking for inventory provisioning. |
| SIP / Domains / CredentialListMappings | POST, GET /SIP/Domains/{Sid}/CredentialListMappings[/{Sid}], DELETE … | Yes | Yes | No | Twilio nested SIP mapping resources. RestComm SIP REST parity is deployment-dependent. |
| SIP / Domains / IpAccessControlListMappings | POST, GET /SIP/Domains/{Sid}/IpAccessControlListMappings[/{Sid}], DELETE … | Yes | Yes | No | |
| SIP / Domains / Auth / Calls / CredentialListMappings | POST, GET, DELETE /SIP/Domains/{Sid}/Auth/Calls/CredentialListMappings[/{Sid}] | Yes | Yes | No | Call-specific override mapping for inbound voice INVITEs. |
| SIP / Domains / Auth / Calls / IpAccessControlListMappings | POST, GET, DELETE /SIP/Domains/{Sid}/Auth/Calls/IpAccessControlListMappings[/{Sid}] | Yes | Yes | No | |
| SIP / Domains / Auth / Registrations / CredentialListMappings | POST, GET, DELETE /SIP/Domains/{Sid}/Auth/Registrations/CredentialListMappings[/{Sid}] | Yes | Yes | No | REGISTER-specific override mapping. |
| SIP / Domains / InboundProcessingRegion | GET /v2/SipDomains/{Name}, POST /v2/SipDomains/{Name} | Yes | Yes | No | Twilio Routes v2 surface. VoiceTel keyed by domain name; account from HTTP Basic auth. |
| SIP / CredentialLists | POST /SIP/CredentialLists, GET /SIP/CredentialLists[/{Sid}], POST /SIP/CredentialLists/{Sid}, DELETE /SIP/CredentialLists/{Sid} | Yes | Yes | Partial | VoiceTel: CL-prefixed credential bucket attachable to a SIP Domain. |
| SIP / CredentialLists / Credentials | POST /SIP/CredentialLists/{Sid}/Credentials, GET …, POST / DELETE … | Yes | Yes | Partial | VoiceTel: Password is write-only on fetch. |
| SIP / IpAccessControlLists | POST /SIP/IpAccessControlLists, GET …, POST / DELETE … | Yes | Yes | Partial | VoiceTel: AL-prefixed IP-allowlist bucket. |
| SIP / IpAccessControlLists / IpAddresses | POST /SIP/IpAccessControlLists/{Sid}/IpAddresses, GET …, POST / DELETE … | Yes | Yes | Partial | VoiceTel: individual IP entries with optional CIDR mask. |
Programmable Messaging
SMS and MMS send/fetch with per-message media. VoiceTel routes messages through the per-tenant SMS provider configured for your account. Twilio docs →
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| Messages | POST /Messages | Yes | Yes | Partial | VoiceTel sends via per-tenant SMS provider; see VoiceTel Messaging. |
| GET /Messages[/{Sid}] | Yes | Yes | Partial | ||
| POST /Messages/{Sid} | Yes | Partial | Partial | VoiceTel: Body redaction supported; Status=canceled rejected with 409. |
|
| DELETE /Messages/{Sid} | Yes | Yes | Partial | VoiceTel: idempotent 204. | |
| Messages / Media | GET /Messages/{Sid}/Media, GET /Messages/{Sid}/Media/{Sid}, DELETE /Messages/{Sid}/Media/{Sid} | Yes | Yes | Partial | VoiceTel: per-message media list/fetch/delete. Returns MIME type + content-URL. |
| MMS | POST /Messages + MediaUrl | Yes | N/A | Partial | VoiceTel MMS via native VoiceTel Messaging, not the VoiceML compatibility REST surface. |
Phone Numbers
DID inventory and routing. VoiceTel: IncomingPhoneNumbers for assigned DIDs; provisioning happens through the VoiceTel Numbers workflow rather than search-and-buy on this REST surface. Twilio docs →
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| IncomingPhoneNumbers | GET /IncomingPhoneNumbers | Yes | Yes | Partial | VoiceTel: tenant-scoped list of DIDs assigned to the authenticated account. |
| POST /IncomingPhoneNumbers | Yes | Yes | Partial | VoiceTel: self-serve DID assignment by E.164; inventory provisioned via VoiceTel Numbers. | |
| GET /IncomingPhoneNumbers/Local, GET /IncomingPhoneNumbers/Mobile, GET /IncomingPhoneNumbers/TollFree | Yes | Partial | Partial | VoiceTel type-specific list aliases; Mobile returns empty (no carrier-mobile classification on BYO DIDs). |
|
| GET /IncomingPhoneNumbers/{Sid} | Yes | Yes | Partial | VoiceTel: cross-tenant fetches 404 — no enumeration leak. | |
| POST /IncomingPhoneNumbers/{Sid} | Yes | Yes | Partial | VoiceTel: only-set-fields-touched update semantics for voice routing. | |
| DELETE /IncomingPhoneNumbers/{Sid} | Yes | Yes | Partial | VoiceTel: idempotent release — 204 on success or already gone. | |
| AvailablePhoneNumbers | GET /AvailablePhoneNumbers/{Country}/Local etc. | Yes | No | Partial | Twilio number search/buy API. VoiceTel: use VoiceTel Numbers workflow. RestComm inventory varies by deployment. |
| ShortCodes | full sub-resource | Yes | No | Partial | Twilio short-code provisioning API. |
| Numbers / InboundProcessingRegion | GET /v2/PhoneNumbers/{E.164}, POST /v2/PhoneNumbers/{E.164} | Yes | Yes | No | Twilio Routes v2 surface. VoiceTel: per-DID Inbound Processing Region override keyed by E.164. |
BYOC Voice Trunking
Bring-Your-Own-Carrier voice trunking — connection policies, IP records, source-IP mappings, and account-wide dialing permissions. Used to attach a customer SBC or upstream carrier to outbound voice. Twilio docs →
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| Voice trunking / ByocTrunks | POST /v1/ByocTrunks, GET /v1/ByocTrunks[/{Sid}], POST /v1/ByocTrunks/{Sid}, DELETE /v1/ByocTrunks/{Sid} | Yes | Yes | No | Twilio Bring-Your-Own-Carrier voice trunk surface. VoiceTel: TR-prefixed trunk attaching a customer SBC to inbound voice routing. |
| Voice trunking / ConnectionPolicies | POST /v1/ConnectionPolicies, GET /v1/ConnectionPolicies[/{Sid}], POST /v1/ConnectionPolicies/{Sid}, DELETE /v1/ConnectionPolicies/{Sid} | Yes | Yes | No | VoiceTel: NY-prefixed connection-policy resource grouping target SIP URIs by priority/weight. |
| POST /v1/ConnectionPolicies/{Sid}/Targets, GET /v1/ConnectionPolicies/{Sid}/Targets[/{Sid}], POST /v1/ConnectionPolicies/{Sid}/Targets/{Sid}, DELETE /v1/ConnectionPolicies/{Sid}/Targets/{Sid} | Yes | Yes | No | Connection-policy target URIs: SIP destinations with priority/weight/enabled flags. | |
| Voice trunking / IpRecords | POST /v1/IpRecords, GET /v1/IpRecords[/{Sid}], POST /v1/IpRecords/{Sid}, DELETE /v1/IpRecords/{Sid} | Yes | Yes | No | Twilio IP-record CRUD. VoiceTel: IL-prefixed IP-record entries with optional CIDR mask, attachable to inbound mappings. |
| Voice trunking / SourceIpMappings | POST /v1/SourceIpMappings, GET /v1/SourceIpMappings[/{Sid}], POST /v1/SourceIpMappings/{Sid}, DELETE /v1/SourceIpMappings/{Sid} | Yes | Yes | No | VoiceTel: source IP record → SIP domain binding for inbound trunk routing. |
| Voice trunking / DialingPermissions | GET /v1/Settings, POST /v1/Settings | Yes | Yes | No | Twilio outbound voice dialing-permissions surface. VoiceTel: account-wide outbound voice settings. |
Conversations
Multi-channel chat sessions — SMS, MMS, WhatsApp, and in-app chat — under one v1 REST surface, with participants, messages, webhooks, and per-tenant Services. See /conversations/. Twilio docs →
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| Conversations | POST /v1/Conversations, GET /v1/Conversations[/{Sid}], POST /v1/Conversations/{Sid}, DELETE /v1/Conversations/{Sid} | Yes | Yes | No | Twilio Conversations API. VoiceTel: CH-prefixed conversation resource; full CRUD. |
| POST /v1/ConversationWithParticipants | Yes | Yes | No | Single-call conversation creation with participants and (optional) initial messages. | |
| Conversations / Messages | POST /v1/Conversations/{Sid}/Messages, GET /v1/Conversations/{Sid}/Messages[/{Sid}], POST /v1/Conversations/{Sid}/Messages/{Sid}, DELETE /v1/Conversations/{Sid}/Messages/{Sid} | Yes | Yes | No | VoiceTel: IM-prefixed message resource; supports media attachments and edits. |
| GET /v1/Conversations/{Sid}/Messages/{Sid}/Receipts[/{Sid}] | Yes | Yes | No | Per-recipient delivery + read receipts for each message. | |
| Conversations / Participants | POST /v1/Conversations/{Sid}/Participants, GET /v1/Conversations/{Sid}/Participants[/{Sid}], POST /v1/Conversations/{Sid}/Participants/{Sid}, DELETE /v1/Conversations/{Sid}/Participants/{Sid} | Yes | Yes | No | VoiceTel: MB-prefixed participant resource; supports SMS/MMS/chat bindings. |
| GET /v1/ParticipantConversations | Yes | Yes | No | Reverse index: list every conversation a given participant address belongs to. | |
| Conversations / Webhooks | POST /v1/Conversations/{Sid}/Webhooks, GET /v1/Conversations/{Sid}/Webhooks[/{Sid}], POST /v1/Conversations/{Sid}/Webhooks/{Sid}, DELETE /v1/Conversations/{Sid}/Webhooks/{Sid} | Yes | Yes | No | Per-conversation webhook subscriptions. VoiceTel: signed HMAC-SHA256 delivery, same scheme as voice callbacks. |
| Conversations / Roles | POST /v1/Roles, GET /v1/Roles[/{Sid}], POST /v1/Roles/{Sid}, DELETE /v1/Roles/{Sid} | Yes | Yes | No | VoiceTel: RL-prefixed role resource for conversation-level permissions. |
| Conversations / Users | POST /v1/Users, GET /v1/Users[/{Sid}], POST /v1/Users/{Sid}, DELETE /v1/Users/{Sid} | Yes | Yes | No | VoiceTel: US-prefixed user resource. Tracks identity across conversations. |
| GET /v1/Users/{Sid}/Conversations[/{Sid}], POST /v1/Users/{Sid}/Conversations/{Sid}, DELETE /v1/Users/{Sid}/Conversations/{Sid} | Yes | Yes | No | Per-user conversation membership and notification-level settings. | |
| Conversations / Credentials | POST /v1/Credentials, GET /v1/Credentials[/{Sid}], POST /v1/Credentials/{Sid}, DELETE /v1/Credentials/{Sid} | Yes | Yes | No | Push-notification credentials (APNS / FCM) for Conversations endpoints. |
| Conversations / Configuration | GET /v1/Configuration, POST /v1/Configuration | Yes | Yes | No | Account-default Conversations configuration: default service, role assignments. |
| POST /v1/Configuration/Addresses, GET /v1/Configuration/Addresses[/{Sid}], POST /v1/Configuration/Addresses/{Sid}, DELETE /v1/Configuration/Addresses/{Sid} | Yes | Yes | No | Address-configuration: inbound auto-routing rules per phone-number / SIP address. | |
| GET /v1/Configuration/Webhooks, POST /v1/Configuration/Webhooks | Yes | Yes | No | Account-wide Conversations event webhook configuration. | |
| Conversations / Services | POST /v1/Services, GET /v1/Services[/{Sid}], DELETE /v1/Services/{Sid} | Yes | Yes | No | VoiceTel: IS-prefixed service resource — isolates conversations into a sandbox with its own users/roles/configuration. |
| Service-scoped Conversations: POST /v1/Services/{Sid}/Conversations, GET …, POST …, DELETE … | Yes | Yes | No | Mirrors the unscoped Conversations CRUD inside a chat service. | |
| Service-scoped Conversation sub-resources: Messages, Messages/{Sid}/Receipts, Participants, Webhooks | Yes | Yes | No | Full Conversations sub-resource surface scoped to the parent service. | |
| Service-scoped Users + ParticipantConversations + Roles + Bindings | Yes | Yes | No | Per-service identity, role, and binding resources; cross-conversation participant index. | |
| Service-scoped Configuration: GET/POST /v1/Services/{Sid}/Configuration, /Configuration/Notifications, /Configuration/Webhooks | Yes | Yes | No | Per-service defaults, notification settings, and event webhooks. | |
| POST /v1/Services/{Sid}/ConversationWithParticipants | Yes | Yes | No | Single-call service-scoped conversation creation with participants. |
AI Assistants
Voice and chat AI agents — assistants, tool calls, retrieval-augmented knowledge bases, sessions, and feedback. Externally promoted as VoiceTel AI Agents. Twilio docs →
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| AI Assistants | POST /v1/Assistants, GET /v1/Assistants[/{id}], PUT /v1/Assistants/{id}, DELETE /v1/Assistants/{id} | Yes | Yes | No | Twilio AI Assistants. VoiceTel: assistant CRUD; LLM provider + model configurable per assistant. |
| POST /v1/Assistants/{id}/Messages | Yes | Yes | No | Send a chat message to an assistant; returns the assistant's reply (and any tool calls invoked). | |
| AI Assistants / Tools | POST /v1/Tools, GET /v1/Tools[/{id}], PUT /v1/Tools/{id}, DELETE /v1/Tools/{id} | Yes | Yes | No | Tool definitions (function-call schemas) that any assistant can reference. |
| GET /v1/Assistants/{id}/Tools, POST /v1/Assistants/{id}/Tools/{toolId}, DELETE /v1/Assistants/{id}/Tools/{toolId} | Yes | Yes | No | Per-assistant tool attachments — bind a tool from the global catalog to an assistant. | |
| AI Assistants / Knowledge | POST /v1/Knowledge, GET /v1/Knowledge[/{id}], PUT /v1/Knowledge/{id}, DELETE /v1/Knowledge/{id} | Yes | Yes | No | Knowledge-base resources (RAG sources): web, file, or text. |
| GET /v1/Knowledge/{id}/Chunks, GET /v1/Knowledge/{id}/Status | Yes | Yes | No | Inspect ingested chunks and indexing status for a knowledge base. | |
| GET /v1/Assistants/{id}/Knowledge, POST /v1/Assistants/{id}/Knowledge/{kid}, DELETE /v1/Assistants/{id}/Knowledge/{kid} | Yes | Yes | No | Per-assistant knowledge attachments. | |
| AI Assistants / Sessions | GET /v1/Sessions[/{id}], GET /v1/Sessions/{id}/Messages | Yes | Yes | No | Conversation-session history for an assistant — read-only; messages are the per-turn log. |
| AI Assistants / Feedback | GET /v1/Assistants/{id}/Feedbacks, POST /v1/Assistants/{id}/Feedbacks | Yes | Yes | No | Submit and list per-assistant feedback events for quality scoring. |
| AI Assistants / Policies | GET /v1/Policies | Yes | Yes | No | Read-only catalog of guardrail policies available to assistants. |
Out of scope
Distinct Twilio products that fall outside the VoiceML compatibility surface. Use the linked VoiceTel equivalent where one exists.
| Resource | Endpoints | Twilio | VoiceTel | RestComm | Notes |
|---|---|---|---|---|---|
| Insights | full | Yes | N/A | No | Twilio-hosted analytics product. |
| Pricing API | full | Yes | N/A | No | VoiceTel publishes rates directly; no Twilio-shaped pricing API. |
| Verify Lookup Studio TaskRouter Video Proxy Functions/Assets Wireless Trunking Authy |
full | Yes | N/A | No | Distinct Twilio platform products — out of scope for VoiceML and RestComm voice REST parity. |