Live Stage Roles
Stage mode turns a room into a panel or AMA: a few speakers publish media, everyone else joins as receive-only audience and can raise a hand to be promoted. Stage mode is a roles and control layer, you compose it, the platform does not impose a meeting format.
Scale. The live call is a peer-to-peer WebRTC mesh, the platform relays signaling and never routes media. Stage mode therefore suits panels and small-to-medium audiences. A large broadcast-scale audience needs a media server (SFU), which is outside the current platform scope.
Roles
- Host, the room host. Controls the stage, promotes and demotes, fields questions.
- Speaker, publishes audio/video. Hosts join as speakers.
- Audience, receive-only by convention, your app simply does not publish a local track for an audience member. Can raise a hand and submit text questions.
How it works
- Create a room with
policy.stageModeon. Joining hosts get theSPEAKERrole, everyone elseAUDIENCE. - An audience member calls
raiseHand(callId), the host and co-hosts receiveGROUP_CALL_STAGE_HAND_RAISED. - The host calls
promoteToSpeaker(callId, userId)(ordemoteToAudience). The platform broadcastsGROUP_CALL_ROLE_CHANGEDwith the new role to every participant. - Audience can call
submitStageQuestion(callId, text), relayed to the stage's speakers. - Your app reacts to
GROUP_CALL_ROLE_CHANGEDby publishing or dropping its local media track. The platform signals roles, your app owns the WebRTC tracks.
Example
const room = await client.createRoom({
name: 'AMA',
policy: { stageMode: true, requireHost: true },
});
const callId = await client.joinRoom(room.roomId);
// Audience
client.raiseHand(callId);
client.submitStageQuestion(callId, 'How does key rotation work?');
// Host
client.onGroupCallEvent((e) => {
if (e.type === 'GROUP_CALL_STAGE_HAND_RAISED') client.promoteToSpeaker(callId, e.payload);
if (e.type === 'GROUP_CALL_ROLE_CHANGED') updateStageUi(e.payload);
}); Verify support via GET /api/info, the features array includes "live_stage". Requires SDK 0.15.0+ on JavaScript, Android, and iOS.