Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Recording webhooks

Ruut Voice notifies your recordingStatusCallback URL when a recording's state changes, so you can download or process the audio as soon as it's ready.

Configure

Set the callback on the <Record> verb, on <Dial record=…>, or on a call/number via the API:
<Response> <Record recordingStatusCallback="/webhooks/recording" recordingStatusCallbackMethod="POST" recordingStatusCallbackEvent="in-progress completed absent" /> </Response>

Events

EventWhen it fires
in-progressRecording started.
completedRecording finished and is available (default).
absentRecording was requested but no audio was captured.

Payload

ParameterTypeDescription
RecordingSid optionalstringUnique identifier for the recording.
RecordingStatus optionalstringin-progress, completed, or absent.
RecordingUrl optionalstringURL to fetch the recording audio.
RecordingSource optionalstringRecordVerb, DialVerb, Conference, etc.
CallSid optionalstringThe call that was recorded.
AccountSid optionalstringYour account SID.
RecordingChannels optionalstringNumber of channels (1 mono, 2 dual/stereo).
RecordingTrack optionalstringinbound, outbound, or both.

Example

RecordingSid=RE2e9f6b3c&RecordingStatus=completed &RecordingUrl=https%3A%2F%2Fvoice.ruut.chat%2F2010-04-01%2FAccounts%2FAC…%2FRecordings%2FRE2e9f6b3c.mp3 &RecordingSource=DialVerb&CallSid=CA…&RecordingChannels=2

Handle it with the SDK

const payload = parseWebhook(req.body); if (payload.RecordingStatus === "completed") { console.log(`Recording ready: ${payload.RecordingSid}`); console.log(`Download: ${payload.RecordingUrl}`); }
See Record & transcribe calls for the full recording workflow, including how to read back the transcript from the Recording resource.