Skip to main content
Last updated: July 22, 2026 · API version: v2 · Tested against: openapi.yaml 2.0.0 · 7 min read
API examples use the production host https://unpod.ai/, the /api/v2/platform/ path prefix, and Authorization: Token. The legacy api.unpod.ai/api/v1/ + Bearer scheme is deprecated.

Telephony is the layer that connects your AI agent to the real phone network. Unpod abstracts away the complexity of SIP, PSTN, and WebRTC - but understanding how the pieces fit together helps you configure it correctly and debug issues faster.

The Three Components

Unpod telephony has three core concepts:
Animated telephony routing flow diagram showing a phone number routed through a bridge and provider to an agent.

Providers: The Voice Infrastructure

Providers handle the actual audio - WebRTC media servers, transcription, and TTS streaming.

LiveKit

LiveKit is an open-source, WebRTC-based media server. Unpod’s real-time voice pipeline runs on LiveKit.
  • Sub-300ms end-to-end latency
  • Can be self-hosted (cost control at scale)
  • Supports SIP trunking for PSTN connectivity
  • Best for: developers who want full control, self-hosted deployments

Vapi

Vapi is a hosted voice AI infrastructure platform.
  • Fully managed - no infrastructure to run
  • Built-in SIP trunking and number management
  • Simplified setup for faster time to production
  • Best for: teams that want managed infra without ops overhead

Bridges: The Routing Layer

A Bridge is a named configuration that connects:
  • One provider (LiveKit or Vapi)
  • One or more agents
  • One or more phone numbers
Think of it as a switchboard. When a call arrives at a number, the bridge decides which agent handles it.

Creating a Bridge via Dashboard

Go to Dev Platform → Telephony → Bridges → Create Bridge:

Creating a Bridge via API

A bridge is created with just a name and slug. Attach a provider afterward with the connect-provider endpoint (POST /api/v2/platform/telephony/bridges/{slug}/connect-provider/).

Phone Numbers

Unpod provisions real phone numbers through your connected SIP provider. Numbers are then assigned to bridges.

Number Types

Listing Your Numbers

Numbers are provisioned through your connected SIP provider (via the Dashboard or your provider’s portal), then attached to trunks/bridges. The API exposes numbers as read-only - list them with:
To attach numbers to a trunk, use the attach-numbers endpoint (POST /api/v2/platform/telephony/trunks/{id}/attach-numbers/). Once assigned to a bridge, a number is active and routed.

Call Flow: What Happens on an Inbound Call

  1. Caller dials your number
  2. SIP provider receives the call, looks up the number’s bridge assignment
  3. Bridge routes call to the configured provider (LiveKit/Vapi)
  4. Provider streams audio to the Unpod voice pipeline
  5. Voice pipeline runs: STT → LLM (with your agent config) → TTS
  6. Audio streams back to caller in real time
  7. Call ends, transcript and metadata written to Call Logs
Total setup latency target: under 300ms from first word to agent response start.

Outbound Calls

For outbound (agent-initiated) calls, create a Task via API:
Tasks are scoped to a space (space_token in the path) and take the agent pilot handle plus a documents array of contacts. Unpod dials each number through the space’s bridge, and the agent begins the conversation. See the full create-task reference.

Multi-Agent Routing

One bridge can route to different agents based on custom logic. Use the API to update bridge routing dynamically:
The bridge PATCH endpoint updates bridge fields such as name. To change which provider/agent a bridge routes to, use the connect-provider / disconnect-provider endpoints. Combine this with your own IVR or pre-call webhook to build intelligent call routing before the AI agent picks up.

Debugging Common Issues


What’s Next

Telephony API Reference

Full API reference for bridges, numbers, and providers.

Dev Platform: Telephony

Dashboard walkthrough for telephony setup.

Providers Overview

Configure and manage voice infrastructure providers.

Create a Task (Outbound Call)

Trigger outbound AI calls via API.