Recordings
Webhook events emitted after a call recording is processed. Payload shape depends on the webhook version pinned on the owning Voice App or SIP Trunk.
recording.completed
Triggered when a recording is fully processed and available.
- 2026-06-01
- 2025-08-01
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "recording.completed",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:32:22.010Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"recording_id": "rec_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"recording_url": "https://recordings.frejun.ai/..."
},
"previous_attributes": null
}
{
"event": "recording.completed",
"account_id": "<uuid>",
"data": {
"call_id": "<uuid>",
"recording_id": "<uuid>",
"recording_url": "https://recordings.frejun.ai/..."
}
}
caution
Treat recording_url as time-limited. Fetch it promptly, or request a fresh URL via the API when accessing the file later. URLs are typically valid for 24 hours.
recording.failed
Triggered when recording was attempted but could not be produced.
- 2026-06-01
- 2025-08-01
{
"id": "evt_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"type": "recording.failed",
"api_version": "2026-06-01",
"occurred_at": "2026-06-01T11:32:22.010Z",
"account_id": "acc_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"voice_app_id": "va_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"sip_trunk_id": null,
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"leg_id": null,
"data": {
"call_id": "cs_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"recording_id": "rec_01H8ZXK9M2P7Q3R4S5T6V7W8XY",
"reason": "codec_error"
},
"previous_attributes": null
}
{
"event": "recording.failed",
"account_id": "<uuid>",
"data": {
"call_id": "<uuid>",
"recording_id": "<uuid>"
}
}