Conference events
Conference events cover room lifecycle, member management, and playback control within conference rooms.
conference.created
Section titled “conference.created”Fired when a new conference room is created via POST /api/v1/conferences.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.created". required |
app_id | string | Application ID that owns the conference. required |
room_id | string | Unique room identifier (prefixed with node hash). required |
name | string | Human-readable room name. required |
{ "event": "conference.created", "app_id": "my-app", "room_id": "acW68-room-abc123", "name": "Team Standup"}conference.destroyed
Section titled “conference.destroyed”Fired when a conference room is deleted via DELETE /api/v1/conferences/{room_id}.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.destroyed". required |
app_id | string | Application ID that owned the conference. required |
room_id | string | Unique room identifier. required |
{ "event": "conference.destroyed", "app_id": "my-app", "room_id": "acW68-room-abc123"}conference.member.joined
Section titled “conference.member.joined”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.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.member.joined". required |
session_uuid | string | Session UUID of the joining member. required |
room_id | string | Conference room identifier. required |
caller_id | string | Caller 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"}conference.member.left
Section titled “conference.member.left”Fired when a call leaves a conference room, whether by the conference/leave command, being kicked, or hanging up.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.member.left". required |
session_uuid | string | Session UUID of the departing member. required |
room_id | string | Conference room identifier. required |
reason | string | Departure 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_id | string | Caller 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"}conference.member.muted
Section titled “conference.member.muted”Fired when a conference member is muted via the conference/mute command.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.member.muted". required |
session_uuid | string | Session UUID of the muted member. required |
room_id | string | Conference room identifier. required |
caller_id | string | Caller 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"}conference.member.unmuted
Section titled “conference.member.unmuted”Fired when a conference member is unmuted via the conference/unmute command.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.member.unmuted". required |
session_uuid | string | Session UUID of the unmuted member. required |
room_id | string | Conference room identifier. required |
caller_id | string | Caller 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"}conference.play.started
Section titled “conference.play.started”Fired when conference room playback begins via POST /api/v1/conferences/{room_id}/play.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.started". required |
room_id | string | Conference room identifier. required |
urls | string[] | Array of audio URLs being played. required |
operation_id | string | Unique 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"}conference.play.paused
Section titled “conference.play.paused”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.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.paused". required |
room_id | string | Conference room identifier. required |
operation_id | string | Unique operation identifier. required |
{ "event": "conference.play.paused", "room_id": "acW68-room-abc123", "operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"}conference.play.resumed
Section titled “conference.play.resumed”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.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.resumed". required |
app_id | string | Application identifier that owns the conference. required |
room_id | string | Conference room identifier. required |
operation_id | string | Unique operation identifier. required |
{ "event": "conference.play.resumed", "app_id": "app_abc123", "room_id": "acW68-room-abc123", "operation_id": "e5f6a7b8-c9d0-1234-5678-9abcdef01234"}conference.play.stopped
Section titled “conference.play.stopped”Fired when conference room playback is stopped via POST /api/v1/conferences/{room_id}/stop.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.stopped". required |
room_id | string | Conference room identifier. required |
operation_id | string | Unique operation identifier. required |
{ "event": "conference.play.stopped", "room_id": "acW68-room-abc123", "operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"}conference.play.volume_changed
Section titled “conference.play.volume_changed”Fired when conference room playback volume is adjusted via POST /api/v1/conferences/{room_id}/volume.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.volume_changed". required |
room_id | string | Conference room identifier. required |
volume | integer | New volume level, range -50 to 7. Negative values attenuate; positive amplify. required |
operation_id | string | Unique operation identifier. required |
{ "event": "conference.play.volume_changed", "room_id": "acW68-room-abc123", "volume": 2, "operation_id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"}conference.play.finished
Section titled “conference.play.finished”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.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.finished". required |
room_id | string | Conference room identifier. required |
operation_id | string | Operation 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 |
urls | string[] | 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"]}conference.play.failed
Section titled “conference.play.failed”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.
| Field | Type | Description |
|---|---|---|
event | string | Always "conference.play.failed". required |
room_id | string | Conference room identifier. required |
operation_id | string | Operation identifier of the originating conference.play.started request. May be empty if state was cleared before this event fired. required |
urls | string[] | Array of file URLs that failed to play. May be empty if the source could not be identified. required |
error | string | Coarse-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"}Triggered by
Section titled “Triggered by”conference.created—POST /conferences.conference.destroyed—DELETE /conferences/{room_id}.conference.member.joined—conference/join.conference.member.left—conference/leave, or automatic on hangup.conference.member.muted—conference/mute.conference.member.unmuted—conference/unmute.conference.play.started—POST /conferences/{room_id}/play.conference.play.paused—POST /conferences/{room_id}/pause(when prior state wasplaying).conference.play.resumed—POST /conferences/{room_id}/pause(when prior state waspaused).conference.play.stopped—POST /conferences/{room_id}/stop.conference.play.volume_changed—POST /conferences/{room_id}/volume.conference.play.finished— automatic: fires when playback reaches end naturally.conference.play.failed— automatic: fires on a play-file failure or after a 10 s watchdog with no terminal event.