Daily

App · Video Conferencing · 15 actions

Run video calls on Daily from a workflow: create rooms with the features and expiry you want, hand each guest a meeting token and a ready-made join link, see who is in a call right now, message or remove participants, and look back at past meetings and who attended.

Actions

ActionWhat it does
Create a meeting tokenMint a signed token that lets one person into a room, private rooms included, with their name and what they can do.
Create a roomCreate a Daily video room and get its URL.
Delete a roomDelete a room.
Eject participantsRemove people from a room's call, by participant session id or by user id.
Get a meetingOne meeting session: its room, when it started, how long it ran and the most people in it at once.
Get a roomRead one room: its URL, privacy and settings.
Get domain settingsThe Daily domain this connection's key belongs to, and its domain-wide settings.
Get presenceEveryone in every room on this domain right now, grouped by room.
Get who is in a roomThe people in a room's call right now, with when they joined.
List meeting participantsEveryone who joined one meeting session, with when they joined and how long they stayed.
List meetingsPast and ongoing meeting sessions on this domain, newest first, each with who joined.
List roomsList the rooms on this Daily domain, newest first.
Send an app messageSend a data message to the apps of everyone in a live call, or to one participant.
Update a roomChange a room's privacy or settings.
Validate a meeting tokenCheck whether a meeting token is still good on this domain, and read what it grants.

Create a meeting token

Mint a signed token that lets one person into a room, private rooms included, with their name and what they can do. Name a room and you also get a ready-made join URL.

Inputs

Expiresexpdate and timeRequired
When the token stops working. Daily recommends every token expire.
Roomroom_nametext
The room the token is for. Leave blank for a token that works in every room on the domain.
Owneris_ownertrue/false
Owners can let knocking guests in, remove people and change others' settings.Default: false.
Display nameuser_nametext
The name others see in the call.
User IDparticipant_user_idtext
Your own id for this person. It shows up in presence, meeting history and presence, and is what a ban applies to.
Valid fromnbfdate and time
The token does not work before this moment.
Remove them when it expireseject_at_token_exptrue/false
End their call when the token expires.Default: false.
Remove them after (seconds)eject_after_elapsednumber
End their call this many seconds after they join.At least 1.
Camera off on joinstart_video_offtext
Leave blank to follow the room's setting.One of: true (On), false (Off).
Microphone off on joinstart_audio_offtext
Leave blank to follow the room's setting.One of: true (On), false (Off).
Screen sharingenable_screensharetext
Leave blank to follow the room's setting.One of: true (On), false (Off).
Pre-join screenenable_prejoin_uitext
Leave blank to follow the room's setting.One of: true (On), false (Off).
Join by knockingknockingtext
The token only lets them knock, and an owner lets them in.One of: true (On), false (Off).
Redirect when they leaveredirect_on_meeting_exittext
A URL to send them to when they leave the call.
Interface languagelangtext
The language of Daily's call interface. Daily's default is English.One of: en (English), da (Danish), de (German), es (Spanish), fi (Finnish), fr (French), it (Italian), jp (Japanese), ka (Georgian), nl (Dutch), and 8 more.

Outputs

expnumber
expires_attext
join_urltext
room_nametext
tokentext
Example output
{
  "exp": 1790003600,
  "expires_at": "2026-09-21T14:33:20Z",
  "join_url": "https://your-domain.daily.co/weekly-standup?t=eyJhbGciOiJIUzI1NiJ9.eyJyIjoid2Vla2x5LXN0YW5kdXAifQ.sig",
  "room_name": "weekly-standup",
  "token": "eyJhbGciOiJIUzI1NiJ9.eyJyIjoid2Vla2x5LXN0YW5kdXAifQ.sig"
}

Create a room

Create a Daily video room and get its URL. Every field is optional: Daily picks a random name if you leave it blank. Recording and transcription are paid Daily features and are not offered here.

Inputs

