If you’re new to call recording with Daily, check out the recording guide first.
S3 bucket configuration requirements
The target S3 bucket can be in any AWS region and must have versioning enabled. Select “Enable” under “Bucket Versioning” when creating your S3 bucket.
Shortcut: automated setup script
Our team has created a GitHub repo with a custom script that configures your S3 bucket for Daily recordings automatically. You’ll need:- Your Daily domain name (the subdomain of your Daily room URLs — e.g.
https://your-domain.daily.co/room-name) - The bucket name
- The bucket region
Creating an IAM policy with appropriate permissions
AWS Identity and Access Management (IAM) controls access to AWS resources. To allow Daily to store recordings in your bucket, create an IAM policy with these permissions:your-bucket-name with the name of your S3 bucket.
Create this policy in the IAM dashboard under Policies → Create.

Creating an IAM role for Daily
Create an IAM role with the policy attached. If you are already familiar with creating IAM roles, feel free to do so with the following settings. Otherwise, follow the walkthrough below.| Setting | Value |
|---|---|
| Trusted Entity Type | AWS Account |
| Trusted AWS account ID | 291871421005 (Daily’s account) |
| Required external ID | Your Daily domain name |
| Maximum session duration | 12 hours |
Role creation walkthrough
- In the IAM dashboard, click Roles → Create Role.
- For “Trusted Entity Type”, select AWS Account.
- Under “An AWS Account”, select Another AWS account.
- Enter
291871421005as the Account ID (this is Daily’s account). - Enter your Daily domain name as the “Require External ID”.

Your domain name is the first part of your room URLs:
https://[domain-name].daily.co/[room-name]. You can also find it as a query parameter at https://dashboard.daily.co/?domain=[domain-name].-
Click Next and attach the IAM policy you created.

- Click Next again to give your role a name and click Create role.
-
Find the role in your IAM Roles list, click Edit, and set Maximum session duration to 12 hours.

-
Copy the ARN (Amazon Resource Name) from the role page — you’ll need it in the next step.

Configuring your Daily domain or room to store recordings in S3
S3 storage can be configured at the room or domain level. Which configuration gets used depends on the following priority order (highest to lowest):- Customer S3 bucket at the room level
- Customer S3 bucket at the domain level
- Daily’s default storage (no configuration needed)
Recordings stored in a customer’s S3 bucket do not incur an additional Daily storage rate. The API will upload a test file (
daily-co-test-upload.txt) to verify permissions.Examples
Set a custom S3 bucket at the room level:bucket_name— name of your S3 bucketbucket_region— AWS region of your S3 bucketassume_role_arn— ARN of the IAM role you created aboveallow_api_access— whether Daily’s recording access link API should allow downloading the recording