Skip to content

Conference events

Conference events cover room lifecycle, member management, and playback control within conference rooms.

Fired when a new conference room is created via POST /api/v1/conferences.

FieldTypeDescription
eventstringAlways "conference.created". required
app_idstringApplication ID that owns the conference. required
room_idstringUnique room identifier (prefixed with node hash). required
namestringHuman-readable room name. required
{
"event": "conference.created",
"app_id": "my-app",
"room_id": "acW68-room-abc123",
"name": "Team Standup"
}

Fired when a conference room is deleted via DELETE /api/v1/conferences/{room_id}.

FieldTypeDescription
eventstringAlways "conference.destroyed". required
app_idstringApplication ID that owned the conference. required
room_idstringUnique room identifier. required
{
"event": "conference.destroyed",
"app_id": "my-app",
"room_id": "acW68-room-abc123"
}

Fired when a call joins a conference room. This event is triggered by the underlying system confirming the join, not by the API command itself.

FieldTypeDescription
eventstringAlways "conference.member.joined". required
session_uuidstringSession UUID of the joining member. required
room_idstringConference room identifier. required
caller_idstringCaller ID of the joining member. required
{
"event": "conference.member.joined",
"session_uuid": "acW68-f47ac10b-58cc-4372-a567-0e02b2c3d479",
"room_id": "acW68-room-abc123",
"caller_id": "+15551234567"
}

Fired when a call leaves a conference room, whether by the conference/leave command, being kicked, or hanging up.

FieldTypeDescription
eventstringAlways "conference.member.left". required
session_uuidstringSession UUID of the departing member. required
room_idstringConference room identifier. required
reasonstringDeparture trigger: "hangup" (member’s channel hung up), "removed" (explicit leave/kick), "orphan" (janitor cleaned up a session whose channel was lost). Accept any string for forward compatibility. required
caller_idstringCaller ID of the departing member. required
{
"event": "conference.member.left",
"session_uuid": "acW68-f47ac10b-58cc-4372-a567-0e02b2c3d479",
"room_id": "acW68-room-abc123",
"reason": "hangup",
"caller_id": "+15551234567"
}

Fired when a conference member is muted via the conference/mute command.

FieldTypeDescription
eventstringAlways "conference.member.muted". required
session_uuidstringSession UUID of the muted member. required
room_idstringConference room identifier. required
caller_idstringCaller ID of the muted member. required
{
"event": "conference.member.muted",
"session_uuid": "acW68-f47ac10b-58cc-4372-a567-0e02b2c3d479",
"room_id": "acW68-room-abc123",
"caller_id": "+15551234567"
}

Fired when a conference member is unmuted via the conference/unmute command.

FieldTypeDescription
eventstringAlways "conference.member.unmuted". required
session_uuidstringSession UUID of the unmuted member. required
room_idstringConference room identifier. required
caller_idstringCaller ID of the unmuted member. required
{
"event": "conference.member.unmuted",
"session_uuid": "acW68-f47ac10b-58cc-4372-a567-0e02b2c3d479",
"room_id": "acW68-room-abc123",
"caller_id": "+15551234567"
}

Fired when conference room playback begins via POST /api/v1/conferences/{room_id}/play.

FieldTypeDescription
eventstringAlways "conference.play.started". required
room_idstringConference room identifier. required
urlsstring[]Array of audio URLs being played. required
operation_idstringUnique operation identifier. required
{
"event": "conference.play.started",
"room_id": "acW68-room-abc123",
"urls": ["https://cdn.example.com/audio/announcement.wav"],
"operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
}

Fired when conference room playback is paused via POST /api/v1/conferences/{room_id}/pause. The gateway reads the room’s prior playback_status before toggling: if it was "playing", this event fires; if it was "paused", conference.play.resumed fires instead.

FieldTypeDescription
eventstringAlways "conference.play.paused". required
room_idstringConference room identifier. required
operation_idstringUnique operation identifier. required
{
"event": "conference.play.paused",
"room_id": "acW68-room-abc123",
"operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
}

Fired when conference room playback is resumed via POST /api/v1/conferences/{room_id}/pause while the room’s prior playback_status was "paused". Pause is a toggle: the same endpoint emits either conference.play.paused or this event depending on prior state.

FieldTypeDescription
eventstringAlways "conference.play.resumed". required
app_idstringApplication identifier that owns the conference. required
room_idstringConference room identifier. required
operation_idstringUnique operation identifier. required
{
"event": "conference.play.resumed",
"app_id": "app_abc123",
"room_id": "acW68-room-abc123",
"operation_id": "e5f6a7b8-c9d0-1234-5678-9abcdef01234"
}

Fired when conference room playback is stopped via POST /api/v1/conferences/{room_id}/stop.

FieldTypeDescription
eventstringAlways "conference.play.stopped". required
room_idstringConference room identifier. required
operation_idstringUnique operation identifier. required
{
"event": "conference.play.stopped",
"room_id": "acW68-room-abc123",
"operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
}

Fired when conference room playback volume is adjusted via POST /api/v1/conferences/{room_id}/volume.

FieldTypeDescription
eventstringAlways "conference.play.volume_changed". required
room_idstringConference room identifier. required
volumeintegerNew volume level, range -50 to 7. Negative values attenuate; positive amplify. required
operation_idstringUnique operation identifier. required
{
"event": "conference.play.volume_changed",
"room_id": "acW68-room-abc123",
"volume": 2,
"operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
}

Fired when conference room playback reaches the end of the audio file naturally (not stopped via API). This is the only conference playback event triggered by the system rather than by an API command.

FieldTypeDescription
eventstringAlways "conference.play.finished". required
room_idstringConference room identifier. required
operation_idstringOperation identifier of the originating conference.play.started request, allowing consumers to correlate finish with start. Empty string if state was cleared before this event fired. required
urlsstring[]Array containing the file URL that finished playing. required
{
"event": "conference.play.finished",
"room_id": "acW68-room-abc123",
"operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"urls": ["https://cdn.example.com/audio/announcement.wav"]
}

Fired when a conference playback cannot complete: either the media engine reports a play-file failure mid-stream, or no terminal event (conference.play.finished / conference.play.failed) is observed within 10 seconds of dispatch. The event resets playback_status to "stopped" so the room can accept a new play.

FieldTypeDescription
eventstringAlways "conference.play.failed". required
room_idstringConference room identifier. required
operation_idstringOperation identifier of the originating conference.play.started request. May be empty if state was cleared before this event fired. required
urlsstring[]Array of file URLs that failed to play. May be empty if the source could not be identified. required
errorstringCoarse-grained error bucket: "playback_error" (the media engine reported a play-file failure) or "playback_timeout" (no terminal event arrived within 10 seconds). required
{
"event": "conference.play.failed",
"room_id": "acW68-room-abc123",
"operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
"urls": ["https://cdn.example.com/audio/announcement.wav"],
"error": "playback_timeout"
}