In a RealtimeKit webinar, presenters publish audio and video from the stage. Viewers watch and can request to join the stage.
This guide sets up a webinar using the default webinar presets and renders it with RealtimeKit UI Kit. To build a custom interface instead, use RealtimeKit Core SDK with stage management.
Every RealtimeKit app includes two default presets for webinars. Assign one of these presets to each participant, modify them, or create your own preset to fit your application.
| Role | Default preset | Stage behavior | Can accept stage requests |
|---|---|---|---|
| Presenter | webinar_presenter |
Can join the stage and publish audio and video | Yes |
| Viewer | webinar_viewer |
Can request to join the stage | No |
Before you set up a webinar, make sure that you have:
- A Cloudflare account ↗ with a RealtimeKit app.
- An API token with Realtime Admin permissions. Keep it server-side. Do not expose it in frontend code.
- A backend that can call the RealtimeKit REST API to create meetings and add participants.
- A frontend application ready to integrate RealtimeKit UI Kit.
If you have not completed these requirements, refer to Quickstart.
- In the RealtimeKit dashboard ↗, go to Presets and review the default
webinar_presenterandwebinar_viewerpresets. Both presets have Meeting Type set to Video (WebRTC) and Manage Stage (Webinar) turned on under Configuration > Stage & Media. - Create a meeting using the Create Meeting API. Save the returned meeting
idfor the next step. - Add each presenter and viewer to the meeting using the Add Participant API. Assign
webinar_presenterto presenters andwebinar_viewerto viewers. - Deliver each participant's returned
authTokenonly to the frontend session for that specific user. - Initialize RealtimeKit UI Kit with the participant's
authToken. UI Kit renders the webinar interface, including stage controls, based on the participant's preset.
Configure presets with the API
If you manage presets programmatically instead of through the dashboard, use the Create Preset API with the following fields:
config.view_typeset toWEBINAR.permissions.stage_accessset toALLOWEDfor presenters,CAN_REQUESTfor viewers who can request to join the stage, orNOT_ALLOWEDfor view-only viewers.permissions.can_accept_production_requestsset totruefor participants who moderate stage requests.
For the complete request schema, refer to Presets.
A viewer whose preset has Behaviour set to Can request to join can request access to the stage from the UI Kit interface. A presenter whose preset has Accept Requests turned on receives the request and can accept or reject it.
Once accepted, the viewer joins the stage and can publish audio and video like a presenter. RealtimeKit UI Kit handles this by default. To build a custom interface, implement the same behavior with the stage management APIs in Stage Management.
- Join the meeting as a presenter and confirm that you can publish audio and video.
- Join the meeting as a viewer and confirm that you cannot publish audio or video by default.
- As the viewer, request to join the stage.
- As the presenter, accept the request and confirm that the viewer can now publish audio and video.
Both presenters and viewers are billed as Audio/Video Participants. For detailed pricing information, refer to Pricing.
- Customize the webinar interface with a custom control bar or UI Kit addons.
- Review video and simulcast recommendations for presenter and viewer media quality.
- Record the webinar and store the recording in your own storage.
- Use webhooks to track webinar lifecycle events in your backend.