Native Integrations
Ultravox provides native integrations for the following. Each has their own unique callmedium that must be used when creating calls.
| Provider | Call Medium | Streaming API |
|---|---|---|
| Twilio | "twilio": {} | Media Streams |
| Telnyx | "telnyx": {} | Media Streaming |
| Plivo | "plivo": {} | AudioStream |
| Exotel | "exotel": {} | Voice Streaming |
SIP
Ultravox Realtime has native support for SIP. See the SIP Guide for more.Partner Integrations
Our voice platform partners have native integrations for Ultravox:Voximplant
Voximplant provides a hosted voice platform. Check out the Integration Guide →jambonz
jambonz provides a voice platform that runs in a fully managed cloud or can be self-hosted. Details on how to make and receive calls using jambonz appear below.Provider-Specific Integration Examples
Twilio
Outbound Calls with Twilio
1
Create an Ultravox Call
Create a new call as shown above with
medium: { "twilio": {} }, firstSpeakerSettings: { user: {} }, and get a joinUrl.2
Connect Ultravox to the Twilio Phone Call
Use the
joinUrl with a Twilio <Stream>:Full example code in Outbound Quickstart →
Incoming Calls with Twilio
1
Create an Ultravox Call
Create a new call with
medium: { "twilio": {} } and firstSpeakerSettings set to { agent: {} }.2
Connect the Inbound Twilio Call to Ultravox
Use the
joinUrl with a Twilio <Stream>:Full example code in Inbound Quickstart →
Telnyx
Outbound Calls with Telnyx
1
Create an Ultravox Call
Create a new call as shown above with
medium: { "telnyx": {} }, firstSpeakerSettings: { user: {} }, and get a joinUrl.2
Connect Ultravox to the Telnyx Phone Call
Use the Or using TeXML:
joinUrl with a TeXML <Stream>:Incoming Calls with Telnyx
1
Create an Ultravox Call
Create a new call with
medium: { "telnyx": {} } and firstSpeakerSettings set to { agent: {} }.2
Connect the Inbound Telnyx Call to Ultravox
Use the
joinUrl with a TeXML <Stream>:Plivo
Full example code for outbound and inbound calls with Plivo on GitHub here →
Outbound Calls with Plivo
1
Create an Ultravox Call
Create a new call as shown above with
medium: { "plivo": {} }, firstSpeakerSettings: { user: {} }, and get a joinUrl.2
Connect Ultravox to the Plivo Phone Call
Use the The answer URL should return:Note: For best audio quality, we recommend
joinUrl with AudioStream:audio/x-l16;rate=16000. However, any contentType supported by Plivo will work with Ultravox.Incoming Calls with Plivo
1
Create an Ultravox Call
Create a new call with
medium: { "plivo": {} } and firstSpeakerSettings set to { agent: {} }.2
Connect the Inbound Twilio Call to Ultravox
Use the
joinUrl with AudioStream:jambonz
jambonz Portal Setup
jambonz is a “bring your own everything” open-source telephony platform that integrates Ultravox directly via their llm verb. This gives you the flexibility to choose your carrier of choice, you’ll just need to add it in your jambonz dashboard.1
Add Your Carrier in jambonz
In jambonz, we use the terms “carrier” and “SIP trunk” interchangeably. jambonz is a “Bring your own carrier” platform, which means that you can connect any sip network provider or device. Add your carrier of choice in your jambonz dashboard to get started.
2
Add a Speech Provider in jambonz
Next, you need to add speech credentials for your chosen vendor.
3
Create a New jambonz Application
A jambonz application configured via the jambonz portal defines how calls are handled by linking them to your custom logic through webhooks or WebSocket endpoints. When you create an application, you specify:
- Call webhook URL: Where jambonz sends call events.
- Call status webhook URL: For receiving call status updates.
- Speech vendors: Your chosen TTS/STT providers.
4
Add a Phone Number in jambonz
Finally, you need to add a phone number provisioned from your carrier of choice. At the bottom of the page select the jambonz application you just created to link your new virtual number to that application.
Incoming Calls with jambonz
llm verb in the jambonz docs.
Outbound Calls with jambonz
In addition to the inbound scenario, you’ll have to create a call that connects to the destination number (phoneNumber) and points to the jambonz application that defines how the call should be handled. Find the APPLICATION_SID in the jambonz portal by clicking on the application you created during the setup process.