Record video calls automatically with the API

How to configure your calls to start recording as soon as you login

There should be a word for that feeling when, halfway through leading a meeting that you meant to record, you realize you forgot to click the little red button. This can be especially frustrating in lots of situations:

* Webinars: customers looking forward to a recording miss out on new ways to use a product.
* Team meetings: OOO colleagues might’ve needed the context later.
* Employee training: employees onboarding to new roles lose the chance to learn from customer interactions (e.g. [video calls via Intercom](
* Classrooms: students don’t get to hear the smart questions their peers ask during lecture.

At, we want to make every part of a video call easier: before, during, and after. That’s why we baked an auto recording option into our API. All you have to do is [create a meeting token]( and set its `start_cloud_recording` property to `true`.

##Create the meeting token
Before you can auto record, you’ll need to sign up for our [Scale Plan]( You should be able to sign up right from your dashboard, but if you need help or have questions please [reach out](

You’ll need a room link handy. There are lots of ways to create one (you can read more about configuring rooms in our [docs]( or in [other blog posts](

I’ll run this curl command to create a private test room for our use case:

    -- CODE language-bash --
    curl --request POST \
    --url \
    --header 'authorization: Bearer INSERT_YOUR_TOKEN_HERE' \
    --header 'content-type: application/json' \
    --data '{"name":"test-room","privacy":"private"}'

We’ll use the `/meeting-tokens` endpoint to set up auto recording. If you’ve ever [set up private access to a room](, this might sound familiar. The Daily [meeting token object]( not only helps us manage who can access a room, but also lets us configure _how_ that person experiences the meeting once they get there. Will they join with mics on or off? Are they allowed to screen share? You can explore all the possible configuration properties [in our docs](

For now, we’re most interested in the `start_cloud_recording` property. When we set this to `true`, cloud recording will automatically start when a participant joins the room.

Run the below `curl` command to create a meeting token with those two properties set to true:

    -- CODE language-bash --
    curl --request POST \
    --url \
    --header 'authorization: Bearer INSERT_YOUR_TOKEN_HERE' \ 
    --header 'content-type: application/json' \
    --data '{"properties":{"start_cloud_recording":true}}'

You should see a response like this if all went as planned:

    -- CODE language-json --    

To quickly test that auto recording works, add the `t=INSERT_TOKEN` query parameter to your meeting link.

The link should look something like:


When you paste that url into your browser, you should see a message that this meeting is set to auto record:

screenshot of ‘Click to start recording’ notification when joining call
You should see a prompt to start recording the call as soon as you join.

After you click it, you should see a recording bar at the bottom of the call:

person points down on video call screen at recording bar
You should see "Recording in progress" noted at the bottom of your screen. Roughly where I'm pointing!

Once you’re done with the recording and the call, you can find the recording in your dashboard at ``.

##What’s next?
Pasting tokens into your browser link is great for testing, but you’ll probably need to embed auto recording directly within your own video application. To do that, you can pass the [token as a property]( to any of the [factory methods](, or to the `.join()` method. If you’re using [`createFrame()`]( for example, this might look something like:

    -- CODE language-js --
    callFrame = window.DailyIframe.createFrame({
      url: 'YOUR_URL_HERE' 
      token: 'YOUR_TOKEN_HERE'

To learn about generating your own tokens and meeting rooms dynamically on the server, [see this blog post](

And there you have it! Now you won’t have to worry about forgetting to record meetings you’ll need to share later.

To dive deeper into our `/meeting-tokens` endpoint, have a look at Phil’s blog post on [introducing room access control]( Or, to try out other Scale Plan features, [experiment with live streaming]( And, as always, please [let us know of any feedback or feature requests](

Recent posts