Overview
The platform telephony plane (client.telephony.*) maps your phone numbers to
voice agents on backend-core’s /api/v2/platform/telephony/* surface. The
primary flow is attach a number to an agent — what telephony calls the
Leg-B termination (Unpod’s SuperSBC routes the inbound call through to your
agent on LiveKit).
You list your org’s numbers, then attach one or many to an agent. The
underlying voice bridge is resolved for you (hidden) — you work with numbers and
agents, not bridges.
This plane (
client.telephony.*) is distinct from the Speech Stack management
plane at client.numbers / client.trunks. The
telephony plane is Org-Handle-scoped and requires proxy/JWT auth — it is not
reachable in direct/Bearer mode.Concepts
Authenticate
The telephony plane is org-scoped. Authenticate with a JWT and your org handle:List Numbers
Number fields
Every verb on this plane takes the E.164 number — the internal id is not exposed.Attach Numbers to an Agent
Map one or more numbers to an agent by E.164 number (not id — Django resolves it). The bridge is resolved automatically; each number reports its own outcome (partial-success), so one bad number never fails the rest.Result fields
Each
NumberResult:
The agent attach returns the per-number lifecycle — there is no carrier
origin_endpoint. That belongs to the BYO-carrier (Leg-A) path below.agent_id is optional
Omit agent_id to wire a number for agent use without binding an agent yet —
bind one later by calling attach again with the same number and an agent_id:
Attach to a pipe instead of an agent
Passattach_type="pipeline" with a pipe_id to terminate the number on a
Speech Pipe rather than an agent. attach_type defaults to "agent".
Detach Numbers
Release numbers by E.164 number — the inverse ofattach. The termination,
agent, and pipe are read from the stored record. The number is released, not
deleted, so it stays available for a later re-attach.
Check the Lifecycle
Bring Your Own Carrier (Leg A) — Future / Beta
Bringing your own SIP carrier (client.telephony.trunks.*) wires the Leg-A
carrier leg. Today that leg is the hardcoded SuperSBC default, so this surface is
future/beta — prefer the agent attach above for production. When enabled, the
flow is: create a trunk, attach numbers, and point your carrier at the returned
origin endpoint.
Common Patterns
Attach the first available number to an agent
Attach many numbers to one agent
Next Steps
Agents
Build the agent your numbers route to.
Numbers
Acquire and manage numbers from the dashboard.