***
id: 50959cd7-6711-4baf-9e16-030ab25d0afd
title: join\_conference
slug: /reference/join-conference
description: Join an ad-hoc audio conference with RELAY and CXML calls.
max-toc-depth: 3
----------------
[statuscallbacks]: #statuscallbacks
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**
An object that accepts the following properties.
Name of conference.
Whether to join the conference in a muted state. If set to `true`, the participant will be muted upon joining.
Sets the behavior of the beep sound when joining or leaving the conference.
**Possible Values**: `true`, `false`, `onEnter`, `onExit`
Starts the conference when the main participant joins. This means the start action will not wait on more participants to join before starting.
Ends the conference when the main participant leaves. This means the end action will not wait on more participants to leave before ending.
A URL to fetch SWML while waiting for the conference to start (before a `start_on_enter` participant joins). SignalWire sends a POST request with the standard [document-fetching webhook](/docs/swml#document-fetching-webhook) body. The response should be a SWML document containing audio to play (e.g., hold music). Default hold music will be played if not set.
The maximum number of participants allowed in the conference. If the limit is reached, new participants will not be able to join.
Enables or disables recording of the conference.
**Possible Values**: `do-not-record`, `record-from-start`
Specifies the geographical region where the conference will be hosted.
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`
Coach accepts a [call SID](/docs/platform/what-is-a-sid) of a call that is currently connected to an in-progress conference. Specifying a call SID that does not exist or is no longer connected will result in a failure.
The events to listen for and send to the status callback URL.
**Possible Values**: `start`, `end`, `join`, `leave`, `mute`, `hold`, `modify`, `speaker`, `announcement`
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][statuscallbacks].
The HTTP method to use when sending status events to the status callback URL.
**Possible Values**: `GET`, `POST`
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][statuscallbacks].
The HTTP method to use when sending recording status events to the recording status callback URL.
**Possible Values**: `GET`, `POST`
The events to listen for and send to the recording status callback URL.
**Possible Values**: `in-progress`, `completed`, `absent`
Allows the user to specify a custom action to be executed when the conference result is returned (typically when it has ended). The actions can a `switch` object or a `cond` array. The `switch` object allows for conditional execution based on the result of the conference, while the `cond` array allows for multiple conditions to be checked in sequence. If neither is provided, the default action will be to end the conference.
## **Variables**
The result of the conference join attempt. Possible values: `completed` (successfully joined and left the conference), `answered` (successfully joined the conference), `no-answer` (failed to join due to no answer), `failed` (failed to join due to an error), `canceled` (join attempt was canceled).
Contains the same value as `join_conference_result` for use in conditional logic.
## **StatusCallbacks**
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`.
The type of event. Always `calling.conference`.
The channel for the event, includes the SWML session ID.
Unix timestamp (float) when the event was generated.
The project ID associated with the call.
The Space ID associated with the call.
An object containing conference-specific parameters.
The call ID of the participant.
The name of the conference.
The unique ID of the conference.
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`, `record-start`, `record-pause`, `record-resume`, `record-stop`.
The number of participants currently in the conference.
The node identifier.
The segment ID for the call. Present when available.
The geographical region of the conference.
The tag associated with the call. Present when set.
Whether the participant is muted. Present on participant events.
Whether the participant is on hold. Present on participant events.
Whether the participant starts the conference on join.
Whether the participant ends the conference on leave.
Whether the participant is in coaching mode. Present on participant events.
URL to the conference recording. Present on `conference-end` and `record-stop` events when a recording exists.
Recording file size in bytes. Present on `conference-end` and `record-stop` events.
Recording duration in seconds. Present on `conference-end` and `record-stop` events.
The reason the conference ended. Present on `conference-end` events.
The call ID of the participant that ended the conference. Present on `conference-end` events.
#### Participant join event example
```json
{
"event_type": "calling.conference",
"event_channel": "swml:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp": 1640000000.123,
"project_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"space_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"params": {
"call_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "my_conference",
"conference_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "participant-join",
"size": 3,
"muted": false,
"hold": false,
"start_on_join": true,
"end_on_leave": false,
"coaching": false
}
}
```
#### Conference end event example
```json
{
"event_type": "calling.conference",
"event_channel": "swml:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp": 1640000000.456,
"project_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"space_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"params": {
"call_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "my_conference",
"conference_id": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "conference-end",
"size": 0,
"reason_ended": "last-participant-left",
"call_id_ending_conf": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"recording_url": "https://your-space.signalwire.com/api/v1/recordings/rec-uuid/download",
"recording_duration": 300,
"recording_file_size": 4800000
}
}
```
***
## **Examples**
### Basic Conference Join
```yaml
version: 1.0.0
sections:
main:
- join_conference:
name: "team_meeting"
```
```json
{
"version": "1.0.0",
"sections": {
"main": [
{
"join_conference": {
"name": "team_meeting"
}
}
]
}
}
```
### Conference with Custom Settings
```yaml
version: 1.0.0
sections:
main:
- join_conference:
name: "team_meeting"
muted: false
beep: "onEnter"
start_on_enter: true
max_participants: 10
record: "record-from-start"
```
```json
{
"version": "1.0.0",
"sections": {
"main": [
{
"join_conference": {
"name": "team_meeting",
"muted": false,
"beep": "onEnter",
"start_on_enter": true,
"max_participants": 10,
"record": "record-from-start"
}
}
]
}
}
```
### Conference with Status Callbacks
```yaml
version: 1.0.0
sections:
main:
- join_conference:
name: "support_call"
status_callback_event: "join"
status_callback: "https://example.com/conference-status"
status_callback_method: "POST"
recording_status_callback: "https://example.com/recording-status"
recording_status_callback_event: "completed"
```
```json
{
"version": "1.0.0",
"sections": {
"main": [
{
"join_conference": {
"name": "support_call",
"status_callback_event": "join",
"status_callback": "https://example.com/conference-status",
"status_callback_method": "POST",
"recording_status_callback": "https://example.com/recording-status",
"recording_status_callback_event": "completed"
}
}
]
}
}
```