Skip to content

Ultravox

Ultravox is a realtime voice model platform with low time-to-first-byte and configurable agents. The bridge proxies Teler call audio into your Ultravox agent and relays its response back over the same WebSocket.

  • An Ultravox account with an agent created
  • The agent_id of that Ultravox agent
  • A Teler account with an active API key
  • One Teler phone number on your account
  • An ngrok auth token (for local development)
  • Docker and Docker Compose
VariableRequiredDefaultDescription
ULTRAVOX_API_KEYyesnoneYour Ultravox API key.
ULTRAVOX_AGENT_IDyesnoneThe Ultravox agent ID to connect calls to.
TELER_API_KEYyesnoneYour Teler API key.
NGROK_AUTHTOKENyes (local)nonengrok auth token.
Terminal window
git clone https://github.com/frejun-tech/teler-ultravox-bridge
cd teler-ultravox-bridge
cp .env.example .env
docker compose up -d --build
Terminal window
curl -X POST http://localhost:8000/api/v1/calls/initiate-call \
-H "Content-Type: application/json" \
-d '{
"from_number": "+91XXXXXXXXXX",
"to_number": "+91XXXXXXXXXX"
}'

Standard 3-endpoint shape (see Bridge). The bridge holds two WebSockets (Teler ↔ bridge ↔ Ultravox) and pumps audio between them.

SymptomLikely causeFix
Agent not respondingWrong ULTRAVOX_AGENT_IDVerify in Ultravox dashboard
401 from UltravoxInvalid ULTRAVOX_API_KEYRotate the key
Phone rings then dropsBridge unreachable from public internetCheck ngrok status