Skip to main content
Daily’s permissions system lets you control exactly what each participant is allowed to do in a call: which media they can publish, which streams they can receive, and which administrative actions they can perform. Permissions can be set at join time via a meeting token or updated dynamically at runtime.

DailyParticipantPermissions

Every participant object exposes a permissions field of type DailyParticipantPermissions: See the DailyParticipantPermissions reference for the full interface definition and field descriptions.

Updating permissions at runtime

Use updateParticipant() to change a participant’s permissions mid-call. The caller must themselves have canAdmin: 'participants' (or canAdmin: true) or be an owner.
The updatePermissions field accepts a DailyParticipantPermissionsUpdate, where every field is optional — only those provided are changed:

Restricting what a participant can send

The example below restricts a participant to audio-only (no camera or screen share):
To re-enable video later:

Restricting what a participant can receive

The example below allows a participant to receive audio from everyone but video only from a specific user:

Events

participant-updated
DailyEventObjectParticipant
Fired when a participant’s permissions change. Check participant.permissions to see the updated values.

Complete example

Demonstrates the full permissions lifecycle: new participants join locked out, request presence via an app message, get admitted by the owner, and then have their canSend permissions managed through a panel.
  • Open https://localhost?t=YOUR_OWNER_TOKEN for the owner view
  • Open https://localhost (no token) for a participant view