Room namenametext
The last part of the room's URL. Letters, numbers, '-' and '_'. Leave blank for a random one.
Privacyprivacytext
Public rooms let in anyone with the link. Private rooms need a meeting token, or an owner letting a knocking guest in. Daily's default is public.One of: public (Public: anyone with the link can join), private (Private: joining needs a meeting token).
Available fromnbfdate and time
Nobody can join before this moment. Leave blank for Daily's default.
Expiresexpdate and time
Nobody can join after this moment, and Daily stops listing the room. Set one for a room you only need for a while.
Most participantsmax_participantsnumber
How many people can be in the call at once, up to 200. Daily's default is 200.From 1 to 200.
Chatenable_chattext
Text chat in Daily's call interface. Off by default.One of: true (On), false (Off).
Knockingenable_knockingtext
On a private room, lets people without a token ask to be let in.One of: true (On), false (Off).
Screen sharingenable_screensharetext
Whether participants can share their screen. On by default.One of: true (On), false (Off).
Pre-join screenenable_prejoin_uitext
A screen to check camera and microphone before joining.One of: true (On), false (Off).
People panelenable_people_uitext
The panel listing everyone in the call.One of: true (On), false (Off).
Emoji reactionsenable_emoji_reactionstext
Lets participants send emoji reactions.One of: true (On), false (Off).
Hand raisingenable_hand_raisingtext
Lets participants raise a hand.One of: true (On), false (Off).
Advanced chatenable_advanced_chattext
Chat with emoji reactions and file sharing. Off by default.One of: true (On), false (Off).
Breakout roomsenable_breakout_roomstext
Lets an owner split the call into breakout rooms.One of: true (On), false (Off).
Camera off on joinstart_video_offtext
Participants join with their camera off. Off by default.One of: true (On), false (Off).
Microphone off on joinstart_audio_offtext
Participants join muted. Off by default.One of: true (On), false (Off).
Remove everyone at expiryeject_at_room_exptext
Ends the call for everyone when the room expires. Off by default.One of: true (On), false (Off).
Remove each person after (seconds)eject_after_elapsednumber
Removes each participant this many seconds after they join.At least 1.
Interface languagelangtext
The language of Daily's call interface. Daily's default is English.One of: en (English), da (Danish), de (German), es (Spanish), fi (Finnish), fr (French), it (Italian), jp (Japanese), ka (Georgian), nl (Dutch), and 8 more.
Server regiongeotext
Pin the call to one Daily region, such as us-west-2. Leave blank to let Daily pick the nearest one.
Join hook URLmeeting_join_hooktext
A URL Daily calls each time somebody joins this room's call.
Other propertiesextra_propertiesobject
Any other room property from Daily's reference, as JSON. The fields above win if both set the same property.

Outputs

api_createdtrue/false
configobject
created_attext
idtext
nametext
privacytext
urltext
Example output
{
  "api_created": true,
  "config": {
    "enable_chat": true,
    "exp": 1790000000
  },
  "created_at": "2026-09-21T09:00:00.000Z",
  "id": "5e3cf703-5547-47d6-a371-37b1f0b4427f",
  "name": "weekly-standup",
  "privacy": "private",
  "url": "https://your-domain.daily.co/weekly-standup"
}

Delete a room

Delete a room. Anyone in a call in it is removed. The name can be used again afterwards.

Inputs

Roomroom_nametextRequired
Which room to delete.

Outputs

deletedtrue/false
nametext
Example output
{
  "deleted": true,
  "name": "weekly-standup"
}

Eject participants

Remove people from a room's call, by participant session id or by user id. Ban to stop those user ids joining again. Without a ban, an empty room is reported as nobody ejected.

Inputs

Roomroom_nametextRequired
The room to remove them from.
Participant session IDsparticipant_idslist
Session ids ('id' from 'Get who is in a room'), up to 100.
User IDsparticipant_user_idslist
User ids as set by meeting tokens, up to 100.
Ban thembantrue/false
Also stop these user ids from joining again.Default: false.

Outputs

bannedtrue/false
ejected_countnumber
ejected_idslist
participants_presentnumber
room_nametext
Example output
{
  "banned": false,
  "ejected_count": 1,
  "ejected_ids": [
    "d61cd7b2-a273-42b4-89bd-be763fd562c1"
  ],
  "participants_present": 3,
  "room_name": "weekly-standup"
}

