Skip to navigation

Recording status callback

View as MarkdownOpen in Claude

Payload sent by SignalWire to your RecordingStatusCallback URL when a recording status event occurs.

Recordings are not always available immediately — especially at high call volumes. This callback lets your app react as soon as a recording is ready, whether that means uploading it to external storage, sending it via email, or forwarding the URL via SMS.

Configure RecordingStatusCallback when creating a call via the API or when using Dial, Conference, or Record.

Use RecordingStatusCallbackEvent to request callbacks for specific events. If omitted, only the completed event is sent. Possible values: in-progress, paused, resumed, completed, absent.

SignalWire sends the parameters as a form-encoded (application/x-www-form-urlencoded) POST body, not as JSON. When the callback method is GET, they are sent as query parameters instead.

StatusDescription
in-progressThe recording has begun.
pausedThe recording was paused. Sent for call recordings only.
resumedThe recording resumed after a pause. Sent for call recordings only.
completedThe file is available for access.
absentThe recording was too short or the call was silent — no audio was detected.

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.

Payload

The payload of this webhook request is an object.
AccountSidstringRequired
The unique ID of the project this call is associated with.
RecordingSidstringRequired
The unique identifier for the recording.
RecordingUrlstringRequired
The URL for the audio recording. For call recordings on accounts created before February 15, 2020, this is a path relative to your Space URL rather than a full URL.
RecordingStatusenumRequired

The status of the recording.

  • in-progress: Recording has begun.
  • paused: Recording was paused. Call recordings only.
  • resumed: Recording resumed after a pause. Call recordings only.
  • completed: File is available.
  • absent: Recording was too short or no audio was detected.
Allowed values:
RecordingChannelsintegerRequired
The number of channels in the recording.
RecordingSourceenumRequired

What started the recording.

  • RecordVerb: the <Record> verb.
  • DialVerb: the record attribute of <Dial>, including a <Dial> to a <Conference>.
  • Queue: the record attribute of a <Dial> to a <Queue>.
  • StartCallRecordingAPI: a request to the REST API to start a call recording.
  • Conference: a conference recording.

The parameter is always sent. Its value is empty for a recording started by Record=true when creating a call through the REST API.

RecordingTrackenumRequired

Which audio track was recorded.

  • inbound: audio received by SignalWire.
  • outbound: audio sent by SignalWire.
  • both: both tracks.
Allowed values:
RecordingStartTimestringRequired
The timestamp, in RFC 2822 format, of when the recording started.
TrimstringRequired

Whether leading and trailing silence was trimmed from the recording: trim-silence or do-not-trim. The parameter is always sent. Its value is empty when the recording has no trim setting, as for a conference recording.

CallSidstringOptional

A unique identifier for the recorded call. May be used to later retrieve this call from the REST API. Present for call recordings; conference recordings send ConferenceSid instead.

ConferenceSidstringOptional

A unique identifier for the recorded conference. Present for conference recordings; call recordings send CallSid instead.

RecordingDurationintegerOptional

The duration, in seconds, of the recording. Only present when RecordingStatus is completed.

Response

200
Webhook received