API reference
Conference & participants
A Conference bridges two or more call legs into a shared audio room. You can add participants to it, mute or hold any of them, and remove a leg without tearing down the room. Conferences run on the same ARI snoop-and-bridge engine that powers Dial's supervisor barge and transfer/conference today; the public Conference REST resource and its Participants subresource are in developer preview, so the fields and payloads below are illustrative and may change before GA.
Base URL https://api.telvox.dev
Authentication Authorization: Bearer $TELVOX_API_KEY
Conference properties
A Conference resource has the following properties.
| Property | Type | Description |
|---|---|---|
| sid | string | Unique identifier for the conference, prefixed CF. |
| friendly_name | string | A name you assign when the conference is created, used to address it across calls. |
| status | enum | Current state: init, in-progress or completed. |
| participant_count | integer | Number of participants currently bridged into the conference. |
| record | boolean | Whether the conference audio is being recorded, subject to your recording policy. |
| date_created | string<date-time> | ISO 8601 timestamp for when the conference was created. |
| date_updated | string<date-time> | ISO 8601 timestamp for the last state change. |
List conferences
/v1/conferencesReturn a paginated list of conferences on your account, most recent first. Combine the filters below to narrow the result set.
| Query parameter | Type | Description |
|---|---|---|
| status | enum | Filter by conference status (init, in-progress, completed). |
| friendly_name | string | Filter to conferences matching an exact friendly name. |
| page_size | integer | Number of results per page. Defaults to 50; cursor returned in the response. |
curl -G https://api.telvox.dev/v1/conferences \
-H "Authorization: Bearer $TELVOX_API_KEY" \
--data-urlencode "status=in-progress" \
--data-urlencode "page_size=25"{
"conferences": [
{
"sid": "CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6",
"friendly_name": "support-bridge-4821",
"status": "in-progress",
"participant_count": 3,
"record": true,
"date_created": "2026-06-21T17:42:09Z",
"date_updated": "2026-06-21T17:44:55Z"
}
],
"meta": {
"page_size": 25,
"next_cursor": "eyJvIjoyNX0"
}
}Fetch a conference
/v1/conferences/{sid}Retrieve a single conference by its SID, including its current participant count and status.
curl https://api.telvox.dev/v1/conferences/CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6 \
-H "Authorization: Bearer $TELVOX_API_KEY"{
"sid": "CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6",
"friendly_name": "support-bridge-4821",
"status": "in-progress",
"participant_count": 3,
"record": true,
"date_created": "2026-06-21T17:42:09Z",
"date_updated": "2026-06-21T17:44:55Z"
}Update a conference
/v1/conferences/{sid}Announce into a running conference, or end it by setting status to completed.
| Body parameter | Type | Description |
|---|---|---|
| status | enum | Set to completed to end the conference and disconnect every participant. |
| announce_url | string<uri> | An answer-URL document played to all participants once before resuming the conference. |
curl -X POST https://api.telvox.dev/v1/conferences/CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6 \
-H "Authorization: Bearer $TELVOX_API_KEY" \
-d status="completed"Participant subresource
Each participant is a call leg bridged into a conference, addressed by its call_sid. Participants carry their own mute and hold state.
| Property | Type | Description |
|---|---|---|
| call_sid | string | The SID of the call leg bridged into the conference. Identifies the participant. |
| conference_sid | string | The SID of the conference this participant is part of. |
| muted | boolean | Whether the participant's audio is muted into the conference. |
| hold | boolean | Whether the participant is on hold and hearing hold audio instead of the conference. |
| coaching | boolean | Whether the participant is whispering to a single other participant (supervisor coach). |
| status | enum | Participant state: connecting, in-progress or completed. |
List participants
/v1/conferences/{sid}/participantsList the call legs currently bridged into a conference.
curl https://api.telvox.dev/v1/conferences/CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6/participants \
-H "Authorization: Bearer $TELVOX_API_KEY"{
"participants": [
{
"call_sid": "CA2f9d6b1a8c3e47b0a5d1f2c8e9b0a4d6",
"conference_sid": "CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6",
"muted": false,
"hold": false,
"coaching": false,
"status": "in-progress"
}
]
}Add a participant
/v1/conferences/{sid}/participantsDial a new call leg and bridge it into the conference. TelVox places the outbound call and joins it once answered.
| Body parameter | Type | Description |
|---|---|---|
| fromrequired | string | Caller ID for the new leg — an E.164 number assigned to your account. |
| torequired | string | The E.164 destination, SIP URI or client identity to dial into the conference. |
| muted | boolean | Whether the participant joins muted. Defaults to false. |
| start_conference_on_enter | boolean | Whether the conference begins when this participant joins. Defaults to true. |
| end_conference_on_exit | boolean | Whether the conference ends when this participant leaves. Defaults to false. |
| status_callback | string<uri> | URL TelVox requests as the participant's call leg changes state. |
curl -X POST https://api.telvox.dev/v1/conferences/CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6/participants \
-H "Authorization: Bearer $TELVOX_API_KEY" \
-d from="+14155550100" \
-d to="+14155550188" \
-d muted="false"{
"call_sid": "CA9b1e7d3a6f2c48e0b4a1d9c7e2f0b8a4",
"conference_sid": "CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6",
"muted": false,
"hold": false,
"coaching": false,
"status": "connecting"
}Update a participant (hold / mute)
/v1/conferences/{sid}/participants/{call_sid}Mute or unmute a participant, or move them to and from hold, without disconnecting the leg.
| Body parameter | Type | Description |
|---|---|---|
| muted | boolean | Set true to mute the participant into the conference, false to unmute. |
| hold | boolean | Set true to move the participant to hold, false to return them to the conference. |
| hold_url | string<uri> | An answer-URL document played to the participant while on hold. |
curl -X POST https://api.telvox.dev/v1/conferences/CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6/participants/CA2f9d6b1a8c3e47b0a5d1f2c8e9b0a4d6 \
-H "Authorization: Bearer $TELVOX_API_KEY" \
-d muted="true" \
-d hold="false"Remove a participant
/v1/conferences/{sid}/participants/{call_sid}Drop a single participant from the conference. The leg is disconnected; the conference and other participants continue.
curl -X DELETE https://api.telvox.dev/v1/conferences/CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6/participants/CA2f9d6b1a8c3e47b0a5d1f2c8e9b0a4d6 \
-H "Authorization: Bearer $TELVOX_API_KEY"Conference status callbacks
When you pass a status_callback URL, TelVox issues a signed POST to your endpoint as participants join, leave, mute or hold, and as the conference starts and ends. Delivery uses the same signed, SSRF-safe egress as the rest of the platform.
| Field | Type | Description |
|---|---|---|
| ConferenceSid | string | The SID of the conference the event belongs to. |
| CallSid | string | The SID of the participant call leg that triggered the event. |
| StatusCallbackEvent | enum | One of conference-start, conference-end, participant-join, participant-leave, participant-mute, participant-hold. |
| Timestamp | string<date-time> | RFC 2822 timestamp for when the event occurred. |
{
"ConferenceSid": "CF7c0a1e8b4d2f49a0b3e6c1d8f0a2b4c6",
"CallSid": "CA9b1e7d3a6f2c48e0b4a1d9c7e2f0b8a4",
"StatusCallbackEvent": "participant-join",
"Timestamp": "Sun, 21 Jun 2026 17:44:55 +0000"
}