Get a meeting

One meeting session: its room, when it started, how long it ran and the most people in it at once.

Inputs

Meeting session IDmeeting_idtextRequired
The id of one meeting session: the 'id' a 'List meetings' step returns for it, or 'meeting_session_id' from a presence step.

Outputs

durationnumber
idtext
max_participantsnumber
ongoingtrue/false
roomtext
start_timenumber
start_time_isotext
Example output
{
  "duration": 1800,
  "id": "16d8e9a4-0b38-4a6e-9a1a-3f1c1b5e2a90",
  "max_participants": 4,
  "ongoing": false,
  "room": "weekly-standup",
  "start_time": 1790000460,
  "start_time_iso": "2026-09-21T13:41:00Z"
}

Get a room

Read one room: its URL, privacy and settings.

Inputs

Roomroom_nametextRequired
Which room to read.

Outputs

api_createdtrue/false
configobject
created_attext
idtext
nametext
privacytext
urltext
Example output
{
  "api_created": true,
  "config": {
    "enable_chat": true,
    "exp": 1790000000
  },
  "created_at": "2026-09-21T09:00:00.000Z",
  "id": "5e3cf703-5547-47d6-a371-37b1f0b4427f",
  "name": "weekly-standup",
  "privacy": "private",
  "url": "https://your-domain.daily.co/weekly-standup"
}

Get domain settings

The Daily domain this connection's key belongs to, and its domain-wide settings.

Inputs

None.

Outputs

configobject
domain_idtext
domain_nametext
Example output
{
  "config": {
    "hide_daily_branding": false,
    "lang": "en"
  },
  "domain_id": "8e7b3c1a-2f4d-4a5b-9c6d-7e8f9a0b1c2d",
  "domain_name": "your-domain"
}

Get presence

Everyone in every room on this domain right now, grouped by room. Rooms nobody is in are left out.

Inputs

None.

Outputs

participant_countnumber
room_countnumber
roomslist
Example output
{
  "participant_count": 1,
  "room_count": 1,
  "rooms": [
    {
      "participant_count": 1,
      "participants": [
        {
          "duration": 312,
          "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
          "join_time": "2026-09-21T09:01:12.000Z",
          "meeting_session_id": "16d8e9a4-0b38-4a6e-9a1a-3f1c1b5e2a90",
          "room": "weekly-standup",
          "user_id": "user_8241",
          "user_name": "Ada"
        }
      ],
      "room": "weekly-standup"
    }
  ]
}

Get who is in a room

The people in a room's call right now, with when they joined. An empty list means nobody is in it.

Inputs

Roomroom_nametextRequired
Which room to look in.
How manylimitnumber
At most this many, up to 100. Daily's default is 100.From 1 to 100.
User IDparticipant_user_idtext
Only the participant with this user id, as set by their meeting token.
User nameuser_nametext
Only participants with this display name.

Outputs

participantslist
room_nametext
total_countnumber
Example output
{
  "participants": [
    {
      "duration": 312,
      "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
      "join_time": "2026-09-21T09:01:12.000Z",
      "meeting_session_id": "16d8e9a4-0b38-4a6e-9a1a-3f1c1b5e2a90",
      "room": "weekly-standup",
      "user_id": "user_8241",
      "user_name": "Ada"
    }
  ],
  "room_name": "weekly-standup",
  "total_count": 1
}

List meeting participants

Everyone who joined one meeting session, with when they joined and how long they stayed. Pass 'next_cursor' into 'Joined after' for the next page.

Inputs

Meeting session IDmeeting_idtextRequired
The id of one meeting session: the 'id' a 'List meetings' step returns for it, or 'meeting_session_id' from a presence step.
How manylimitnumber
At most this many, up to 100. Daily's default is 100.From 1 to 100.
Joined afterjoined_aftertext
A participant id: list the people who joined after them. Use the 'next_cursor' from a previous run.
Joined beforejoined_beforetext
A participant id: list the people who joined before them.

