VSI
Last updated August 14, 2026
WebSocket protocol for real-time event streaming and command dispatch on /v1/vsi. All frames are JSON text. The server sends a connected frame on connect, then event frames whose shape is identical to webhook payloads (see openapi.yaml x-webhooks). Clients may issue commands at any time; each command receives a matching <command>.result or error frame echoing the request_id.
This file is generated from internal/api/vsi_meta.go — every VSI command and every event in internal/events MUST be present in the registries there or this spec is incomplete.
Connection & framing
Every frame is a JSON text message with a type field. The server sends connected first; thereafter it pushes event frames and replies to commands. Each command may carry a request_id that is echoed on the matching <command>.result or error frame so clients can correlate replies.
connected — First frame the server sends after the WebSocket upgrade completes. Carries no data.
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "connected" |
error — Generic error frame for invalid JSON, unknown command types, or command handler failures. Echoes `request_id` when the offending message had one. `data` carries `{code, message}`.
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "error" |
request_id | string | optional | |
data | object | required | |
code | integer | required | |
message | string | required |
Commands (101) client → server
List all active legs
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_legs" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | null | optional | No payload. |
Reply
list_legs.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_legs.result" |
request_id | string | optional | |
data | array[object] | optional |
…or an error frame echoing request_id with {code, message}.
Get a single leg by id
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "get_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
get_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "get_leg.result" |
request_id | string | optional | |
data | object | optional | See LegView |
…or an error frame echoing request_id with {code, message}.
Originate an outbound leg
Originates an outbound leg, mirroring POST /v1/legs, and returns the leg view. Supports all leg types: "sip", "websocket", "whatsapp", and "livekit_room". For "livekit_room", custom headers come from the request's headers map (there is no HTTP request over the WebSocket).
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "create_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | See CreateLegRequest |
Reply
create_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "create_leg.result" |
request_id | string | optional | |
data | object | optional | See LegView |
…or an error frame echoing request_id with {code, message}.
Answer a ringing inbound leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "answer_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
speech_detection | boolean | optional | |
codec | string | optional | |
streams | array[object] | optional | |
room_id | string | optional | |
role | string | optional |
Reply
answer_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "answer_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Hang up a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
reason | string | optional |
Reply
delete_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Mute a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "mute_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
mute_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "mute_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Unmute a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "unmute_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
unmute_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "unmute_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Deafen a leg (stop receiving room audio)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "deaf_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
deaf_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "deaf_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Undeafen a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "undeaf_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
undeaf_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "undeaf_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Put a SIP leg on hold
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "hold_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
hold_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "hold_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Resume a held SIP leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "unhold_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
unhold_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "unhold_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Send DTMF digits on a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "send_leg_dtmf" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
digits | string | required |
Reply
send_leg_dtmf.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "send_leg_dtmf.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Enable DTMF reception
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_leg_dtmf" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
accept_leg_dtmf.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_leg_dtmf.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Disable DTMF reception
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "reject_leg_dtmf" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
reject_leg_dtmf.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "reject_leg_dtmf.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Send Real-Time Text (T.140) on a SIP leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "send_leg_rtt" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
text | string | required |
Reply
send_leg_rtt.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "send_leg_rtt.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Enable RTT reception
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_leg_rtt" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
accept_leg_rtt.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_leg_rtt.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Disable RTT reception
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "reject_leg_rtt" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
reject_leg_rtt.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "reject_leg_rtt.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Establish a WebRTC leg via SDP offer/answer
Accepts a browser SDP offer, allocates a peer connection, returns the local SDP answer plus the new leg id. Subsequent ICE candidates from the browser are delivered via webrtc_add_candidate; server-side candidates are drained via webrtc_get_candidates.
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "webrtc_offer" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
sdp | string | required | |
app_id | string | optional |
Reply
webrtc_offer.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "webrtc_offer.result" |
request_id | string | optional | |
data | object | optional | |
leg_id | string | required | |
sdp | string | required |
…or an error frame echoing request_id with {code, message}.
Add a remote ICE candidate to a WebRTC leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "webrtc_add_candidate" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
candidate | object | required | |
candidate | string | required | |
sdpMid | string | required | |
sdpMLineIndex | integer | required | |
usernameFragment | string | required |
Reply
webrtc_add_candidate.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "webrtc_add_candidate.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Drain server-gathered ICE candidates for a WebRTC leg
Returns any local ICE candidates that have been gathered since the last call, plus a done flag indicating ICE gathering has completed. Clients should poll until done is true.
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "webrtc_get_candidates" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
webrtc_get_candidates.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "webrtc_get_candidates.result" |
request_id | string | optional | |
data | object | optional | |
candidates | array[object] | required | |
candidate | string | required | |
sdpMid | string | required | |
sdpMLineIndex | integer | required | |
usernameFragment | string | required | |
done | boolean | required |
…or an error frame echoing request_id with {code, message}.
List all rooms
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_rooms" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | null | optional | No payload. |
Reply
list_rooms.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_rooms.result" |
request_id | string | optional | |
data | array[object] | optional |
…or an error frame echoing request_id with {code, message}.
Get a single room by id
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "get_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
get_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "get_room.result" |
request_id | string | optional | |
data | object | optional | See RoomView |
…or an error frame echoing request_id with {code, message}.
Create a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "create_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | See CreateRoomRequest |
Reply
create_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "create_room.result" |
request_id | string | optional | |
data | object | optional | See RoomView |
…or an error frame echoing request_id with {code, message}.
Delete a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
delete_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_room.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Add or move a leg into a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "add_leg_to_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
leg_id | string | required | |
mute | boolean | optional | |
deaf | boolean | optional | |
accept_dtmf | boolean | optional | |
role | string | optional |
Reply
add_leg_to_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "add_leg_to_room.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
room_id | string | required | |
leg_id | string | required |
…or an error frame echoing request_id with {code, message}.
Remove a leg from a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "remove_leg_from_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
leg_id | string | required |
Reply
remove_leg_from_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "remove_leg_from_room.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Join two rooms' mixers
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_create" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
bridge_id | string | optional | |
peer_room_id | string | required | |
direction | string | optional |
Reply
bridge_create.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_create.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
room_id | string | required | |
direction | string | required | |
sample_rate | integer | required |
…or an error frame echoing request_id with {code, message}.
List bridges involving a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_list" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required |
Reply
bridge_list.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_list.result" |
request_id | string | optional | |
data | array[object] | optional | |
id | string | required | |
room_id | string | required | |
direction | string | required | |
sample_rate | integer | required |
…or an error frame echoing request_id with {code, message}.
Get a bridge involving a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_get" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
bridge_id | string | required |
Reply
bridge_get.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_get.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
room_id | string | required | |
direction | string | required | |
sample_rate | integer | required |
…or an error frame echoing request_id with {code, message}.
Change a bridge's direction
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_update" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
bridge_id | string | required | |
direction | string | required |
Reply
bridge_update.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_update.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
room_id | string | required | |
direction | string | required | |
sample_rate | integer | required |
…or an error frame echoing request_id with {code, message}.
Tear down a bridge
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_delete" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
bridge_id | string | required |
Reply
bridge_delete.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "bridge_delete.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Get a room's audio routing matrix
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_routing_get" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
room_routing_get.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_routing_get.result" |
request_id | string | optional | |
data | object | optional | |
matrix | object | required |
…or an error frame echoing request_id with {code, message}.
Replace a room's audio routing matrix
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_routing_set" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
matrix | object | required |
Reply
room_routing_set.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_routing_set.result" |
request_id | string | optional | |
data | object | optional | |
matrix | object | required |
…or an error frame echoing request_id with {code, message}.
Update selected rows of a room's audio routing matrix
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_routing_update" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
room_id | string | required | |
updates | array[object] | required | |
listener_role | string | required | |
sources | array[string] | required |
Reply
room_routing_update.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_routing_update.result" |
request_id | string | optional | |
data | object | optional | |
matrix | object | required |
…or an error frame echoing request_id with {code, message}.
Change a leg's routing role (recomputes the room matrix if the leg is in a room)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "set_leg_role" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
role | string | required |
Reply
set_leg_role.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "set_leg_role.result" |
request_id | string | optional | |
data | object | optional | See LegView |
…or an error frame echoing request_id with {code, message}.
List a SIP leg's negotiated audio streams
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_list" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_stream_list.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_list.result" |
request_id | string | optional | |
data | array[object] | optional | |
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
…or an error frame echoing request_id with {code, message}.
Get one of a SIP leg's audio streams
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_get" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
stream_id | string | required |
Reply
leg_stream_get.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_get.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
…or an error frame echoing request_id with {code, message}.
Negotiate an additional m=audio section on a live dialog via re-INVITE
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_add" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
direction | string | optional | |
lang | string | optional | |
content | string | optional | |
label | string | optional | |
room_id | string | optional | |
role | string | optional |
Reply
leg_stream_add.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_add.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
…or an error frame echoing request_id with {code, message}.
Change one of a leg's audio streams' routing role in place
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_update" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
stream_id | string | required | |
role | string | optional |
Reply
leg_stream_update.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_update.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
…or an error frame echoing request_id with {code, message}.
Disable one of a leg's audio streams with a port-0 re-INVITE
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_remove" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
stream_id | string | required |
Reply
leg_stream_remove.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_remove.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Mix one of a leg's audio streams into a room (may differ from the leg's own room)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_attach_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
stream_id | string | required | |
room_id | string | required | |
role | string | optional |
Reply
leg_stream_attach_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_attach_room.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
…or an error frame echoing request_id with {code, message}.
Remove one of a leg's audio streams from whichever room mixes it
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_detach_room" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
leg_id | string | required | |
stream_id | string | required |
Reply
leg_stream_detach_room.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stream_detach_room.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
…or an error frame echoing request_id with {code, message}.
Fork a single call to an external SIPREC recording server
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_siprec_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
srs_uri | string | required | |
leg_ids | array[string] | optional | |
session_id | string | optional | |
app_id | string | optional | |
auth_username | string | optional | |
auth_password | string | optional | |
headers | object | optional |
Reply
leg_siprec_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_siprec_start.result" |
request_id | string | optional | |
data | object | optional | See LegView |
…or an error frame echoing request_id with {code, message}.
Fork a room's participants to an external SIPREC recording server
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_siprec_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
srs_uri | string | required | |
leg_ids | array[string] | optional | |
session_id | string | optional | |
app_id | string | optional | |
auth_username | string | optional | |
auth_password | string | optional | |
headers | object | optional |
Reply
room_siprec_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_siprec_start.result" |
request_id | string | optional | |
data | object | optional | See LegView |
…or an error frame echoing request_id with {code, message}.
Get an inbound SIPREC recording session's participants, streams and metadata
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "siprec_get" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
siprec_get.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "siprec_get.result" |
request_id | string | optional | |
data | object | optional | |
leg_id | string | required | |
session_id | string | optional | |
data_mode | string | optional | |
room_id | string | optional | |
participants | array[object] | required | |
participant_id | string | required | |
aor | string | optional | |
name | string | optional | |
streams | array[object] | required | |
leg_stream_id | string | required | |
mid | string | optional | |
label | string | optional | |
direction | string | optional | |
codec | string | optional | |
room_id | string | optional | |
role | string | optional | |
participant_id | string | optional | |
participant_aor | string | optional | |
participant_name | string | optional | |
metadata | string | optional |
…or an error frame echoing request_id with {code, message}.
Send a 180 Ringing on a SIP inbound leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_ring" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_ring.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_ring.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Enable early media (183 Session Progress) on a SIP inbound leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_early_media" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
codec | string | optional |
Reply
leg_early_media.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_early_media.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Start Answering Machine Detection on a connected SIP leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_amd_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
initial_silence_timeout | integer | optional | |
greeting_duration | integer | optional | |
after_greeting_silence | integer | optional | |
total_analysis_time | integer | optional | |
minimum_word_length | integer | optional | |
beep_timeout | integer | optional |
Reply
leg_amd_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_amd_start.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Start recording a leg (stereo when in a room or SIP, mono otherwise)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
storage | string | required | |
multi_channel | boolean | required | |
s3_bucket | string | required | |
s3_region | string | required | |
s3_endpoint | string | required | |
s3_prefix | string | required | |
s3_access_key | string | required | |
s3_secret_key | string | required | |
gcs_bucket | string | required | |
gcs_object_name_prefix | string | required | |
filename | string | required |
Reply
leg_record_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_start.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
file | string | required |
…or an error frame echoing request_id with {code, message}.
Start recording the full room mix (mono; multi_channel adds per-participant tracks)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
storage | string | required | |
multi_channel | boolean | required | |
s3_bucket | string | required | |
s3_region | string | required | |
s3_endpoint | string | required | |
s3_prefix | string | required | |
s3_access_key | string | required | |
s3_secret_key | string | required | |
gcs_bucket | string | required | |
gcs_object_name_prefix | string | required | |
filename | string | required |
Reply
room_record_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_start.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
file | string | required |
…or an error frame echoing request_id with {code, message}.
Pause a leg recording
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_pause" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_record_pause.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_pause.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Resume a paused leg recording
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_resume" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_record_resume.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_resume.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Stop a leg recording
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_record_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_record_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
file | string | required |
…or an error frame echoing request_id with {code, message}.
Stop a room recording
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
room_record_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
file | string | required | |
multi_channel_file | string | optional | |
channels | object | optional | |
omitted_legs | array[string] | optional |
…or an error frame echoing request_id with {code, message}.
Pause a room recording
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_pause" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
room_record_pause.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_pause.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Resume a paused room recording
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_resume" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
room_record_resume.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_record_resume.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Start audio playback on a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_play_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
url | string | required | |
tone | string | required | |
mime_type | string | required | |
repeat | integer | required | |
volume | integer | required |
Reply
leg_play_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_play_start.result" |
request_id | string | optional | |
data | object | optional | |
playback_id | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Stop a leg playback
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_play_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
playback_id | string | required |
Reply
leg_play_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_play_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Start audio playback on a room mix
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_play_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
url | string | required | |
tone | string | required | |
mime_type | string | required | |
repeat | integer | required | |
volume | integer | required |
Reply
room_play_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_play_start.result" |
request_id | string | optional | |
data | object | optional | |
playback_id | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Stop a room playback
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_play_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
playback_id | string | required |
Reply
room_play_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_play_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Adjust the volume of an active leg playback
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_play_volume" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
playback_id | string | required | |
volume | integer | required |
Reply
leg_play_volume.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_play_volume.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Adjust the volume of an active room playback
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_play_volume" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
playback_id | string | required | |
volume | integer | required |
Reply
room_play_volume.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_play_volume.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Start speech-to-text on a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stt_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
language | string | required | |
partial | boolean | required | |
provider | string | optional | |
api_key | string | optional | |
model | string | optional | |
keyterms | array[string] | optional | |
endpointing | integer | optional | |
utterance_end_ms | integer | optional | |
eager_eot_threshold | number | optional | |
eot_threshold | number | optional | |
eot_timeout_ms | integer | optional | |
language_hints | array[string] | optional |
Reply
leg_stt_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stt_start.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
leg_id | string | required |
…or an error frame echoing request_id with {code, message}.
Start speech-to-text on every participant of a room (auto-extends to legs that join later)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_stt_start" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
language | string | required | |
partial | boolean | required | |
provider | string | optional | |
api_key | string | optional | |
model | string | optional | |
keyterms | array[string] | optional | |
endpointing | integer | optional | |
utterance_end_ms | integer | optional | |
eager_eot_threshold | number | optional | |
eot_threshold | number | optional | |
eot_timeout_ms | integer | optional | |
language_hints | array[string] | optional |
Reply
room_stt_start.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_stt_start.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
room_id | string | required | |
leg_ids | array[string] | required |
…or an error frame echoing request_id with {code, message}.
Stop speech-to-text on a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stt_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_stt_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stt_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Stop speech-to-text on a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_stt_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
room_stt_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_stt_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Flush the speech-to-text buffer on a leg and emit a final transcript without stopping STT
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stt_finalize" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_stt_finalize.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_stt_finalize.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Synthesize speech and play it on a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
text | string | required | |
voice | string | required | |
model_id | string | required | |
language | string | optional | |
prompt | string | optional | |
volume | integer | required | |
provider | string | optional | |
api_key | string | optional |
Reply
leg_tts.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts.result" |
request_id | string | optional | |
data | object | optional | |
tts_id | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Synthesize speech and hold it for a later commit
Stages a speculative reply: the audio is synthesized and buffered but not played, so that committing it starts playback with no synthesis delay. Use with the eager_end_of_turn stt.turn event to begin generating a reply before the caller has finished speaking, then commit on end_of_turn or discard on turn_resumed. A tts.staged event reports when the audio is ready. Staged utterances are dropped after TTS_PREFLIGHT_TTL or when the leg ends.
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts_preflight" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
text | string | required | |
voice | string | required | |
model_id | string | required | |
language | string | optional | |
prompt | string | optional | |
volume | integer | required | |
provider | string | optional | |
api_key | string | optional |
Reply
leg_tts_preflight.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts_preflight.result" |
request_id | string | optional | |
data | object | optional | |
tts_id | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Play a staged TTS utterance
Starts playback of an utterance staged by leg_tts_preflight. Returns immediately, before synthesis has necessarily finished; failure is reported asynchronously on tts.error, exactly as for leg_tts. Once committed, stop it with leg_play_stop using the same tts_id.
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts_commit" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
tts_id | string | required |
Reply
leg_tts_commit.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts_commit.result" |
request_id | string | optional | |
data | object | optional | |
tts_id | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Drop a staged TTS utterance without playing it
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts_discard" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
tts_id | string | required |
Reply
leg_tts_discard.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_tts_discard.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Synthesize speech and play it into a room mix
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_tts" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
text | string | required | |
voice | string | required | |
model_id | string | required | |
language | string | optional | |
prompt | string | optional | |
volume | integer | required | |
provider | string | optional | |
api_key | string | optional |
Reply
room_tts.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_tts.result" |
request_id | string | optional | |
data | object | optional | |
tts_id | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Initiate a SIP REFER transfer (blind or attended)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_transfer" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
target | string | required | |
replaces_leg_id | string | optional |
Reply
leg_transfer.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_transfer.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Accept a parked inbound REFER (send 202 + NOTIFY 100 Trying)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_transfer" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
accept_transfer.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_transfer.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Send an interim sipfrag NOTIFY (e.g. 180 Ringing) on an accepted inbound transfer
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "progress_transfer" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
status_code | integer | required | |
reason | string | optional |
Reply
progress_transfer.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "progress_transfer.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Terminate an accepted inbound transfer with a final sipfrag NOTIFY (200 OK or failure)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "complete_transfer" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
success | boolean | required | |
status_code | integer | optional | |
reason | string | optional |
Reply
complete_transfer.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "complete_transfer.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Reject a parked (not-yet-accepted) inbound REFER (603 by default)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "decline_transfer" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
code | integer | optional | |
reason | string | optional |
Reply
decline_transfer.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "decline_transfer.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Attach an ElevenLabs Conversational AI agent to a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_elevenlabs" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
agent_id | string | required | |
first_message | string | optional | |
language | string | optional | |
dynamic_variables | object | optional | |
api_key | string | optional |
Reply
leg_agent_elevenlabs.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_elevenlabs.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
leg_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach a VAPI agent to a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_vapi" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
assistant_id | string | required | |
first_message | string | optional | |
variable_values | object | optional | |
api_key | string | optional |
Reply
leg_agent_vapi.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_vapi.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
leg_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach a Pipecat bot to a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_pipecat" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
websocket_url | string | required |
Reply
leg_agent_pipecat.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_pipecat.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
leg_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach a Deepgram Voice Agent to a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_deepgram" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
settings | object | optional | |
greeting | string | optional | |
language | string | optional | |
api_key | string | optional |
Reply
leg_agent_deepgram.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_deepgram.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
leg_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach an ElevenLabs Conversational AI agent to a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_elevenlabs" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
agent_id | string | required | |
first_message | string | optional | |
language | string | optional | |
dynamic_variables | object | optional | |
api_key | string | optional |
Reply
room_agent_elevenlabs.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_elevenlabs.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
room_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach a VAPI agent to a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_vapi" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
assistant_id | string | required | |
first_message | string | optional | |
variable_values | object | optional | |
api_key | string | optional |
Reply
room_agent_vapi.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_vapi.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
room_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach a Pipecat bot to a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_pipecat" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
websocket_url | string | required |
Reply
room_agent_pipecat.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_pipecat.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
room_id | string | required |
…or an error frame echoing request_id with {code, message}.
Attach a Deepgram Voice Agent to a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_deepgram" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
settings | object | optional | |
greeting | string | optional | |
language | string | optional | |
api_key | string | optional |
Reply
room_agent_deepgram.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_deepgram.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required | |
room_id | string | required |
…or an error frame echoing request_id with {code, message}.
Detach the agent attached to a leg
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
leg_agent_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Detach the agent attached to a room
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_stop" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
room_agent_stop.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_stop.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Inject a text message into a leg agent session
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_message" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
message | string | required |
Reply
leg_agent_message.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "leg_agent_message.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Inject a text message into a room agent session
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_message" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
message | string | required |
Reply
room_agent_message.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "room_agent_message.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
List active SIP AOR registrations
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_sip_registrations" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | null | optional | No payload. |
Reply
list_sip_registrations.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_sip_registrations.result" |
request_id | string | optional | |
data | object | optional | |
bindings | array[object] | required | |
aor | string | required | |
contact | string | required | |
socket | string | required | |
transport | string | required | |
user_agent | string | optional | |
call_id | string | optional | |
app_id | string | optional | |
created_at | string | required | |
last_refresh | string | required | |
expires_at | string | required | |
granted_expires_seconds | integer | required |
…or an error frame echoing request_id with {code, message}.
Force-unbind an AOR (or a single contact under it)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_sip_registration" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
aor | string | required | |
contact | string | optional |
Reply
delete_sip_registration.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_sip_registration.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Send a 401 digest challenge on a ringing inbound SIP leg (INVITE)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "challenge_leg" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
realm | string | required | |
username | string | optional | |
password | string | optional | |
ha1 | string | optional | |
algorithm | string | optional | |
qop | array[string] | optional | |
max_expires | integer | optional |
Reply
challenge_leg.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "challenge_leg.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Send a 401 digest challenge for a parked inbound REGISTER attempt
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "challenge_registration" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
realm | string | required | |
username | string | optional | |
password | string | optional | |
ha1 | string | optional | |
algorithm | string | optional | |
qop | array[string] | optional | |
max_expires | integer | optional |
Reply
challenge_registration.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "challenge_registration.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Accept a parked inbound REGISTER attempt (bind and reply 200 OK)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_registration" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
max_expires | integer | optional |
Reply
accept_registration.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "accept_registration.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Reject a parked inbound REGISTER attempt (reply 403 by default)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "reject_registration" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required | |
code | integer | optional | |
reason | string | optional |
Reply
reject_registration.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "reject_registration.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Create an outbound SIP trunk (REGISTER or static peering)
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "create_sip_trunk" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
type | string | required | |
app_id | string | optional | |
sip_register | object | optional | |
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
password | string | required | |
contact_user | string | optional | |
expires_seconds | integer | optional | |
ip_ip | object | optional | |
peer_uri | string | optional |
Reply
create_sip_trunk.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "create_sip_trunk.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
type | string | required | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
List configured SIP trunks
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_sip_trunks" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | null | optional | No payload. |
Reply
list_sip_trunks.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "list_sip_trunks.result" |
request_id | string | optional | |
data | object | optional | |
trunks | array[object] | required | |
id | string | required | |
type | string | required | |
app_id | string | optional | |
status | string | required | |
last_error | string | optional | |
created_at | string | required | |
sip_register | object | optional | |
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
contact_uri | string | optional | |
requested_expires_seconds | integer | required | |
granted_expires_seconds | integer | optional | |
last_registered_at | string | optional | |
next_refresh_at | string | optional | |
call_id | string | optional | |
cseq | integer | optional | |
source_address | string | optional | |
ip_ip | object | optional | |
peer_uri | string | optional |
…or an error frame echoing request_id with {code, message}.
Get a single SIP trunk
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "get_sip_trunk" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
get_sip_trunk.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "get_sip_trunk.result" |
request_id | string | optional | |
data | object | optional | |
id | string | required | |
type | string | required | |
app_id | string | optional | |
status | string | required | |
last_error | string | optional | |
created_at | string | required | |
sip_register | object | optional | |
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
contact_uri | string | optional | |
requested_expires_seconds | integer | required | |
granted_expires_seconds | integer | optional | |
last_registered_at | string | optional | |
next_refresh_at | string | optional | |
call_id | string | optional | |
cseq | integer | optional | |
source_address | string | optional | |
ip_ip | object | optional | |
peer_uri | string | optional |
…or an error frame echoing request_id with {code, message}.
Unregister and remove a SIP trunk
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_sip_trunk" |
request_id | string | optional | Echoed back on the matching .result/error frame; clients use it to correlate. |
payload | object | optional | |
id | string | required |
Reply
delete_sip_trunk.result — success reply
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "delete_sip_trunk.result" |
request_id | string | optional | |
data | object | optional | |
status | string | required |
…or an error frame echoing request_id with {code, message}.
Optional client keepalive reply to a `ping`. Currently a no-op on the server side.
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "pong" |
Client-initiated graceful close. The server stops the recv loop and closes the connection.
Command frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "stop" |
Events (70) server → client
SIP call ringing (inbound or outbound)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.ringing. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.ringing payload envelope.
Outbound leg received 183 Session Progress with SDP; media pipeline active
Event payload shape is documented in openapi.yaml under x-webhooks/leg.early_media. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.early_media payload envelope.
Leg answered/connected
Event payload shape is documented in openapi.yaml under x-webhooks/leg.connected. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.connected payload envelope.
Leg hung up (CDR-style nested structure)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.disconnected. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.disconnected payload envelope.
Leg added to a room
Event payload shape is documented in openapi.yaml under x-webhooks/leg.joined_room. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.joined_room payload envelope.
Leg removed from a room
Event payload shape is documented in openapi.yaml under x-webhooks/leg.left_room. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.left_room payload envelope.
Leg muted
Event payload shape is documented in openapi.yaml under x-webhooks/leg.muted. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.muted payload envelope.
Leg unmuted
Event payload shape is documented in openapi.yaml under x-webhooks/leg.unmuted. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.unmuted payload envelope.
Leg deafened (stops receiving room audio)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.deaf. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.deaf payload envelope.
Leg undeafened (resumes receiving room audio)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.undeaf. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.undeaf payload envelope.
Leg put on hold (local or remote)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.hold. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.hold payload envelope.
Leg taken off hold (local or remote)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.unhold. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.unhold payload envelope.
An asynchronous leg command (202 Accepted) failed during execution
Event payload shape is documented in openapi.yaml under x-webhooks/leg.command_failed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.command_failed payload envelope.
An additional m=audio stream was negotiated on a live dialog
Event payload shape is documented in openapi.yaml under x-webhooks/leg.stream_added. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.stream_added payload envelope.
An audio stream was disabled with a port-0 re-INVITE; its m-line slot survives as a tombstone
Event payload shape is documented in openapi.yaml under x-webhooks/leg.stream_removed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.stream_removed payload envelope.
The peer refused an additional audio stream, or it could not be negotiated; the call is unaffected
Event payload shape is documented in openapi.yaml under x-webhooks/leg.stream_rejected. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.stream_rejected payload envelope.
An audio stream's media loop failed and the stream was torn down; the call continues on its remaining streams
Event payload shape is documented in openapi.yaml under x-webhooks/leg.stream_failed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.stream_failed payload envelope.
An audio stream was attached to or detached from a room (an empty room_id means detached)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.stream_room_changed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.stream_room_changed payload envelope.
An audio stream's routing role changed; the room's allow-sets were recomputed atomically
Event payload shape is documented in openapi.yaml under x-webhooks/leg.stream_role_changed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.stream_role_changed payload envelope.
An inbound SIPREC recording session was accepted; carries the participants and the stream-to-participant bindings
Event payload shape is documented in openapi.yaml under x-webhooks/siprec.session_started. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the siprec.session_started payload envelope.
A SIPREC recording session ended
Event payload shape is documented in openapi.yaml under x-webhooks/siprec.session_ended. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the siprec.session_ended payload envelope.
A SIPREC recording session's metadata document was updated on a re-INVITE
Event payload shape is documented in openapi.yaml under x-webhooks/siprec.metadata_updated. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the siprec.metadata_updated payload envelope.
A party joined the call being recorded by a SIPREC session
Event payload shape is documented in openapi.yaml under x-webhooks/siprec.participant_joined. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the siprec.participant_joined payload envelope.
A party left the call being recorded by a SIPREC session
Event payload shape is documented in openapi.yaml under x-webhooks/siprec.participant_left. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the siprec.participant_left payload envelope.
DTMF digit received
Event payload shape is documented in openapi.yaml under x-webhooks/dtmf.received. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the dtmf.received payload envelope.
Real-Time Text (T.140 / RFC 4103) chunk received from the remote
Event payload shape is documented in openapi.yaml under x-webhooks/rtt.received. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the rtt.received payload envelope.
Participant started speaking
Event payload shape is documented in openapi.yaml under x-webhooks/speaking.started. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the speaking.started payload envelope.
Participant stopped speaking
Event payload shape is documented in openapi.yaml under x-webhooks/speaking.stopped. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the speaking.stopped payload envelope.
Playback began
Event payload shape is documented in openapi.yaml under x-webhooks/playback.started. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the playback.started payload envelope.
Playback ended
Event payload shape is documented in openapi.yaml under x-webhooks/playback.finished. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the playback.finished payload envelope.
Playback failed
Event payload shape is documented in openapi.yaml under x-webhooks/playback.error. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the playback.error payload envelope.
TTS synthesis began playing
Event payload shape is documented in openapi.yaml under x-webhooks/tts.started. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the tts.started payload envelope.
TTS synthesis finished playing
Event payload shape is documented in openapi.yaml under x-webhooks/tts.finished. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the tts.finished payload envelope.
TTS synthesis or playback failed
Event payload shape is documented in openapi.yaml under x-webhooks/tts.error. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the tts.error payload envelope.
Preflight TTS finished synthesizing and is ready to commit
Event payload shape is documented in openapi.yaml under x-webhooks/tts.staged. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the tts.staged payload envelope.
Staged TTS was dropped without being played
Event payload shape is documented in openapi.yaml under x-webhooks/tts.discarded. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the tts.discarded payload envelope.
Recording began
Event payload shape is documented in openapi.yaml under x-webhooks/recording.started. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the recording.started payload envelope.
Recording ended
Event payload shape is documented in openapi.yaml under x-webhooks/recording.finished. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the recording.finished payload envelope.
Recording paused (audio replaced with silence)
Event payload shape is documented in openapi.yaml under x-webhooks/recording.paused. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the recording.paused payload envelope.
Recording resumed from a paused state
Event payload shape is documented in openapi.yaml under x-webhooks/recording.resumed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the recording.resumed payload envelope.
We sent a SIP REFER (transfer initiated by the operator)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.transfer_initiated. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.transfer_initiated payload envelope.
We received a SIP REFER from the peer; decide via accept_transfer/decline_transfer (unless SIP_REFER_AUTO_DIAL=true)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.transfer_requested. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.transfer_requested payload envelope.
Transfer progress reported via NOTIFY sipfrag
Event payload shape is documented in openapi.yaml under x-webhooks/leg.transfer_progress. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.transfer_progress payload envelope.
Transfer reached terminal 2xx
Event payload shape is documented in openapi.yaml under x-webhooks/leg.transfer_completed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.transfer_completed payload envelope.
Transfer failed (REFER rejected, sipfrag non-2xx, or local error)
Event payload shape is documented in openapi.yaml under x-webhooks/leg.transfer_failed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.transfer_failed payload envelope.
Room created
Event payload shape is documented in openapi.yaml under x-webhooks/room.created. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the room.created payload envelope.
Room deleted
Event payload shape is documented in openapi.yaml under x-webhooks/room.deleted. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the room.deleted payload envelope.
Two rooms' mixers were joined
Event payload shape is documented in openapi.yaml under x-webhooks/room.bridged. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the room.bridged payload envelope.
A bridge's audio flow direction changed
Event payload shape is documented in openapi.yaml under x-webhooks/room.bridge_updated. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the room.bridge_updated payload envelope.
A bridge was torn down
Event payload shape is documented in openapi.yaml under x-webhooks/room.unbridged. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the room.unbridged payload envelope.
The room's audio routing matrix changed
Event payload shape is documented in openapi.yaml under x-webhooks/room.routing_changed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the room.routing_changed payload envelope.
A leg's routing role changed
Event payload shape is documented in openapi.yaml under x-webhooks/leg.role_changed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the leg.role_changed payload envelope.
Speech-to-text transcript
Event payload shape is documented in openapi.yaml under x-webhooks/stt.text. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the stt.text payload envelope.
Speech-to-text turn boundary
Event payload shape is documented in openapi.yaml under x-webhooks/stt.turn. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the stt.turn payload envelope.
Agent connected to provider
Event payload shape is documented in openapi.yaml under x-webhooks/agent.connected. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the agent.connected payload envelope.
Agent session ended
Event payload shape is documented in openapi.yaml under x-webhooks/agent.disconnected. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the agent.disconnected payload envelope.
User speech transcribed by agent
Event payload shape is documented in openapi.yaml under x-webhooks/agent.user_transcript. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the agent.user_transcript payload envelope.
Agent generated a response
Event payload shape is documented in openapi.yaml under x-webhooks/agent.agent_response. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the agent.agent_response payload envelope.
Answering machine detection completed
Event payload shape is documented in openapi.yaml under x-webhooks/amd.result. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the amd.result payload envelope.
Voicemail beep tone detected after machine classification
Event payload shape is documented in openapi.yaml under x-webhooks/amd.beep. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the amd.beep payload envelope.
Inbound REGISTER surfaced for a challenge/accept/reject decision (auto-accepts on consult timeout)
Event payload shape is documented in openapi.yaml under x-webhooks/sip.registration_attempt. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the sip.registration_attempt payload envelope.
SIP AOR registration created or refreshed (one event per Contact)
Event payload shape is documented in openapi.yaml under x-webhooks/sip.registration_active. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the sip.registration_active payload envelope.
SIP AOR registration removed (TTL, explicit unregister, force-delete, or single-binding replacement)
Event payload shape is documented in openapi.yaml under x-webhooks/sip.registration_expired. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the sip.registration_expired payload envelope.
Outbound SIP trunk REGISTER accepted (initial or refresh)
Event payload shape is documented in openapi.yaml under x-webhooks/sip.outbound_registration_active. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the sip.outbound_registration_active payload envelope.
Outbound SIP trunk REGISTER failed (transport error, non-2xx response, or digest auth rejected)
Event payload shape is documented in openapi.yaml under x-webhooks/sip.outbound_registration_failed. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the sip.outbound_registration_failed payload envelope.
Outbound SIP trunk removed (DELETE, shutdown, or refresh failed past granted lifetime)
Event payload shape is documented in openapi.yaml under x-webhooks/sip.outbound_registration_expired. Full envelope: {type, timestamp, event_id, instance_id, ...event-specific fields}.
Event frame
Payload is the sip.outbound_registration_expired payload envelope.
First frame the server sends after the WebSocket upgrade completes. Carries no data.
Event frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "connected" |
Periodic application-level keepalive (every ~30 s), carrying a monotonic per-connection counter in `seq`. Clients may reply with `pong` or ignore.
Event frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "ping" |
seq | integer | required | Per-connection monotonic keepalive counter starting at 1; resets on reconnect. |
event_id | integer | optional | Deprecated alias for seq, kept for backwards compatibility. Unrelated to the per-event event_id on streamed event frames, which is a UUID string. Use seq. |
Sent when the per-connection event buffer overflowed. The accompanying `count` indicates how many events were dropped since the last notification. Clients should resync via REST after seeing this.
Event frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "events_dropped" |
count | integer | required | Number of events dropped since the last notification. |
Generic error frame for invalid JSON, unknown command types, or command handler failures. Echoes `request_id` when the offending message had one. `data` carries `{code, message}`.
Event frame
| Field | Type | Description | |
|---|---|---|---|
type | const | required | Value: "error" |
request_id | string | optional | |
data | object | required | |
code | integer | required | |
message | string | required |
Result & payload schemas
AsyncAPI-local schemas referenced by the command and event frames above. Shapes defined in the REST API (LegView, CreateLegRequest, …) link to the Schemas page; event payloads link to Events.
AddLegToRoomResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
room_id | string | required | |
leg_id | string | required |
AgentMessageResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
AgentStartLegResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
leg_id | string | required |
AgentStartRoomResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
room_id | string | required |
AgentStopResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
AnswerLegStream
| Field | Type | Description | |
|---|---|---|---|
room_id | string | optional | |
role | string | optional |
BridgeView
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
room_id | string | required | |
direction | string | required | |
sample_rate | integer | required |
ChannelInfo
| Field | Type | Description | |
|---|---|---|---|
channel | integer | required | |
start_ms | integer | required | |
end_ms | integer | required |
CreateTrunkRequest
| Field | Type | Description | |
|---|---|---|---|
type | string | required | |
app_id | string | optional | |
sip_register | object | optional | |
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
password | string | required | |
contact_user | string | optional | |
expires_seconds | integer | optional | |
ip_ip | object | optional | |
peer_uri | string | optional |
CreateTrunkResponse
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
type | string | required | |
status | string | required |
ICECandidateInit
| Field | Type | Description | |
|---|---|---|---|
candidate | string | required | |
sdpMid | string | required | |
sdpMLineIndex | integer | required | |
usernameFragment | string | required |
IPIPTrunkSpec
| Field | Type | Description | |
|---|---|---|---|
peer_uri | string | optional |
IPIPTrunkView
| Field | Type | Description | |
|---|---|---|---|
peer_uri | string | optional |
LegStreamView
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
mid | string | optional | |
index | integer | required | |
primary | boolean | required | |
state | string | required | |
direction | string | required | |
desired_direction | string | optional | |
codec | string | optional | |
sample_rate | integer | optional | |
local_port | integer | optional | |
remote_addr | string | optional | |
label | string | optional | |
content | string | optional | |
lang | string | optional | |
room_id | string | optional | |
role | string | optional |
PlaybackStartResult
| Field | Type | Description | |
|---|---|---|---|
playback_id | string | required | |
status | string | required |
PlaybackStopResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
RecordingPauseResumeResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
RecordingStartResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
file | string | required |
RecordingStopLegResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
file | string | required |
RecordingStopRoomResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
file | string | required | |
multi_channel_file | string | optional | |
channels | object | optional | |
omitted_legs | array[string] | optional |
RegistrationView
| Field | Type | Description | |
|---|---|---|---|
aor | string | required | |
contact | string | required | |
socket | string | required | |
transport | string | required | |
user_agent | string | optional | |
call_id | string | optional | |
app_id | string | optional | |
created_at | string | required | |
last_refresh | string | required | |
expires_at | string | required | |
granted_expires_seconds | integer | required |
RegistrationsResponse
| Field | Type | Description | |
|---|---|---|---|
bindings | array[object] | required | |
aor | string | required | |
contact | string | required | |
socket | string | required | |
transport | string | required | |
user_agent | string | optional | |
call_id | string | optional | |
app_id | string | optional | |
created_at | string | required | |
last_refresh | string | required | |
expires_at | string | required | |
granted_expires_seconds | integer | required |
RoomRoutingView
| Field | Type | Description | |
|---|---|---|---|
matrix | object | required |
RoutingRowUpdate
| Field | Type | Description | |
|---|---|---|---|
listener_role | string | required | |
sources | array[string] | required |
SIPRECParticipantView
| Field | Type | Description | |
|---|---|---|---|
participant_id | string | required | |
aor | string | optional | |
name | string | optional |
SIPRECSessionView
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
session_id | string | optional | |
data_mode | string | optional | |
room_id | string | optional | |
participants | array[object] | required | |
participant_id | string | required | |
aor | string | optional | |
name | string | optional | |
streams | array[object] | required | |
leg_stream_id | string | required | |
mid | string | optional | |
label | string | optional | |
direction | string | optional | |
codec | string | optional | |
room_id | string | optional | |
role | string | optional | |
participant_id | string | optional | |
participant_aor | string | optional | |
participant_name | string | optional | |
metadata | string | optional |
SIPRECStreamView
| Field | Type | Description | |
|---|---|---|---|
leg_stream_id | string | required | |
mid | string | optional | |
label | string | optional | |
direction | string | optional | |
codec | string | optional | |
room_id | string | optional | |
role | string | optional | |
participant_id | string | optional | |
participant_aor | string | optional | |
participant_name | string | optional |
SIPRegisterTrunkSpec
| Field | Type | Description | |
|---|---|---|---|
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
password | string | required | |
contact_user | string | optional | |
expires_seconds | integer | optional |
SIPRegisterTrunkView
| Field | Type | Description | |
|---|---|---|---|
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
contact_uri | string | optional | |
requested_expires_seconds | integer | required | |
granted_expires_seconds | integer | optional | |
last_registered_at | string | optional | |
next_refresh_at | string | optional | |
call_id | string | optional | |
cseq | integer | optional | |
source_address | string | optional |
STTFinalizeResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
STTStartLegResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
leg_id | string | required |
STTStartRoomResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required | |
room_id | string | required | |
leg_ids | array[string] | required |
STTStopResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
TTSDiscardResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
TTSStartResult
| Field | Type | Description | |
|---|---|---|---|
tts_id | string | required | |
status | string | required |
TransferLegResult
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
TrunkView
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
type | string | required | |
app_id | string | optional | |
status | string | required | |
last_error | string | optional | |
created_at | string | required | |
sip_register | object | optional | |
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
contact_uri | string | optional | |
requested_expires_seconds | integer | required | |
granted_expires_seconds | integer | optional | |
last_registered_at | string | optional | |
next_refresh_at | string | optional | |
call_id | string | optional | |
cseq | integer | optional | |
source_address | string | optional | |
ip_ip | object | optional | |
peer_uri | string | optional |
TrunksListResponse
| Field | Type | Description | |
|---|---|---|---|
trunks | array[object] | required | |
id | string | required | |
type | string | required | |
app_id | string | optional | |
status | string | required | |
last_error | string | optional | |
created_at | string | required | |
sip_register | object | optional | |
registrar_uri | string | required | |
aor | string | required | |
username | string | optional | |
contact_uri | string | optional | |
requested_expires_seconds | integer | required | |
granted_expires_seconds | integer | optional | |
last_registered_at | string | optional | |
next_refresh_at | string | optional | |
call_id | string | optional | |
cseq | integer | optional | |
source_address | string | optional | |
ip_ip | object | optional | |
peer_uri | string | optional |
WebRTCCandidatesResult
| Field | Type | Description | |
|---|---|---|---|
candidates | array[object] | required | |
candidate | string | required | |
sdpMid | string | required | |
sdpMLineIndex | integer | required | |
usernameFragment | string | required | |
done | boolean | required |
WebRTCOfferRequest
| Field | Type | Description | |
|---|---|---|---|
sdp | string | required | |
app_id | string | optional |
WebRTCOfferResult
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
sdp | string | required |
acceptRegistrationPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
max_expires | integer | optional |
acceptTransferPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required |
addLegPayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
leg_id | string | required | |
mute | boolean | optional | |
deaf | boolean | optional | |
accept_dtmf | boolean | optional | |
role | string | optional |
agentDeepgramPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
settings | object | optional | |
greeting | string | optional | |
language | string | optional | |
api_key | string | optional |
agentElevenLabsPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
agent_id | string | required | |
first_message | string | optional | |
language | string | optional | |
dynamic_variables | object | optional | |
api_key | string | optional |
agentMessagePayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
message | string | required |
agentPipecatPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
websocket_url | string | required |
agentVAPIPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
assistant_id | string | required | |
first_message | string | optional | |
variable_values | object | optional | |
api_key | string | optional |
answerLegPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
speech_detection | boolean | optional | |
codec | string | optional | |
streams | array[object] | optional | |
room_id | string | optional | |
role | string | optional |
bridgeCreatePayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
bridge_id | string | optional | |
peer_room_id | string | required | |
direction | string | optional |
bridgeListPayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required |
bridgeRefPayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
bridge_id | string | required |
bridgeUpdatePayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
bridge_id | string | required | |
direction | string | required |
challengeLegPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
realm | string | required | |
username | string | optional | |
password | string | optional | |
ha1 | string | optional | |
algorithm | string | optional | |
qop | array[string] | optional | |
max_expires | integer | optional |
challengeRegistrationPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
realm | string | required | |
username | string | optional | |
password | string | optional | |
ha1 | string | optional | |
algorithm | string | optional | |
qop | array[string] | optional | |
max_expires | integer | optional |
completeTransferPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
success | boolean | required | |
status_code | integer | optional | |
reason | string | optional |
declineTransferPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
code | integer | optional | |
reason | string | optional |
deleteLegPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
reason | string | optional |
deleteRegistrationPayload
| Field | Type | Description | |
|---|---|---|---|
aor | string | required | |
contact | string | optional |
dtmfPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
digits | string | required |
earlyMediaPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
codec | string | optional |
idPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required |
legAMDStartPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
initial_silence_timeout | integer | optional | |
greeting_duration | integer | optional | |
after_greeting_silence | integer | optional | |
total_analysis_time | integer | optional | |
minimum_word_length | integer | optional | |
beep_timeout | integer | optional |
legStreamAddPayload
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
direction | string | optional | |
lang | string | optional | |
content | string | optional | |
label | string | optional | |
room_id | string | optional | |
role | string | optional |
legStreamPayload
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
stream_id | string | required |
legStreamRoomPayload
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
stream_id | string | required | |
room_id | string | required | |
role | string | optional |
legStreamUpdatePayload
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
stream_id | string | required | |
role | string | optional |
playbackStartPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
url | string | required | |
tone | string | required | |
mime_type | string | required | |
repeat | integer | required | |
volume | integer | required |
playbackTargetPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
playback_id | string | required |
playbackVolumePayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
playback_id | string | required | |
volume | integer | required |
progressTransferPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
status_code | integer | required | |
reason | string | optional |
recordStartPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
storage | string | required | |
multi_channel | boolean | required | |
s3_bucket | string | required | |
s3_region | string | required | |
s3_endpoint | string | required | |
s3_prefix | string | required | |
s3_access_key | string | required | |
s3_secret_key | string | required | |
gcs_bucket | string | required | |
gcs_object_name_prefix | string | required | |
filename | string | required |
rejectRegistrationPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
code | integer | optional | |
reason | string | optional |
roomLegPayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
leg_id | string | required |
roomRoutingSetPayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
matrix | object | required |
roomRoutingUpdatePayload
| Field | Type | Description | |
|---|---|---|---|
room_id | string | required | |
updates | array[object] | required | |
listener_role | string | required | |
sources | array[string] | required |
roomSIPRECStartPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
srs_uri | string | required | |
leg_ids | array[string] | optional | |
session_id | string | optional | |
app_id | string | optional | |
auth_username | string | optional | |
auth_password | string | optional | |
headers | object | optional |
rttPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
text | string | required |
setLegRolePayload
| Field | Type | Description | |
|---|---|---|---|
leg_id | string | required | |
role | string | required |
sttStartPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
language | string | required | |
partial | boolean | required | |
provider | string | optional | |
api_key | string | optional | |
model | string | optional | |
keyterms | array[string] | optional | |
endpointing | integer | optional | |
utterance_end_ms | integer | optional | |
eager_eot_threshold | number | optional | |
eot_threshold | number | optional | |
eot_timeout_ms | integer | optional | |
language_hints | array[string] | optional |
transferLegPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
target | string | required | |
replaces_leg_id | string | optional |
ttsStartPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
text | string | required | |
voice | string | required | |
model_id | string | required | |
language | string | optional | |
prompt | string | optional | |
volume | integer | required | |
provider | string | optional | |
api_key | string | optional |
ttsTargetPayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
tts_id | string | required |
vsiStatusResponse
| Field | Type | Description | |
|---|---|---|---|
status | string | required |
vsiWebRTCAddCandidatePayload
| Field | Type | Description | |
|---|---|---|---|
id | string | required | |
candidate | object | required | |
candidate | string | required | |
sdpMid | string | required | |
sdpMLineIndex | integer | required | |
usernameFragment | string | required |