call_sid. This page is the control plane for that object: place a
call, look it up, move it, and end it. To move audio in and out of a live call,
see the audio bridge.
These operations are exposed through the Voice SDK (
TeleQuickClient),
not a hand-written REST surface. Under the hood each call maps to a typed
control-plane RPC (voice.calls.*); the SDK carries your API key and org id,
and the control-plane API relays the op to the engine over a correlated control
channel. Address calls through the SDK — there is no separately documented
POST /calls REST endpoint to curl.Construct the client
Every calls operation hangs off aTeleQuickClient instance scoped to one
org. Construct it once and reuse it.
- TypeScript
- Python
- Go
- Rust
Originate a call
calls.originate dials to from from over the trunk you name, and — if you
pass an agent — the engine attaches the voice agent automatically the moment
the far end answers. You get back a Call (below) as soon as the request is
accepted; watch status (or the call-lifecycle events)
to follow it from dialing to in_progress.
Request
Destination in E.164 (e.g.
+15551234567).Caller-ID presented on the outbound leg, in E.164. Must be a number your trunk
is allowed to present.
The trunk to originate on. Trunks are provisioned in the console — see
SIP trunking.
Optional agent id. When set, the engine binds this server-side voice agent to
the call on answer and wires the audio bridge end-to-end, so you don’t open one
yourself. Omit it to originate a bare call and drive the audio yourself.
Seconds to ring before giving up (the call then lands in
no_answer). The
control plane clamps this to 5..120.- TypeScript
- Python
- Go
- Rust
The Call object
originate and get both return a Call. These fields are the whole object —
there are no video codecs or track lists here; audio lives on the bridge.
The
call_sid — the universal key. Use it to open the audio bridge, attach
an agent, transfer, hang up, and to join CDRs, recordings, and telemetry.One of
dialing, ringing, in_progress, completed, failed, no_answer.Destination number (E.164).
Caller-ID presented (E.164). In the Python SDK this attribute is
from_.ISO-8601 timestamp for when the call was created.
The trunk the call is on. Absent for calls with no trunk association.
The bound agent id, if one was attached (at originate or later via
agents.attach).Get a call
calls.get fetches the current Call snapshot by sid. Use it to poll status
after an originate, or to hydrate a call you learned about from a webhook or the
lifecycle stream.
The
call_sid to look up.- TypeScript
- Python
- Go
- Rust
get returns a point-in-time snapshot; it does not stream. For live status
without polling, consume call-lifecycle events
or wire up webhooks.Transfer a call
call.transfer moves a connected call. Pass exactly one of:
A PSTN number (E.164) to forward the call to. This drives a SIP transfer
(
REFER) on the caller leg.An agent id to re-attach the call to a different server-side agent, instead of
forwarding it off-net.
- TypeScript
- Python
- Go
- Rust
Hang up a call
call.hangup tears down the dialog and both media legs. It emits the cleared
lifecycle event (with a Q.850 cause and duration) and finalizes the CDR.
- TypeScript
- Python
- Go
- Rust
End-to-end
Track status
Poll
calls.get, or subscribe to lifecycle events, until status reaches
in_progress (or no_answer / failed).Act on the live call
Move audio with the audio bridge,
transfer, or attach a different
agent mid-call.
Related
Audio bridge
Move caller and agent audio in and out of a live call over MoQT.
Agents API
Bind or swap a server-side voice agent on a call.
Call lifecycle
Every state a call moves through, and the events you can subscribe to.
Outbound dialing
Single originate, paced campaigns, and the dialer model.