Outputs

countnumber
meeting_idtext
next_cursortext
participantslist
Example output
{
  "count": 1,
  "meeting_id": "16d8e9a4-0b38-4a6e-9a1a-3f1c1b5e2a90",
  "next_cursor": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
  "participants": [
    {
      "duration": 312,
      "join_time": 1790000472,
      "join_time_iso": "2026-09-21T13:41:12Z",
      "participant_id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
      "user_id": "user_8241",
      "user_name": "Ada"
    }
  ]
}

List meetings

Past and ongoing meeting sessions on this domain, newest first, each with who joined. A session starts when the first person joins a room and ends when the last one leaves.

Inputs

Roomsroomstext
Only sessions in these rooms, up to 10.
Started aftertimeframe_startdate and time
Only sessions that started at or after this.
Started beforetimeframe_enddate and time
Only sessions that started before this.
Only ongoingongoingtrue/false
Only sessions still in progress.Default: false.
Leave out participantsno_participantstrue/false
Skip the participant lists, for a smaller result.Default: false.
How manylimitnumber
At most this many, up to 100. Daily's default is 100.From 1 to 100.
Starting afterstarting_aftertext
A session id: list the ones after it. Use the 'next_cursor' from a previous run.
Ending beforeending_beforetext
A session id: list the ones before it.

Outputs

countnumber
meetingslist
next_cursortext
total_countnumber
Example output
{
  "count": 1,
  "meetings": [
    {
      "duration": 1800,
      "id": "16d8e9a4-0b38-4a6e-9a1a-3f1c1b5e2a90",
      "max_participants": 4,
      "ongoing": false,
      "participants": [
        {
          "duration": 312,
          "join_time": 1790000472,
          "join_time_iso": "2026-09-21T13:41:12Z",
          "participant_id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
          "user_id": "user_8241",
          "user_name": "Ada"
        }
      ],
      "room": "weekly-standup",
      "start_time": 1790000460,
      "start_time_iso": "2026-09-21T13:41:00Z"
    }
  ],
  "next_cursor": "16d8e9a4-0b38-4a6e-9a1a-3f1c1b5e2a90",
  "total_count": 1
}

List rooms

List the rooms on this Daily domain, newest first. Rooms whose expiry has passed are not listed. Pass 'next_cursor' into 'Starting after' to get the next page.

Inputs

How manylimitnumber
At most this many, up to 100. Daily's default is 100.From 1 to 100.
Starting afterstarting_aftertext
A room id: list the rooms after it. Use the 'next_cursor' from a previous run of this step.
Ending beforeending_beforetext
A room id: list the rooms before it. 'OLDEST' gets the oldest page.

Outputs

countnumber
has_moretrue/false
next_cursortext
roomslist
total_countnumber
Example output
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "rooms": [
    {
      "api_created": true,
      "config": {
        "enable_chat": true,
        "exp": 1790000000
      },
      "created_at": "2026-09-21T09:00:00.000Z",
      "id": "5e3cf703-5547-47d6-a371-37b1f0b4427f",
      "name": "weekly-standup",
      "privacy": "private",
      "url": "https://your-domain.daily.co/weekly-standup"
    }
  ],
  "total_count": 1
}

Send an app message

Send a data message to the apps of everyone in a live call, or to one participant. Your app receives it as an 'app-message' event. If nobody is in the room, nothing is sent and the step reports sent: false.

Inputs

Roomroom_nametextRequired
The room whose call to message.
Message datadataobjectRequired
Any JSON object, up to 4 KB.
Recipientrecipienttext
One participant's session id ('id' from 'Get who is in a room'). Leave blank to send to everyone.

Outputs

participants_presentnumber
recipienttext
room_nametext
senttrue/false
Example output
{
  "participants_present": 3,
  "recipient": "*",
  "room_name": "weekly-standup",
  "sent": true
}

Update a room

Change a room's privacy or settings. Only the fields you fill in change; a room cannot be renamed.

Inputs

