Skip to content

Participant

Last updated View as MarkdownAgent setup

Before a user can join a meeting through the RealtimeKit SDK, your backend must add that user as a participant to that meeting using the Add Participant API. In RealtimeKit, a participant represents a user who is allowed to join a specific meeting.

You can think of this as enrolling a student into a classroom. The meeting is the classroom, and adding a participant is how you register a user so that they are allowed to attend.

When you add a participant, you also choose which preset to apply. The preset defines the role, permissions, and meeting experience of that participant.

Participant tokens

When you add a participant to a meeting using the Add Participant API endpoint, it returns:

  • A participant id that identifies this participant within the meeting.
  • An authentication token for that participant.

Your backend should make it available to your frontend application. When the user chooses to join the meeting, the frontend passes the token to the RealtimeKit SDK.

RealtimeKit uses the token to authenticate the participant and determine which meeting and which participant is joining. Without a valid authentication token, the SDK cannot join the meeting on behalf of that participant. As long as a participant has a valid authentication token, that participant can join multiple live sessions of the same meeting over time.

Token validity and refresh

Participant authentication tokens are JSON Web Tokens (JWTs). The meetingId and participantId fields scope each token to one participant in one meeting.

By default, a token becomes valid when issued and expires 100 days later. To set a custom validity window, pass not_before and expires_on in the token object when you add a participant, or in the request body when you refresh a token. Both fields are optional RFC 3339 timestamps with a timezone offset, such as 2026-10-01T09:00:00Z (UTC) or 2026-10-01T14:30:00+05:30:

  • not_before defaults to the current time and can be in the past.
  • expires_on defaults to not_before plus 100 days and must be in the future.
  • The validity window cannot be longer than 100 days.

The response returns the not_before and expires_on values of the issued token in UTC.

Your backend can call the Refresh Participant Token endpoint before or after a token expires. The new token uses the existing participant record, including its participant id and preset. Refreshing does not invalidate previously issued tokens. Each token remains valid until its own expiration time.

Revoke tokens

To revoke a single token, send a DELETE request to /accounts/{account_id}/realtime/kit/{app_id}/meetings/{meeting_id}/participants/{participant_id}/token with the token in the request body:

{
	"token": "<PARTICIPANT_AUTH_TOKEN>"
}

Other tokens issued to the participant remain valid.

A revoked token can take up to 60 seconds to be rejected in all locations. During this time, the participant may be able to rejoin the meeting with the revoked token. To block access immediately for all participant tokens, delete the participant instead.

To revoke all tokens for a participant in a meeting, call the Delete Participant endpoint.

Revoking a token or deleting a participant also removes the participant from the active session of the meeting, if one exists.

A participant cannot join a meeting with an expired, not yet valid, or revoked token. The RealtimeKit UI and Core SDK report the token as invalid. RealtimeKit rejects the participant before they enter the meeting stage, so they are not billed. The API error response includes a reason field with one of the following values: participant_token_expired, participant_token_not_yet_valid, participant_token_revoked, or participant_token_invalid.

Custom participant identifier

When adding the participant, you can optionally provide a custom participant identifier, referred to as custom_participant_id. This value is purely for your use. RealtimeKit stores it and returns it in APIs, but does not use it to control access. It allows you to map your application's user to RealtimeKit participant and to correlate RealtimeKit session data, events or analytics with user information in your system.

Where to Go Next

After understanding participants, you can explore the following topics:

Was this helpful?