Skip to main content
If you’re unfamiliar with JWTs and how to create them, use the /meeting-tokens endpoint instead.
Using your API key, you can self-sign tokens that will be accepted by the Daily backend, as long as the API key is still active at the time it is checked. This saves making a round-trip to the Daily API to generate tokens, which is useful if you need to update tokens often or create them in bulk.

Generating self-signed tokens

Create a JWT using your domain’s API key as the secret. The payload must include:
  • r: the room name
  • iat: the current time (Unix timestamp)
  • d: your domain_id
{ "r": "test", "iat": 1610596413, "d": "30f866c3-9123-452a-8723-ff58322d09c5" }
Your domain_id is available from the domain configuration endpoint. To learn more about and test your tokens, refer to https://jwt.io/.

Token property abbreviations

Self-signed token properties use shortened field names in the JWT payload:
PropertyAbbreviation
nbfnbf
expexp
domain_idd
room_namer
user_idud
user_nameu
is_ownero
knockingk
close_tab_on_exitctoe
redirect_on_meeting_exitrome
intercom_join_alertij
start_cloud_recordingsr
start_cloud_recording_optssro
auto_start_transcriptionast
enable_recordinger
enable_screensharess
start_video_offvo
start_audio_offao
meeting_join_hookmjh
eject_at_token_expejt
eject_after_elapsedeje
languil
enable_recording_uierui
permissionsp

Permissions abbreviations

The permissions property uses the following abbreviated structure:
{
  // permissions - all fields optional
  "p": {
    // hasPresence
    "hp": boolean,
    // canSend
    "cs": boolean | // shorthand meaning "all" or "none"
          // A string with some or all of the following values, separated by commas:
          // "v" -> "video"
          // "a" -> "audio"
          // "sv" -> "screenVideo"
          // "sa" -> "screenAudio"
          "v,a,sv,sa",
    // canReceive
    "cr": {
      // base
      "b": boolean | // shorthand meaning "all" or "none"
          {
            "v": false,  // video
            "a": true,   // audio
            "sv": false, // screenVideo
            "sa": true,  // screenAudio
            "cv": {      // customVideo
              "*": false
            },
            "ca": {      // customAudio
              "*": true
            }
          },
      // byUserId
      "u": {
        "foo": boolean | { /* ... */ } // same values as base
        // more user_ids here, or "*" for "all user_ids"
      },
      // byParticipantId
      "p": {
        "42fb115a-6d42-4155-ae4f-c96629f5217d": boolean | { /* ... */ } // same values as base
        // more participant ids here, or "*" for "all participant ids"
      }
    },
    // canAdmin
    "ca": boolean | // shorthand meaning "all" or "none"
          // A string with some or all of the following values, separated by commas:
          // "p" -> "participants"
          // "s" -> "streaming"
          // "t" -> "transcription"
          "p,s,t"
  }
}