- Assign a number in Omnia — import it, attach it to an agent, done. See Phone numbers.
- Bring your own telephony — you keep the carrier relationship and stream audio to us. That is this page.
The flow
1
A call arrives at your carrier
Your webhook is hit, as it is today.
2
You create an Omnia call session
POST /calls/create with the agent and your connectionType.3
You bridge the audio
Point the carrier’s media stream at the returned
websocketUrl.Creating the session
enum
default:"twilio"
twilio, telnyx, plivo, websocket, or webrtc. Anything else returns
400.Telephony transports use G.711 audio regardless of what you send in the
websocket block — that is what the phone network carries. Sample rates and
codec are only read when connectionType is websocket.Twilio
Answer the call with a<Stream> pointed at the websocketUrl:
Telnyx and Plivo
Identical shape — setconnectionType accordingly and point the provider’s
media-stream feature at websocketUrl. The audio contract is the same G.711.
Your own client
For a mobile app or a custom bridge, useconnectionType: "websocket" and pick
your own audio parameters:
Practical notes
Create the session per call
Create the session per call
A
websocketUrl is short-lived and single-use. Create one when the call
arrives, never at boot, and never cache it.Latency is your webhook's problem too
Latency is your webhook's problem too
The caller hears silence from the moment they are answered until audio
starts flowing. Create the session and return your XML in one round trip —
do not do database work in between.
Credits still apply
Credits still apply
BYOT bills the same per-minute rate. An out-of-credit workspace fails at
session creation with
402, so handle that in your webhook and play your own
message rather than returning broken XML.Hanging up
Hanging up
Assign the
hangUp system tool so the agent can end the
call itself. Your carrier’s own hangup handling stays yours.