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
| Action | What it does |
|---|---|
| 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. |
| Create a room | Create a Daily video room and get its URL. |
| Delete a room | Delete a room. |
| Eject participants | Remove people from a room's call, by participant session id or by user id. |
| Get a meeting | One meeting session: its room, when it started, how long it ran and the most people in it at once. |
| Get a room | Read one room: its URL, privacy and settings. |
| Get domain settings | The Daily domain this connection's key belongs to, and its domain-wide settings. |
| Get presence | Everyone in every room on this domain right now, grouped by room. |
| Get who is in a room | The people in a room's call right now, with when they joined. |
| List meeting participants | Everyone who joined one meeting session, with when they joined and how long they stayed. |
| List meetings | Past and ongoing meeting sessions on this domain, newest first, each with who joined. |
| List rooms | List the rooms on this Daily domain, newest first. |
| Send an app message | Send a data message to the apps of everyone in a live call, or to one participant. |
| Update a room | Change a room's privacy or settings. |
| Validate a meeting token | Check 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
- Expires
expdate and timeRequired - When the token stops working. Daily recommends every token expire.
- Room
room_nametext - The room the token is for. Leave blank for a token that works in every room on the domain.
- Owner
is_ownertrue/false - Owners can let knocking guests in, remove people and change others' settings.Default:
false. - Display name
user_nametext - The name others see in the call.
- User ID
participant_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 from
nbfdate and time - The token does not work before this moment.
- Remove them when it expires
eject_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 join
start_video_offtext - Leave blank to follow the room's setting.One of:
true(On),false(Off). - Microphone off on join
start_audio_offtext - Leave blank to follow the room's setting.One of:
true(On),false(Off). - Screen sharing
enable_screensharetext - Leave blank to follow the room's setting.One of:
true(On),false(Off). - Pre-join screen
enable_prejoin_uitext - Leave blank to follow the room's setting.One of:
true(On),false(Off). - Join by knocking
knockingtext - The token only lets them knock, and an owner lets them in.One of:
true(On),false(Off). - Redirect when they leave
redirect_on_meeting_exittext - A URL to send them to when they leave the call.
- Interface language
langtext - 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
expnumberexpires_attextjoin_urltextroom_nametexttokentext
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 name
nametext - The last part of the room's URL. Letters, numbers, '-' and '_'. Leave blank for a random one.
- Privacy
privacytext - 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 from
nbfdate and time - Nobody can join before this moment. Leave blank for Daily's default.
- Expires
expdate 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 participants
max_participantsnumber - How many people can be in the call at once, up to 200. Daily's default is 200.From 1 to 200.
- Chat
enable_chattext - Text chat in Daily's call interface. Off by default.One of:
true(On),false(Off). - Knocking
enable_knockingtext - On a private room, lets people without a token ask to be let in.One of:
true(On),false(Off). - Screen sharing
enable_screensharetext - Whether participants can share their screen. On by default.One of:
true(On),false(Off). - Pre-join screen
enable_prejoin_uitext - A screen to check camera and microphone before joining.One of:
true(On),false(Off). - People panel
enable_people_uitext - The panel listing everyone in the call.One of:
true(On),false(Off). - Emoji reactions
enable_emoji_reactionstext - Lets participants send emoji reactions.One of:
true(On),false(Off). - Hand raising
enable_hand_raisingtext - Lets participants raise a hand.One of:
true(On),false(Off). - Advanced chat
enable_advanced_chattext - Chat with emoji reactions and file sharing. Off by default.One of:
true(On),false(Off). - Breakout rooms
enable_breakout_roomstext - Lets an owner split the call into breakout rooms.One of:
true(On),false(Off). - Camera off on join
start_video_offtext - Participants join with their camera off. Off by default.One of:
true(On),false(Off). - Microphone off on join
start_audio_offtext - Participants join muted. Off by default.One of:
true(On),false(Off). - Remove everyone at expiry
eject_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 language
langtext - 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 region
geotext - Pin the call to one Daily region, such as us-west-2. Leave blank to let Daily pick the nearest one.
- Join hook URL
meeting_join_hooktext - A URL Daily calls each time somebody joins this room's call.
- Other properties
extra_propertiesobject - Any other room property from Daily's reference, as JSON. The fields above win if both set the same property.
Outputs
api_createdtrue/falseconfigobjectcreated_attextidtextnametextprivacytexturltext
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
- Room
room_nametextRequired - Which room to delete.
Outputs
deletedtrue/falsenametext
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
- Room
room_nametextRequired - The room to remove them from.
- Participant session IDs
participant_idslist - Session ids ('id' from 'Get who is in a room'), up to 100.
- User IDs
participant_user_idslist - User ids as set by meeting tokens, up to 100.
- Ban them
bantrue/false - Also stop these user ids from joining again.Default:
false.
Outputs
bannedtrue/falseejected_countnumberejected_idslistparticipants_presentnumberroom_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 ID
meeting_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
durationnumberidtextmax_participantsnumberongoingtrue/falseroomtextstart_timenumberstart_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
- Room
room_nametextRequired - Which room to read.
Outputs
api_createdtrue/falseconfigobjectcreated_attextidtextnametextprivacytexturltext
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
configobjectdomain_idtextdomain_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_countnumberroom_countnumberroomslist
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
- Room
room_nametextRequired - Which room to look in.
- How many
limitnumber - At most this many, up to 100. Daily's default is 100.From 1 to 100.
- User ID
participant_user_idtext - Only the participant with this user id, as set by their meeting token.
- User name
user_nametext - Only participants with this display name.
Outputs
participantslistroom_nametexttotal_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 ID
meeting_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 many
limitnumber - At most this many, up to 100. Daily's default is 100.From 1 to 100.
- Joined after
joined_aftertext - A participant id: list the people who joined after them. Use the 'next_cursor' from a previous run.
- Joined before
joined_beforetext - A participant id: list the people who joined before them.
Outputs
countnumbermeeting_idtextnext_cursortextparticipantslist
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
- Rooms
roomstext - Only sessions in these rooms, up to 10.
- Started after
timeframe_startdate and time - Only sessions that started at or after this.
- Started before
timeframe_enddate and time - Only sessions that started before this.
- Only ongoing
ongoingtrue/false - Only sessions still in progress.Default:
false. - Leave out participants
no_participantstrue/false - Skip the participant lists, for a smaller result.Default:
false. - How many
limitnumber - At most this many, up to 100. Daily's default is 100.From 1 to 100.
- Starting after
starting_aftertext - A session id: list the ones after it. Use the 'next_cursor' from a previous run.
- Ending before
ending_beforetext - A session id: list the ones before it.
Outputs
countnumbermeetingslistnext_cursortexttotal_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 many
limitnumber - At most this many, up to 100. Daily's default is 100.From 1 to 100.
- Starting after
starting_aftertext - A room id: list the rooms after it. Use the 'next_cursor' from a previous run of this step.
- Ending before
ending_beforetext - A room id: list the rooms before it. 'OLDEST' gets the oldest page.
Outputs
countnumberhas_moretrue/falsenext_cursortextroomslisttotal_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
- Room
room_nametextRequired - The room whose call to message.
- Message data
dataobjectRequired - Any JSON object, up to 4 KB.
- Recipient
recipienttext - One participant's session id ('id' from 'Get who is in a room'). Leave blank to send to everyone.
Outputs
participants_presentnumberrecipienttextroom_nametextsenttrue/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
- Room
room_nametextRequired - Which room to change.
- Privacy
privacytext - 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 from
nbfdate and time - Nobody can join before this moment. Leave blank to keep the room's current setting.
- Expires
expdate 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 participants
max_participantsnumber - How many people can be in the call at once, up to 200. Daily's default is 200.From 1 to 200.
- Chat
enable_chattext - Text chat in Daily's call interface. Off by default.One of:
true(On),false(Off). - Knocking
enable_knockingtext - On a private room, lets people without a token ask to be let in.One of:
true(On),false(Off). - Screen sharing
enable_screensharetext - Whether participants can share their screen. On by default.One of:
true(On),false(Off). - Pre-join screen
enable_prejoin_uitext - A screen to check camera and microphone before joining.One of:
true(On),false(Off). - People panel
enable_people_uitext - The panel listing everyone in the call.One of:
true(On),false(Off). - Emoji reactions
enable_emoji_reactionstext - Lets participants send emoji reactions.One of:
true(On),false(Off). - Hand raising
enable_hand_raisingtext - Lets participants raise a hand.One of:
true(On),false(Off). - Advanced chat
enable_advanced_chattext - Chat with emoji reactions and file sharing. Off by default.One of:
true(On),false(Off). - Breakout rooms
enable_breakout_roomstext - Lets an owner split the call into breakout rooms.One of:
true(On),false(Off). - Camera off on join
start_video_offtext - Participants join with their camera off. Off by default.One of:
true(On),false(Off). - Microphone off on join
start_audio_offtext - Participants join muted. Off by default.One of:
true(On),false(Off). - Remove everyone at expiry
eject_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 language
langtext - 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 region
geotext - Pin the call to one Daily region, such as us-west-2. Leave blank to let Daily pick the nearest one.
- Join hook URL
meeting_join_hooktext - A URL Daily calls each time somebody joins this room's call.
- Other properties
extra_propertiesobject - Any other room property from Daily's reference, as JSON. The fields above win if both set the same property.
Outputs
api_createdtrue/falseconfigobjectcreated_attextidtextnametextprivacytexturltext
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 token
meeting_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
expnumberis_ownertrue/falseparticipant_user_idtextpropertiesobjectreasontextroom_nametextuser_nametextvalidtrue/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
}