Configuration

Many room configuration fields are also available as meeting token fields. If a configuration field is set for both the room and the user's meeting token, the token setting takes precedence. Learn more in our blog post on this topic.

Daily strongly recommends adding room_name and exp values to all meeting tokens to improve app security. Read more on the Daily blog.

string

The room for which this token is valid. If room_name isn't set, the token is valid for all rooms in your domain. *You should always set room_name if you are using this token to control access to a meeting.

Kick this user out of the meeting at the time this meeting token expires. If either this property or eject_after_elapsed are set for the token, the room's eject properties are overridden.

See an example in our advanced security tutorial.

Default: false

Kick this user out of the meeting this many seconds after they join the meeting. If either this property or eject_at_token_exp are set for the token, the room's eject properties are overridden.

See an example in our advanced security tutorial.

integer

"Not before". This is a unix timestamp (seconds since the epoch.) Users cannot join a meeting in with this token before this time.

integer

"Expires". This is a unix timestamp (seconds since the epoch.) Users cannot join a meeting with this token after this time.

Daily strongly recommends adding an exp value to all meeting tokens. Learn more in our Daily blog post: Add advanced security to video chats with the Daily API

boolean

The user has meeting owner privileges. For example, if the room is configured for owner_only_broadcast and used in a Daily Prebuilt call, this user can send video, and audio, and can screenshare.

Default: false
string

The user's name in this meeting. The name displays in the user interface when the user is muted or has turned off the camera, and in the chat window. This username is also saved in the meeting events log (meeting events are retrievable using the analytics API methods.)

string

The user's ID for this meeting session. During a session, this ID is retrievable in the participants() method and related participant events. Either during or after a session concludes, this ID is retrievable using the /meetings REST API endpoint. You can use user_id to map between your user database and meeting events/attendance.

For domains configured for HIPAA compliance, if the user_id value is a UUID (for example, f81d4fae-7dec-11d0-a765-00a0c91e6bf6), then the UUID will be returned for the participant in the /meetings REST API endpoint. Otherwise, the string hipaa will be returned in order to remove potential PHI. During a session, the provided user_id will always be returned through the participants() method and related events, regardless of the user_id value.

The user_id has a limit of 36 characters.

Sets whether or not the user is allowed to screen share. This setting applies for the duration of the meeting. If you're looking to dynamically control whether a user can screen share during a meeting, then use the permissions token property.

Default: true

Disable the default behavior of automatically turning on a participant's camera on a direct join() (i.e. without startCamera() first).

Default: false

Disable the default behavior of automatically turning on a participant's microphone on a direct join() (i.e. without startCamera() first).

Default: false
Options: "cloud","local","raw-tracks"

Determines whether the participant using the meeting token enters a waiting room with a camera, mic, and browser check before joining a call. If this property is also set in the room or domain's configuration, the meeting token's configuration will take priority.

⚠️ You must be using Daily Prebuilt to use enable_prejoin_ui.

Sets whether the participant sees a closed captions button in their Daily Prebuilt call tray. When the closed caption button is clicked, closed captions are displayed locally.

When set to true, a closed captions button appears in the call tray. When set to false, the closed captions button is hidden from the call tray.

Note: Transcription must be enabled for the room or users must have permission to start transcription for this feature to be enabled. View the transcription guide for more details.

⚠️ You must be using Daily Prebuilt to use enable_live_captions_ui.

Determines whether the participant using the meeting token can see the Recording button in Daily Prebuilt's UI, which can be found in the video call tray. If this value is false, the button will not be included in the tray. If it's true, the Recording button will be displayed.

This option is useful when only specific call participants should have recording permissions.

⚠️ You must be using Daily Prebuilt to use enable_recording_ui.

Reduces the volume of log messages. This feature should be enabled when there are more than 200 participants in a meeting to help improve performance.

See our guides for supporting large experiences for additional instruction.

Default: false

Start cloud recording when the user joins the room. This can be used to always record and archive meetings, for example in a customer support context.

Note: This requires the enable_recording property of the room or token to be set to cloud. If you want to automatically record calls with other recording modes, use callObject.startRecording() after await callObject.join() in your code.

Default: false

Options for use when start_cloud_recording is true. See startRecording for available options.

⚠️ Specifying too many options may cause the token size to be very large. It is recommended to use token less than 2048 characters. For complex usecases, use the daily-js API.

Start transcription when an owner joins the room. This property can be used to always transcribe meetings once an owner joins.

Default: false

(For meetings that open in a separate browser tab.) When a user leaves a meeting using the button in the in-call menu bar, the browser tab closes. This can be a good way, especially on mobile, for users to be returned to a previous website flow after a call.

Default: false

(For meetings that open in a separate browser tab.) When a user leaves a meeting using the button in the in-call menu bar, the browser loads this URL. A query string that includes a parameter of the form recent-call=<domain>/<room> is appended to the URL. On mobile, you can redirect to a deep link to bring a user back into your app.

string

The default language of the Daily prebuilt video call UI, for this room.

Setting the language at the token level will override any room or domain-level language settings you have.

Read more about changing prebuilt UI language settings.

* Norwegian "no" and Russian "ru" are only available in the new Daily Prebuilt.

Options: "de","en","es","fi","fr","it","jp","ka","nl","no","pt","pt-BR","pl","ru","sv","tr","user"
Default: en

Specifies the initial default permissions for a non-meeting-owner participant joining a call.

Each permission (i.e. each of the properties listed below) can be configured in the meeting token, the room, and/or the domain, in decreasing order of precedence.

Participant admins (those with the 'participants' value in their canAdmin permission) can also change participants' permissions on the fly during a call using updateParticipant() or updateParticipants().

Whether the participant appears as "present" in the call, i.e. whether they appear in participants().

boolean | array

Which types of media a participant should be permitted to send.

Can be:

  • An Array containing any of 'video', 'audio', 'screenVideo', and 'screenAudio'
  • true (meaning "all")
  • false (meaning "none")
boolean | array

Which admin tasks a participant is permitted to do.

Can be:

  • An array containing any of 'participants', 'streaming', or 'transcription'
  • true (meaning "all")
  • false (meaning "none")