> This page is for Compatibility API.

> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# Conference status callback

POST 

Payload sent by SignalWire to your conference `statusCallback` URL when a conference or one of its participants changes state.

Configure this callback with the `statusCallback`, `statusCallbackEvent`, and `statusCallbackMethod` attributes of the
[Conference](/docs/compatibility-api/cxml/reference/voice/conference) noun. The participant whose `<Conference>` creates the
conference sets these for the whole conference; the values given by participants who join later are ignored.
If `statusCallbackEvent` is not set, no callbacks are sent.

Each `statusCallbackEvent` value subscribes to one or more events:

| `statusCallbackEvent` value | Events sent                                                                                                    |
| --------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `start`                     | `conference-start`                                                                                             |
| `end`                       | `conference-end`                                                                                               |
| `join`                      | `participant-join`                                                                                             |
| `leave`                     | `participant-leave`, plus `participant-call-quality` for participants who joined with `emitCallQuality="true"` |
| `mute`                      | `participant-mute`, `participant-unmute`                                                                       |
| `hold`                      | `participant-hold`, `participant-unhold`                                                                       |
| `speaker`                   | `participant-speech-start`, `participant-speech-stop`                                                          |

`participant-call-quality` reports the audio statistics for a participant who joined with `emitCallQuality="true"`.
It is sent when that participant leaves, if statistics are available.

The parameters sent depend on the event:

| Parameter                                                                                                                  | `conference-start`, `conference-end` | `participant-join`, `-leave`, `-mute`, `-unmute`, `-hold`, `-unhold` | `participant-speech-start`, `-speech-stop` | `participant-call-quality`                                                           |
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | -------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------ |
| `AccountSid`, `ConferenceSid`, `StatusCallbackEvent`, `Timestamp`                                                          | Yes                                  | Yes                                                                  | Yes                                        | Yes                                                                                  |
| `CallSid`                                                                                                                  | Sent with no value                   | Yes                                                                  | Yes                                        | Yes                                                                                  |
| `FriendlyName`                                                                                                             | Yes                                  | Yes                                                                  | No                                         | No                                                                                   |
| `Muted`, `Hold`                                                                                                            | Sent with no value                   | Yes                                                                  | Yes                                        | No                                                                                   |
| `EndConferenceOnExit`, `StartConferenceOnEnter`, `Coaching`, `CallSidToCoach`                                              | No                                   | Yes                                                                  | Yes                                        | No                                                                                   |
| `ReasonConferenceEnded`, `CallSidEndingConference`                                                                         | `conference-end` only                | No                                                                   | No                                         | No                                                                                   |
| `AudioRttAvg`, `AudioRttMin`, `AudioRttMax`, `AudioOutJitterAvg`, `AudioOutJitterMin`, `AudioOutJitterMax`, `AudioOutLost` | No                                   | No                                                                   | No                                         | Yes; `AudioOutJitterAvg` only when RTCP (RTP Control Protocol) reports were received |

SignalWire sends the parameters as a form-encoded (`application/x-www-form-urlencoded`) POST body, not as JSON.
When `statusCallbackMethod` is `GET`, they are sent as query parameters instead. Every value is a string:
boolean parameters are sent as `true` or `false`.

Conference recordings report to a separate URL, `recordingStatusCallback`. See the
[Recording status callback](/docs/compatibility-api/rest/recordings/webhooks/recording-status-callback).

Status callbacks are advisory, best-effort notifications — delivery can be delayed or fail silently, so don't gate time-critical actions on receiving one. See [Status callback reliability](/docs/platform/webhooks#status-callback-reliability).

Reference: https://signalwire.com/docs/compatibility-api/rest/conferences/webhooks/conference-status-callback

## Request

### Payload

- `AccountSid` (string, required) — The unique ID of the project the conference belongs to.
- `ConferenceSid` (string, required) — The unique identifier for the conference.
- `StatusCallbackEvent` (enum, required) — The event that triggered this request. - `conference-start`: the conference started. - `conference-end`: the conference ended. - `participant-join`: a participant joined. - `participant-leave`: a participant left. - `participant-mute` / `participant-unmute`: a participant was muted or unmuted. - `participant-hold` / `participant-unhold`: a participant was put on hold or taken off hold. - `participant-speech-start` / `participant-speech-stop`: a participant started or stopped speaking. - `participant-call-quality`: audio quality statistics for a participant who joined with `emitCallQuality="true"`, sent when that participant leaves.
  - Allowed values: `conference-start`, `conference-end`, `participant-join`, `participant-leave`, `participant-mute`, `participant-unmute`, `participant-hold`, `participant-unhold`, `participant-speech-start`, `participant-speech-stop`, `participant-call-quality`