Roomroom_nametextRequired
Which room to change.
Privacyprivacytext
Public rooms let in anyone with the link. Private rooms need a meeting token, or an owner letting a knocking guest in. Daily's default is public.One of: public (Public: anyone with the link can join), private (Private: joining needs a meeting token).
Available fromnbfdate and time
Nobody can join before this moment. Leave blank to keep the room's current setting.
Expiresexpdate and time
Nobody can join after this moment, and Daily stops listing the room. Set one for a room you only need for a while.
Most participantsmax_participantsnumber
How many people can be in the call at once, up to 200. Daily's default is 200.From 1 to 200.
Chatenable_chattext
Text chat in Daily's call interface. Off by default.One of: true (On), false (Off).
Knockingenable_knockingtext
On a private room, lets people without a token ask to be let in.One of: true (On), false (Off).
Screen sharingenable_screensharetext
Whether participants can share their screen. On by default.One of: true (On), false (Off).
Pre-join screenenable_prejoin_uitext
A screen to check camera and microphone before joining.One of: true (On), false (Off).
People panelenable_people_uitext
The panel listing everyone in the call.One of: true (On), false (Off).
Emoji reactionsenable_emoji_reactionstext
Lets participants send emoji reactions.One of: true (On), false (Off).
Hand raisingenable_hand_raisingtext
Lets participants raise a hand.One of: true (On), false (Off).
Advanced chatenable_advanced_chattext
Chat with emoji reactions and file sharing. Off by default.One of: true (On), false (Off).
Breakout roomsenable_breakout_roomstext
Lets an owner split the call into breakout rooms.One of: true (On), false (Off).
Camera off on joinstart_video_offtext
Participants join with their camera off. Off by default.One of: true (On), false (Off).
Microphone off on joinstart_audio_offtext
Participants join muted. Off by default.One of: true (On), false (Off).
Remove everyone at expiryeject_at_room_exptext
Ends the call for everyone when the room expires. Off by default.One of: true (On), false (Off).
Remove each person after (seconds)eject_after_elapsednumber
Removes each participant this many seconds after they join.At least 1.
Interface languagelangtext
The language of Daily's call interface. Daily's default is English.One of: en (English), da (Danish), de (German), es (Spanish), fi (Finnish), fr (French), it (Italian), jp (Japanese), ka (Georgian), nl (Dutch), and 8 more.
Server regiongeotext
Pin the call to one Daily region, such as us-west-2. Leave blank to let Daily pick the nearest one.
Join hook URLmeeting_join_hooktext
A URL Daily calls each time somebody joins this room's call.
Other propertiesextra_propertiesobject
Any other room property from Daily's reference, as JSON. The fields above win if both set the same property.

Outputs

api_createdtrue/false
configobject
created_attext
idtext
nametext
privacytext
urltext
Example output
{
  "api_created": true,
  "config": {
    "enable_chat": true,
    "exp": 1790000000
  },
  "created_at": "2026-09-21T09:00:00.000Z",
  "id": "5e3cf703-5547-47d6-a371-37b1f0b4427f",
  "name": "weekly-standup",
  "privacy": "private",
  "url": "https://your-domain.daily.co/weekly-standup"
}

Validate a meeting token

Check whether a meeting token is still good on this domain, and read what it grants. An expired or foreign token comes back as valid: false rather than failing the step.

Inputs

Meeting tokenmeeting_tokentextRequired
The token, or a join URL ending in ?t=<token>.
Ignore 'valid from'ignore_nbftrue/false
Treat a token that is not valid yet as valid, to check it ahead of time.Default: false.

Outputs

expnumber
is_ownertrue/false
participant_user_idtext
propertiesobject
reasontext
room_nametext
user_nametext
validtrue/false
Example output
{
  "exp": 1790003600,
  "is_owner": false,
  "participant_user_id": "user_8241",
  "properties": {
    "exp": 1790003600,
    "is_owner": false,
    "room_name": "weekly-standup",
    "user_id": "user_8241",
    "user_name": "Ada"
  },
  "reason": null,
  "room_name": "weekly-standup",
  "user_name": "Ada",
  "valid": true
}

On this page