Welcome to the new Daily Docs. Please let us know what you think.

Recordings

Recording Daily calls

To turn on recording, you need to be on the Scale plan. There is also a per minute recording fee for cloud recording.

We support local recording to a participant's own device in addition to three other recording types: cloud, rtp-tracks, and output-byte-stream. Each offers different browser support and requires varying bandwidth usage (see Recording Types for details).

With the exception of rtp-tracks, a participant must join on Chrome from a desktop or laptop to record. rtp-tracks has more browser flexibility; it's possible to record from any browser, including mobile.

All recordings are saved as .webm files

Read about the settings we use for encoding and tips on using and transcoding .webm files.

What to tell participants before they record calls

Use ethernet if possible If participants will be recording a lot of calls, they should use wired Ethernet connections if available, rather than WiFi. Ethernet reduces network packet loss and makes a big difference for audio and video quality.

Limit bandwidth constraints A good quality video call requires about 750kb/s of upstream bandwidth. Cloud recording doubles the amount of bandwidth needed. If the participant doesn't have about 1Mb/s of consistent upstream bandwidth, any ongoing cloud recording will stop and switchover to a local recording.

Stop recording before leaving the call Before a participant recording a call leaves a meeting, make sure they stop recording. If they don't, the recording status could become stuck 'in-progress' and the file unable to be retrieved.

Recording types

local recording

Recorded and saved locally on the user’s computer.

To enable local recording for a meeting either:

Other recording types

Cloud recordings are stored in the Daily cloud until you delete them. You can list, retrieve, and delete cloud recording objects, and generate time-limited download links for them.

To automatically start a cloud recording when a user joins a room, use a meeting token with the start_cloud_recording property set to true. As soon as the user joins the room, a 5-second recording countdown will be displayed in the user interface, and then the recording will start.

cloud

Recorded locally, but sent to and stored in the Daily cloud. Recordings are stored until you delete them.

To enable cloud recording for a meeting either:

cloud recordings can be downloaded from the Daily dashboard (in the left rail, click "Recordings").

Cloud recording and participant bandwidth

Cloud recording requires that the user who is doing the recording have plenty of upstream bandwidth available. A good quality video call requires about 750kb/s of upstream bandwidth. Cloud recording doubles the amount of bandwidth needed. If the user doesn't have about 1Mb/s of consistent upstream bandwidth, any ongoing cloud recording will stop and switchover to a local recording.

rtp-tracks

Server-side recording, stored in the Daily cloud. Recordings are stored until you delete them.

If you need to support recording across multiple browsers and/or mobile, or to manage individual media tracks, use this recording type.

To enable rtp-tracks recording for a meeting either:

Heads up!

The prebuilt UI does not show recording controls for rtp-tracks recording. Instead, you'll need to build your own recording controls using Daily recording events.

Retrieve rtp-tracks recordings

Download links are not available in the dashboard for rtp-tracks recordings. Instead:

  1. Get the recording id: send a GET request to the /recordings endpoint, or listen for recording events.
  2. Locate the "tracks" array for the recording_id. "tracks" contains all track information for the recording, including id's for each individual track.
  3. Find the download_url for the track_id. The url specifies a relative path to the Daily REST API base URL (api.daily.co), and will look like: /v1/recordings/RECORDING_ID/track/TRACK_ID.webm
  4. Send a GET request to the Daily API for the download_url, for example:

What if status is stuck "in-progress"? Or "canceled"?

If responses to your API requests return that the recording is still "in_progress" after more than 24 hours, it's likely that the recording never left the client of person who was recording and made it to cloud. It's important to tell the participant recording to stop the recording before they exit the meeting to prevent this.

A "canceled" status means that there wasn't enough bandwidth to support a cloud recording, so the recording automatically switched to local.

output-byte-stream

Recorded locally, byte-stream can be sent to your own cloud storage (i.e. to S3 using the multi-part upload API).

To enable output-byte-stream recording for a meeting either:

Retrieving output-byte-stream recordings

Download links are not available in the dashboard for output-byte-stream recordings. Instead, listen for the recording-data event to retrieve the raw bytes.