Skip to main content

Build a live host dashboard

A live session one person runs: they control the stage, let people speak, add co-hosts, moderate chat and record. When the audience outgrows a conversation, the same room streams to thousands over HLS.

A host running a large live session with a participant grid and moderation controls
Up to 500,000
people in one room, depending on room type
3 settings
decide who may use mic, camera and screen
1 flag
adds an HLS stream for a passive audience

How it fits together​

  1. Your serverCreates the sessionSets the room type and what guests may do.
  2. HostGoes liveJoins first and controls the stage from your app.
  3. MediaSFURuns the roomMedia, requests, chat and recording for everyone in it.
  4. AudienceWatches or joins inIn the room, or through the HLS stream at any scale.

What MediaSFU handles​

You needMediaSFU gives youRead
A host who controls the roomHost and co-host roles with participant, request and chat panelsLarge rooms and moderation
Guests asking before they speakMic, camera and screen-share set to approval, so guests request and the host decidesRooms API
Panelists on stage, everyone else watchingWebinar rooms with panelists and permissionsLarge rooms and moderation
A recording of the showCloud recording of the room, and of your custom layoutRecord your custom interface
An audience beyond the roomHLS output for passive viewersHLS broadcast
A studio encoder as a sourceOBS publishing into the room over WHIPStream from OBS

Set it up​

  1. Create a webinar from your server. Guests must ask before using their mic, camera or screen, and the host may add co-hosts:

    curl -X POST https://mediasfu.com/v1/rooms \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $MEDIASFU_API_USERNAME:$MEDIASFU_API_KEY" \
    -d '{"action":"create","userName":"host","duration":120,"capacity":500,"eventType":"webinar","meetingRoomParams":{"audioSetting":"approval","videoSetting":"approval","screenshareSetting":"approval","addCoHost":true}}'
  2. To stream to a larger audience as well, add HLS to the same request: "recordingParams":{"recordingHLSSupport":true}. The HLS guide covers playback.

  3. Send the host and guests to the room from your app (below). The host joins with the room's host details; everyone else joins as a participant. Keep the API key on your server (Secure backend).

To apply these settings to every new room instead, set them once as event settings.

Build it in your SDK​

Check it works​

  • Join as the host on one device and as a guest on another.
  • As the guest, turn on the microphone: a request reaches the host instead of going live. Approve it and confirm the audio arrives.
  • Make the guest a co-host and confirm they now see the host panels.
  • End the session as the host: every participant sees it finish.

Go further​