- `Timestamp` (string, required) — The timestamp, in RFC 2822 format, of when SignalWire processed the event.
- `CallSid` (string, required) — The unique identifier of the participant's call. Sent on every event; on `conference-start` and `conference-end` it has no value.
- `FriendlyName` (string, optional) — The name of the conference, as given in the `<Conference>` noun. Not sent on `participant-speech-start`, `participant-speech-stop`, or `participant-call-quality`.
- `Muted` (enum, optional) — Whether the participant is muted, as the string `true` or `false`. Not sent on `participant-call-quality`; on `conference-start` and `conference-end` it has no value.
  - Allowed values: `true`, `false`, ``
- `Hold` (enum, optional) — Whether the participant is on hold, as the string `true` or `false`. Not sent on `participant-call-quality`; on `conference-start` and `conference-end` it has no value.
  - Allowed values: `true`, `false`, ``
- `EndConferenceOnExit` (enum, optional) — Whether the conference ends when this participant leaves, as the string `true` or `false`. Set by the participant's `endConferenceOnExit` attribute. Not sent on `conference-start`, `conference-end`, or `participant-call-quality`.
  - Allowed values: `true`, `false`
- `StartConferenceOnEnter` (enum, optional) — Whether the conference starts when this participant joins, as the string `true` or `false`. Set by the participant's `startConferenceOnEnter` attribute. Not sent on `conference-start`, `conference-end`, or `participant-call-quality`.
  - Allowed values: `true`, `false`
- `Coaching` (enum, optional) — Whether the participant is coaching another call, as the string `true` or `false`. Sent on every participant event except `participant-call-quality`, whether or not the participant joined with the `coach` attribute.
  - Allowed values: `true`, `false`
- `CallSidToCoach` (string, optional) — The unique identifier of the call this participant is coaching. Sent on every participant event except `participant-call-quality`; it has no value when the participant is not coaching.
- `ReasonConferenceEnded` (string, optional) — Why the conference ended. Sent on `conference-end` only. - `last-participant-left`: the last participant left. - `last-participant-kicked`: the last participant was removed from the conference. - `participant-with-end-conference-on-exit-left`: a participant with `endConferenceOnExit` set to `true` left. - `participant-with-end-conference-on-exit-kicked`: a participant with `endConferenceOnExit` set to `true` was removed from the conference. - `conference-ended-via-api`: the conference was ended by setting its `Status` to `completed` through the REST API. - `down`: SignalWire ended the conference after a service interruption. - `stale`: SignalWire closed a conference that was still open but no longer active. The value can be empty when no reason was recorded.
- `CallSidEndingConference` (string, optional) — The unique identifier of the call whose departure ended the conference. Sent on `conference-end` only. It has no value when the conference was not ended by a participant leaving or being removed.
- `AudioRttAvg` (double, optional) — The participant's average audio round-trip time, in seconds. Sent on `participant-call-quality` only, as `0` when nothing was measured.
- `AudioRttMin` (double, optional) — The participant's minimum audio round-trip time, in seconds. Sent on `participant-call-quality` only, as `0` when nothing was measured.
- `AudioRttMax` (double, optional) — The participant's maximum audio round-trip time, in seconds. Sent on `participant-call-quality` only, as `0` when nothing was measured.
- `AudioOutJitterAvg` (integer, optional) — The average jitter of the audio stream SignalWire sends to the participant. Measured in RTP timestamp units, not milliseconds: divide by the codec's samples per millisecond (8 for PCMU and PCMA, 48 for Opus) to convert. Sent on `participant-call-quality` only, and omitted when no RTCP reports were received from the participant.
- `AudioOutJitterMin` (integer, optional) — The minimum jitter of the audio stream SignalWire sends to the participant. Measured in RTP timestamp units, not milliseconds: divide by the codec's samples per millisecond (8 for PCMU and PCMA, 48 for Opus) to convert. Sent on `participant-call-quality` only, as `0` when no RTCP reports were received from the participant.
- `AudioOutJitterMax` (integer, optional) — The maximum jitter of the audio stream SignalWire sends to the participant. Measured in RTP timestamp units, not milliseconds: divide by the codec's samples per millisecond (8 for PCMU and PCMA, 48 for Opus) to convert. Sent on `participant-call-quality` only, as `0` when no RTCP reports were received from the participant.
- `AudioOutLost` (integer, optional) — The number of audio RTP packets SignalWire sent to the participant that were reported lost. Sent on `participant-call-quality` only, as `0` when nothing was measured.