Send call commands
Authentication
Request
Update a call in progress — cancel, complete, or redirect the SWML flow.
State-transition rules:
status: canceledis only valid while the leg isqueuedorringing.status: completedis only valid while the leg isanswered(or in-progress).- Supplying
urlorswml(redirect) is only valid while the leg isanswered. - Calls in terminal states (
busy,failed,no-answer,canceled,completed) cannot be updated.
Play media (audio files, text-to-speech, silence, or ringtones) on an active call.
The HTTP response confirms the command was accepted. Playback lifecycle
is delivered asynchronously via the status_url webhook, with payloads
of the form {control_id, call_id, node_id, state} where state is one
of playing, paused, finished, or error.
Starts recording an active call. The HTTP response returns the call leg — the recording URL
is not included. Recording runs asynchronously; provide status_url to receive a webhook when
the recording finishes (with the final URL), or query the call’s events endpoint.
Collect user input (DTMF digits, speech, or both) on an active call.
At least one of digits or speech must be provided; requests missing
both return 400. Results are delivered asynchronously via the status_url
webhook. Digit events have the shape {control_id, call_id, node_id, result: {type:"digit", params: {digits, terminator}}}
and speech events {..., result: {type:"speech", params: {text, confidence}}}.
When start_input_timers is false, the initial_timeout clock does not
start until you send calling.collect.start_input_timers for the same
control_id.
Start detection (answering machine, fax tone, or DTMF digits) on an active call.
Detection runs asynchronously up to timeout seconds. Results are delivered
via the status_url webhook.
Capture audio from an active call and stream it to an external destination.
Audio is streamed via RTP (to a public IP/port) or WebSocket (to a ws:///wss:// URI).
Stop the tap with calling.tap.stop using the same control_id.
Stream call audio to an external WebSocket endpoint.
Audio is sent to a wss:// URL; custom_parameters pass through to the
endpoint as connection metadata. Stream lifecycle webhooks are delivered to
status_url (default method POST). Stop the stream with
calling.stream.stop using the same control_id.
Enable noise reduction on an active call. Denoise is per-call (no
control_id); a call has at most one active denoise filter. Use
calling.denoise.stop to disable it.
Response
Returned when the call is a Fabric subscriber device leg. The status field is always null for this type.