> This page is for APIs.

> 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.

# Record status callback

POST 

Sent to the `status_url` of a `calling.record` command when the recording changes state.
The `finished` event carries the recording's final `url`, `size`, and `duration`.

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/apis/rest/webhooks/record-status-callback

## Request

### Payload

- `event_type` (enum, required) — The type of event. Always `calling.call.record` for record status callbacks.
  - Allowed values: `calling.call.record`
- `event_channel` (string, required) — The channel the event was delivered on.
- `timestamp` (double, required) — When the event was sent, as a Unix timestamp in seconds.
- `project_id` (string, required) — Your project ID.
- `space_id` (string, required) — Your Space ID.
- `params` (WebhooksCallingRecordStatusCallbackPayloadParams, required) — The recording and its new state.

## Types

### WebhooksCallingRecordStatusCallbackPayloadParams

The recording and its new state.

- `call_id` (string, required) — ID of the call.
- `node_id` (string, required) — ID of the node the call is on.
- `control_id` (string, required) — The control ID of the record operation, as set in `calling.record`.
- `state` (enum, required) — The recording state. `recording` when recording starts or resumes, `paused` when it is paused, `finished` when it ends, and `no_input` when it ended because no audio was heard before the initial timeout.
  - Allowed values: `recording`, `paused`, `finished`, `no_input`
- `record` (WebhooksCallingRecordStatusCallbackPayloadParamsRecord, required) — The recording settings in effect.
- `segment_id` (string, optional) — ID of the call segment. Present when the call has one.
- `tag` (string, optional) — The tag associated with the call. Present only when a tag was set on the call.
- `url` (string, optional) — The URL of the recording file.
- `recording_id` (string, optional) — ID of the recording.
- `pause_behavior` (enum, optional) — How paused audio is handled, as set in `calling.record.pause`. Present only when `state` is `paused`.
  - Allowed values: `skip`, `silence`
- `size` (integer, optional) — Size of the recording file in bytes. Present only when `state` is `finished` or `no_input`.
- `duration` (integer, optional) — Length of the recording in seconds. Present only when `state` is `finished` or `no_input`.
- `start_time` (double, optional) — When the recording started, as a Unix timestamp in seconds. Present when the recording has ended.
- `end_time` (double, optional) — When the recording ended, as a Unix timestamp in seconds. Present when the recording has ended.
- `first_frame_time` (double, optional) — When the first audio frame was recorded, as a Unix timestamp in seconds. Present when known.

### WebhooksCallingRecordStatusCallbackPayloadParamsRecord

The recording settings in effect.

- `audio` (WebhooksCallingRecordStatusCallbackPayloadParamsRecordAudio, required) — Audio recording settings.

### WebhooksCallingRecordStatusCallbackPayloadParamsRecordAudio

Audio recording settings.

- `format` (string, required) — The audio format of the recording.
- `direction` (string, required) — The direction of audio being recorded.
- `stereo` (boolean, required) — Whether the recording is stereo.