Recording overview
New to Daily recording? Start here — covers recording types, when to use each, how to enable recording on a room or meeting token, and how to retrieve recordings.
enable_recording) before startRecording() will work. See the overview guide above for setup.
Starting a recording
startRecording() begins a recording with optional configuration:
Recording options
The recording mode. Defaults to whichever type is enabled on the room or token. See the recording overview for a description of each type and when to use it.
Output video width in pixels. Default:
1280.Output video height in pixels. Default:
720.Frames per second. Default:
30.Video bitrate in kbps.
Audio bitrate in kbps.
Seconds of idle time (no active streams) before the recording automatically
stops. Default:
60.Maximum recording duration in seconds.
Background color for the composed output when participant tiles do not fill
the frame. Accepts a CSS hex color string, e.g.
'#1a1a2e'.Identifier for this recording instance. Required when running multiple
simultaneous recordings. See multiple simultaneous recordings.
Controls how participant tiles are arranged in the composed output. See
DailyStreamingLayoutConfig for the full type reference, or layout presets below for usage examples.Layout presets
Thelayout option controls the visual composition of cloud recordings. See DailyStreamingLayoutConfig for field-level documentation on each preset. For screenshots, see the recording overview.
default
single-participant
active-participant
portrait
audio-only
custom
Use Daily’s VCS baseline composition to fully control the layout programmatically — modes, overlays, labels, participant ordering, and more. The startRecording() reference documents all available composition_params.
participants
Several presets accept a participants field to filter which participants’ video and audio are included in the recording. See DailyStreamingLayoutConfig for the full field list.
You must resend
participants on every updateRecording() call — it is not persisted from the previous call. If omitted on update, all participants will be included.Updating layout during recording
CallupdateRecording() to switch layouts while a recording is in progress, without stopping and restarting:
Stopping a recording
stopRecording() ends the active recording:
Multiple simultaneous recordings
Pass a uniqueinstanceId to run more than one recording at the same time — for example, two cloud recordings with different layouts for different audiences:
Multiple instances work best when each runs the same recording type. Mixing types (e.g.,
cloud + raw-tracks simultaneously) is possible but not a recommended pattern — if you need both, contact Daily support to discuss your use case. For full details on instance limits and billing, see the multi-instance guide.