join_conference
join_conference
Join an ad-hoc audio conference started on either the SignalWire or Compatibility API. This method allows you to connect the current call to a named conference where multiple participants can communicate simultaneously.
Properties
join_conference
An object that accepts the following properties.
join_conference.name
Name of conference.
join_conference.muted
Whether to join the conference in a muted state. If set to true, the participant will be muted upon joining.
join_conference.beep
Sets the behavior of the beep sound when joining or leaving the conference.
Possible Values: true, false, onEnter, onExit
join_conference.start_on_enter
Whether this participant can start the conference. A conference starts once at least one participant with start_on_enter set to true has joined and the number of participants has reached min_participants (2 by default). Until then, participants wait.
join_conference.end_on_exit
Ends the conference when the main participant leaves. This means the end action will not wait on more participants to leave before ending.
join_conference.wait_url
A URL that SignalWire requests with an HTTP GET while this participant waits for the conference to start. Default hold music is played if not set. Set it to an empty string ("") to play silence instead.
join_conference.max_participants
The maximum number of participants allowed in the conference, up to 250. If the limit is reached, new participants will not be able to join.
join_conference.min_participants
The number of participants that must join before the conference starts. Set it to 1 to let a single participant with start_on_enter start the conference. Use a value from 1 up to max_participants. When both are set, a min_participants larger than max_participants is rejected. An invalid number written directly in the document makes the document invalid, so it doesn’t run. An invalid value that comes from a variable, such as 0 or a number larger than max_participants, makes the join fail and sets join_conference_result to failed.
Like max_participants, it is set when the conference is created; joining an existing conference doesn’t change it.
join_conference.record
Enables or disables recording of the conference. With record-from-start, recording starts once at least two participants have joined, even if min_participants lets the conference start earlier. Recording is configured when the conference is created.
Possible Values: do-not-record, record-from-start
join_conference.region
Specifies the geographical region requested for hosting the conference.
Possible Values: global, us, eu, ch
join_conference.trim
If set to trim-silence, it will remove silence from the start of the recording. If set to do-not-trim, it will keep the silence.
Possible Values: trim-silence, do-not-trim
join_conference.coach
Joins the conference in coaching mode for the participant identified by the given call SID. The coach hears the whole conference, but is heard only by the coached participant — the other participants cannot hear the coach. Use this to whisper guidance to an agent while they are on a live call.
The call SID must belong to a call that is currently connected to the in-progress conference. Specifying a call SID that does not exist or is no longer connected will result in a failure.
join_conference.status_callback_event
A space-separated list of one or more events to listen for and send to the status callback URL. When status_callback is set and this list is not set or empty, only end is sent.
Possible Values: start, end, join, leave, mute, hold, modify, speaker, announcement
join_conference.status_callback_event_type
The content type used when sending status events to the status callback URL.
Possible Values: cxml, laml, relay
join_conference.status_callback
The URL to which status events will be sent. This URL must be publicly accessible and able to handle HTTP requests. Learn more about status callbacks.
join_conference.status_callback_method
The HTTP method to use when sending status events to the status callback URL. Notifications in the relay format (see status_callback_event_type) are always sent with POST, even if GET is set.
Possible Values: GET, POST
join_conference.recording_status_callback
The URL to which recording status events will be sent. This URL must be publicly accessible and able to handle HTTP requests. Learn more about status callbacks.
join_conference.recording_status_callback_method
The HTTP method to use when sending recording status events to the recording status callback URL. Notifications in the relay format (see recording_status_callback_event_type) are always sent with POST, even if GET is set.
Possible Values: GET, POST
join_conference.recording_status_callback_event
A space-separated list of one or more events to listen for and send to the recording status callback URL.
Possible Values: in-progress, completed, absent
join_conference.recording_status_callback_event_type
The content type used when sending recording status events to the recording status callback URL.
Possible Values: cxml, laml, relay
join_conference.emit_call_quality
When true, a participant-call-quality event with audio quality statistics is sent when this participant leaves, if statistics are available. To receive it, include leave in status_callback_event. See status callbacks for the fields.
join_conference.stream
Attach a WebSocket stream to the conference. Conference audio is streamed to the url, enabling real-time audio processing, transcription, or AI agents that listen to the conference. Uses the same stream schema as the stream device type in connect.
The stream is set up only while the conference has not started yet. A stream sent by a participant joining a conference that has already started does not add a stream.
join_conference.stream.url
Secure WebSocket URL (must start with wss://) that the conference audio is streamed to. Plain ws:// is not supported.
join_conference.stream.name
A friendly name to identify the stream at the WebSocket endpoint.
join_conference.stream.codec
Audio codec for the streamed audio. Supported values: PCMU, PCMA, G722, L16. Codec can include rate and ptime modifiers (e.g., PCMU@40i, L16@24000h@40i).
join_conference.stream.status_url
HTTP or HTTPS URL to which stream status events will be sent.
join_conference.stream.status_url_method
The HTTP method to use when sending stream status events to the status URL.
Possible Values: GET, POST
join_conference.stream.realtime
Has no effect on conference streams. A boolean value is accepted, but conference streams currently ignore it.
join_conference.stream.authorization_bearer_token
Bearer token sent in the Authorization header when the WebSocket connection is opened, so your endpoint can authenticate the request.
join_conference.stream.custom_parameters
Custom key-value pairs delivered to your WebSocket endpoint when the stream connects. Use them to pass context such as a session or customer ID.
Variables
join_conference_result
The result of the conference join. Possible values: joined (the participant joined the conference) or failed (the participant could not join). The value is set when join_conference finishes, not at the moment the participant joins.
StatusCallbacks
Status callbacks are asynchronous, best-effort HTTP notifications: delivery can be delayed or fail silently — if your server is unreachable, the callback simply never arrives. Don’t gate time-critical or business-critical actions solely on receiving one. Confirm state via the REST API before acting, or use a transport with visible failure modes — see Status callback reliability.
A POST request will be sent to status_callback with a JSON payload for events specified in status_callback_event. Both conference and recording events share the same calling.conference event type; the specific event is identified by params.status.
event_type
The type of event. Always calling.conference.
event_channel
The channel for the event. For participant events, the channel of the participant’s call. For conference and recording events, the conference ID.
timestamp
Unix timestamp (float) when the event was generated.
project_id
The project ID associated with the call.
space_id
The Space ID associated with the call.
params
An object containing conference-specific parameters.
params.call_id
The call ID of the participant.
params.name
The name of the conference.
params.conference_id
The unique ID of the conference.
params.status
The conference event. Valid values: conference-start, conference-end, participant-join, participant-leave, participant-mute, participant-unmute, participant-hold, participant-unhold, participant-speech-start, participant-speech-stop, participant-modify, participant-call-quality, announcement-end, announcement-fail, record-start, record-pause, record-resume, record-stop.
announcement-end and announcement-fail are sent when status_callback_event includes announcement. participant-call-quality is sent when a participant that joined with emit_call_quality: true leaves, if status_callback_event includes leave and audio statistics are available.
params.conference_node_id
The ID of the node hosting the conference. Differs from node_id, which on participant events is the node handling the participant’s call.
params.size
The number of participants currently in the conference.
params.node_id
The node identifier.
params.segment_id
The segment ID for the call. Present when available.
params.region
The geographical region of the conference.
params.tag
The tag associated with the call. Present when set.
params.subscriber_id
The ID of the subscriber on the participant’s call. Present on participant events when known.
params.address_id
The ID of the Resource Address on the participant’s call. Present on participant events when known.
params.subscriber_name
The name of the subscriber on the participant’s call. Present on participant events when known.
params.video
true for a video conference. Absent for audio conferences.
params.preview_url
URL of a periodically refreshed preview image of a video conference. Present only when previews are enabled.
params.muted
Whether the participant is muted. Present on participant events.
params.hold
Whether the participant is on hold. Present on participant events.
params.start_on_join
Whether the participant starts the conference on join.
params.end_on_leave
Whether the participant ends the conference on leave.
params.deaf
Whether the participant can’t hear the conference. Present on participant events.
params.video_muted
Whether the participant’s video is muted. Present on participant events in video conferences.
params.coaching
Whether the participant is in coaching mode. Present on participant events.
params.call_id_to_coach
The call ID of the participant being coached. Present on participant events when the participant is coaching.
params.announce_url
The announcement URL set for the participant. Present on participant events when one is set.
params.meta
Metadata attached to the participant’s call. Present on participant events when the call has metadata.
params.meta.public
Public metadata. Can hold any JSON values, passed through as set.
params.meta.private
Private metadata. Can hold any JSON values, passed through as set. It is included in these webhooks.
params.recording_url
URL to the conference recording. Present on conference-end and record-stop events when a recording exists.
params.recording_file_size
Recording file size in bytes. Present on conference-end and record-stop events.
params.recording_duration
Recording duration in seconds. Present on conference-end and record-stop events.
params.reason_ended
The reason the conference ended. Present on conference-end events.
params.call_id_ending_conf
The call ID of the participant that ended the conference. Present on conference-end events.
Audio quality statistics on participant-call-quality events are sent as strings, and each one is included only when its value is available.
params.rtt_avg
Average round-trip time. Present on participant-call-quality events when available.
params.rtt_min
Minimum round-trip time. Present on participant-call-quality events when available.
params.rtt_max
Maximum round-trip time. Present on participant-call-quality events when available.
params.out_jitter_min
Minimum outbound jitter. Present on participant-call-quality events when available.
params.out_jitter_max
Maximum outbound jitter. Present on participant-call-quality events when available.
params.out_jitter_avg
Average outbound jitter. Present on participant-call-quality events when available.
params.out_lost
Outbound lost packets. Present on participant-call-quality events when available.
params.in_media_bytes
Inbound media bytes. Present on participant-call-quality events when available.
params.in_media_packet_count
Inbound media packets. Present on participant-call-quality events when available.
params.in_skip_packet_count
Inbound skipped packets. Present on participant-call-quality events when available.
params.in_jitter_packet_count
Inbound jitter packets. Present on participant-call-quality events when available.
params.in_dtmf_packet_count
Inbound DTMF packets. Present on participant-call-quality events when available.
params.in_cng_packet_count
Inbound comfort noise (CNG) packets. Present on participant-call-quality events when available.
params.in_flush_packet_count
Inbound flushed packets. Present on participant-call-quality events when available.
params.in_flaws_total
Total inbound media flaws. Present on participant-call-quality events when available.
params.in_quality_percentage
Inbound audio quality percentage. Present on participant-call-quality events when available.
params.in_mos
Inbound mean opinion score (MOS). Present on participant-call-quality events when available.
params.out_media_bytes
Outbound media bytes. Present on participant-call-quality events when available.
params.out_media_packet_count
Outbound media packets. Present on participant-call-quality events when available.
params.out_dtmf_packet_count
Outbound DTMF packets. Present on participant-call-quality events when available.
params.out_cng_packet_count
Outbound comfort noise (CNG) packets. Present on participant-call-quality events when available.