POST request to
/rooms creates a new room.
If the room is created, a room object is returned. So you can, for example, create a room, then immediately grab the room
url from the API response and use it in your user interface. If you don't set privacy configuration parameters when you create the room, you can always set/change them later.
config part of the room object includes only configuration parameters that differ from room configuration defaults.
If the room is not created, you'll get back an HTTP error, with information about the error in the HTTP response body.
Here's how you might create a room with an auto-generated name, set to expire in an hour. This is a pretty common use case. For example, maybe you're creating rooms on demand to use for customer support or account verification. You don't need to set the room's privacy, because you won't be sharing the room URL other than within your own UI, and you won't be re-using the room. It is worth setting the room
exp, just so that the room is auto-deleted and you don't end up with a huge number of live rooms.
Math.floor(Date.now()/1000) as a base value when creating near-future expiration timestamps. Don't just use
Here's how you might create a room with a human-readable name, and privacy set to
private, and with the default behavior of everyone's camera and mic turned off initially. You can create meeting tokens to allow access to this room (Learn more in our guide to room access control).
When a room object is returned by an API call, only configuration options that differ from the defaults are included in the
Defaults to a randomly generated string A room name can include only the uppercase and lowercase ascii letters, numbers, dash and underscore. In other words, this regexp detects an invalid room name: /[^A-Za-z0-9_-]/.
Together, the domain name and the room name cannot exceed 41 characters. You'll get an error if you try to create a room with a name that's too long.
Determines who can access the room.
"Expires". This is a unix timestamp (seconds since the epoch.) Users cannot join a meeting in this room after this time.
Turns on a lobby experience for private rooms. A participant without a corresponding meeting token can request to be admitted to the meeting with a "knock", and wait for the meeting owner to admit them.
signaling_impl room or domain property set to
Determines whether Daily Prebuilt displays background blur controls. When set to
true, a participant can enable blur during a Daily Prebuilt call.
⚠️ This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.
When a participant first joins a meeting in a room, keep their camera off.
When a participant first joins a meeting in a room, keep their microphone muted.
The default language of the Daily prebuilt video call UI, for this room.
Setting the language at the room level will override any domain-level language settings you have.
Read more about changing prebuilt UI language settings.
"no" and Russian
"ru" are only available in the new Daily Prebuilt.
Sets a URL that will receive a webhook when a user joins a room. Default is NULL. Character limit for webhook URL is 255.
Sets the signaling type.
Daily calls use signaling servers to manage all of the participants in a given call session. In an SFU/server mode call, that same server will also send and receive all the audio and video from each participant. In a peer-to-peer call, each participant sends media directly to and from each other peer, but a signaling server still manages call state.
Daily runs servers in several different AWS regions to minimize latency for users around the world. The job of 'picking' a call server is handled when the first participant joins a room. Their browser connects to a call server using Amazon's Route 53 DNS resolution, which chooses a server in the region closest to them.
This isn't always optimal. For example, if one person joins in London, and then ten more people join from Cape Town, the call will still be hosted out of
eu-west-2 . The majority of the participants will have higher latency to the server than if one of them had joined first and the call was being hosted in
af-south-1. In cases like this, you may want to configure your domain (or a specific room) to always choose a call server in a specific AWS region.