Conference

Places a call into a conference.
1{
2 "verb": "conference",
3 "name": "test",
4 "beep": true,
5 "startConferenceOnEnter": false,
6 "waitHook": "/confWait",
7 "enterHook": "/confEnter"
8}

Parameters

name
stringRequired

name of the conference

actionHook
string

A webhook to call when the conference ends

beep
boolean

if true, play a beep tone to the conference when caller enters (default: false)

distributeDtmf
boolean

if true, DTMF events from this participant will be sent to other partipants on the call. (default: false)

endConferenceOnExit
boolean

if true, end the conference when this caller hangs up (default: false)

enterHook
string

A webhook to retrieve something to play or say to the caller just before they are put into a conference after waiting for it to start

listen
object

Audio streaming configuration. When provided, conference audio is streamed in real-time over a WebSocket connection to a remote server. See Audio Streaming below.

listen.url
stringRequired

WebSocket URL to stream conference audio to (e.g., wss://example.com/conference-audio).

listen.sampleRate
numberDefaults to 8000

Audio sample rate in Hz.

listen.wsAuth
object

Authentication credentials to include when connecting to the WebSocket server.

listen.metadata
object

Custom metadata to include in the initial WebSocket connection message.

joinMuted
boolean

if true, this caller will join the conference with their audio muted

maxParticipants
number

maximum number of participants that will be allowed in the conference

memberTag
string

a way to classify participants for the “coach” feature; see related speakOnlyTo attribute below (0.9.1 and above)

speakOnlyTo
string

a tag value that will cause this member’s audio to be heard only by members that were assigned that tag; see this article for details

startConferenceOnEnter
boolean

if true, start the conference only when this caller enters. This also designates this caller as a moderator of the conference (default: true)

statusHook
string

A webhook to call with conference status events

statusEvents
array

An array of events for which the statusHook should be called. See below for details.

waitHook
string

A webhook to retrieve commands to play or say while the caller is waiting for the conference to start

Conference Status Events

  • ‘start’: the conference has started
  • ‘end’: the conference has ended
  • ‘join’: a participant has joined the conference
  • ‘leave’: a participant has left the conference
  • ‘start-talking’: a participant started speaking
  • ‘end-talking’: a participant stopped talking

Conference Status Webhook Parameters

Conference status webhooks will contain the following additional parameters:

  • conferenceSid: a unique identifier for the conference
  • friendlyName: the name of the conference as specified in the application
  • event: the conference event being reported (e.g. “join”)
  • time: the time of the event in ISO format (e.g. “2020-04-27T13:44:17.336Z”)
  • members: the current number of members in the conference
  • duration: the current length of the conference in seconds

Audio Streaming

The listen property enables real-time audio streaming of the full conference mix to an external WebSocket server. Unlike the standalone listen verb (which streams a single participant’s audio), this streams the mixed audio from all conference participants.

1{
2 "verb": "conference",
3 "name": "team-standup",
4 "beep": true,
5 "listen": {
6 "url": "wss://example.com/conference-audio",
7 "sampleRate": 8000,
8 "metadata": {
9 "conferenceId": "team-standup",
10 "recordingType": "full-mix"
11 }
12 }
13}

When the conference starts, a virtual participant (with no channel of its own) joins the conference and streams the mixed audio to the specified WebSocket URL. The WebSocket connection receives:

  • Binary frames: Raw L16 PCM audio of the conference mix at the configured sample rate
  • participant-join: JSON text frame sent when a participant joins the conference
  • participant-leave: JSON text frame sent when a participant leaves the conference

The audio stream starts automatically when the conference begins and stops when the conference ends.

Bidirectional audio

The connection is bidirectional. Audio sent back from your WebSocket server as binary L16 PCM frames at the agreed sample rate is injected into the conference mix and heard by all participants. This lets you play TTS, music, announcements, or AI-generated speech directly into the conference from a remote service without needing a separate participant.

Dynamic Control

You can also start and stop conference audio streaming dynamically via the REST API using the conf:listen-status command on the update call endpoint:

1{
2 "listen_status": "start",
3 "url": "wss://example.com/conference-audio",
4 "sampleRate": 8000
5}

To stop streaming:

1{
2 "listen_status": "stop"
3}