Welcome to the new Daily Docs. Please let us know what you think.

participants()

participants()

Returns an object detailing the current meeting participants:

The object keys are local for the local participant and the participant's session_id for remote participants.

Participant properties

All participant objects include:

  • session_id - a unique id generated each time a participant joins a meeting
  • user_id - the user's id if set by a meeting token, otherwise the session_id
  • user_name - the user's name if set by a meeting token or set from the account if the user is logged into a Daily account
  • local - true for the local user
  • owner - true if set by a meeting token or the user is logged into a Daily account and is a member of the room's team
  • joined_at - js Date object, the time that the user joined the room
  • video_width and video_height - the current width and height of the live video stream. video_width and video_height can change as network conditions change. If there is no current camera stream, this will be an empty object.
  • record - indicates whether a participant is recording a meeting (Note: recording is a Scale plan only feature)
  • tracks - detailed information about the state of each participant's audio, video, and screen tracks.

The tracks fields include:

KeyDescriptionPossible values
subscribedWhether you (the local participant) are subscribed to a tracktrue or false
stateThe values represent the complete set of mutually exclusive states a track can be in, from the user's point of view.
  • "blocked": The track is blocked. See blocked field for details.
  • "off": The track is off, but not blocked (that we know of yet—it's possible that we haven't yet tried to access a device, in the case of the start_video_off room or meeting token property, say). See off field for details.
  • "sendable": The track is ready to be sent, but simply hasn't been subscribed to. It's neither blocked nor off.
  • "loading": The track is loading. It has been subscribed to, and is neither blocked nor off.
  • "playable": The track is ready to be played. It has been subscribed to, has finished loading, and is neither blocked nor off.
  • "interrupted": The track is currently unplayable (MediaStreamTrack.muted property is true). It may enter this state from the playable state.
offIf the track is off, why it's off (this field only acquires a value if the track is off).An optional object with the properties byUser and/or byBandwidth, representing the possible reasons the track is off.
blockedIf the track is blocked, why it's blocked (this field only acquires a value if the track is blocked).An optional object with the properties byMissingDevice or byPermissions or byDeviceInUse representing the possible reasons the track is blocked.
trackA MediaStreamTrack that is ready to be played.

Additional properties we don't recommend using

A note about the audio, video, and screen properties

These properties include the direct MediaStreamTrack that a participant is sending, if available.

While we detail these properties below, we recommend using the tracks property's key for each kind of track instead for more accurate, detailed tracks state.

  • videoTrack - the camera video track this participant is sending, if available.
  • audioTrack - the microphone audio track this participant is sending, if available. Contains the same information as videoTrack, with only the kind value differing in that it specifies "video".
  • screenVideoTrack: the screenshare video track this participant is sending, if available.

These tracks can be wrapped in a MediaStream and assigned directly to an element's audio or video srcObject property. See an example in our React call object demo app.