documentation

Optional call recording

Workspace owners choose recording in Calls → Settings or during onboarding. Recording is on for every workspace unless an owner turns it off. Retention is 7 days, 30 days or 1 year; the default is 30 days. A call keeps the retention saved when it starts, so later changes apply to future calls only.

Agents and individual calls can opt out with recording_enabled: false. They cannot turn recording on for a workspace that has it off.

Recording never blocks a call. If capture fails, the call continues and the recording status is unavailable or failed.

GET /calls/{id}/recording redirects to a short-lived signed playback URL and returns 404 when no audio is available or it has expired. Call details carry recording_enabled, recording_status and recording_duration_ms.

Self-hosting

Set HAIL_RECORDING_ENABLED=true and HAIL_RECORDING_RETENTION_DAYS (7, 30 or 365; default 30). Configure S3_BUCKET, S3_REGION, S3_ACCESS_KEY and S3_SECRET_KEY; S3_ENDPOINT for an S3-compatible store. infra/terraform/s3_assets.tf creates the bucket with matching lifecycle rules and a recordings-only IAM user. Point a LiveKit webhook at https://<api host>/v1/livekit/recording-events.

On this page