Runs as-is
| Project | Built with | From | Notes |
|---|---|---|---|
| twilio-samples/ |
Node.js · OpenAI | Twilio sample | The ElevenLabs voice ID applies only if your VoiceML account uses ElevenLabs for text-to-speech. |
| twilio-samples/ |
Next.js · OpenAI | Twilio sample | The outbound-call button uses the Twilio SDK; point it at voiceml.voicetel.com with your VoiceTel credentials. |
| langflow-ai/ |
Node.js · Langflow | Langflow | — |
| pkamp3/ |
Node.js · Anthropic Claude | Community | — |
| rishabkumar7/ |
Python · Google Gemini | Community | The ElevenLabs voice ID applies only if your VoiceML account uses ElevenLabs for text-to-speech. |
| manbearshark/ |
Node.js · Amazon Bedrock on AWS Fargate | Community | Its DTMF attributes are ignored (VoiceML always forwards DTMF), and the <Parameter> values it adds are not forwarded; the sample does not read them. |
Runs with limits
| Project | Built with | What doesn't carry over |
|---|---|---|
| danohn/ |
Python · LangChain | Memory across calls from the same number does not carry over: it keys memory on a caller number passed as a <Parameter>, which VoiceML does not forward, so each call starts fresh. |
| pBread/ |
TypeScript · OpenAI | Sending DTMF and switching language mid-call are ignored, and its custom parameters are not forwarded. |
| midshipman/ |
Python · LiteLLM | Needs a one-line change: it reads the caller number from the setup message, which VoiceML does not send. Change message['from'] to message.get('from', '') or the call ends after setup. |
Building blocks
- twilio-labs/conversationrelay-bridge-js (TypeScript library, Twilio Labs): Implements the full protocol; its sendDigits and language helpers have no effect on VoiceML.
- twilio-samples/cr-flowiseai (TypeScript · Flowise, Twilio sample): Built on conversationrelay-bridge-js; uses the core prompt-and-reply loop.
Running a project on VoiceML
- Select a speech-to-text and a text-to-speech provider for your VoiceML account. ConversationRelay needs both; see the speech recognition and text-to-speech guides.
- Run the project and point your number's voice URL at the endpoint that returns its
<Connect><ConversationRelay>markup. - If the project validates webhook signatures, give it your VoiceTel auth token; VoiceML signs requests with the same scheme.
- If the project calls the REST API (to place or transfer calls, for example), point the Twilio SDK at
voiceml.voicetel.comwith your VoiceTel credentials.
What VoiceML supports
| Direction | Message | Fields |
|---|---|---|
| To your app | setup | sessionId, callSid, language |
| To your app | prompt | voicePrompt, lang, last |
| To your app | interrupt | utteranceUntilInterrupt, durationUntilInterruptMs |
| To your app | dtmf | digit |
| From your app | text | token, interruptible, preemptible, last |
| From your app | play | source, interruptible, preemptible |
| From your app | end | handoffData (returned on the <Connect> action callback) |
<ConversationRelay> attributes VoiceML uses: url, voice, language, welcomeGreeting. ttsProvider and transcriptionProvider are accepted, but your account's own speech providers are used.
Not supported:
- sendDigits and language-switch messages from your app (ignored)
- caller details (from, to, direction, callerName) in the setup message
- <Parameter> values (customParameters in setup)
- other <ConversationRelay> attributes, such as dtmfDetection and interruptByDtmf (ignored; DTMF is always forwarded)
Media Streams frameworks
Frameworks that use Twilio's Media Streams instead of ConversationRelay, such as the OpenAI Agents SDK and Pipecat, connect through <Connect><Stream>: VoiceML delivers the same Media Streams wire protocol to your WebSocket. LiveKit Agents connects through SIP trunking instead. See voice AI frameworks for how Pipecat, LiveKit Agents, Dograh, TEN, and Bolna connect.
Reviewed 2026-10-04 by reading each project's source against VoiceML's ConversationRelay support; not tested on live calls. Projects change after review, so check the repository before you deploy. Project names belong to their owners; listing a project does not imply endorsement by, or affiliation with, its authors or Twilio.

