Skip to main content

Build Interactive Video Calls

What you'll build​

An interactive, multi-participant video experience where every participant can broadcast and view each other in near-real time. On Native Frame, this is powered by WebRTC, so it fits use cases where sub-second latency matters: group calls, gated 1:1 sessions, live Q&A, and interactive streaming. This recipe doesn't re-teach each building block — it stitches the existing guides together in the right order so you can go from credentials to a working call.

Architecture at a glance​

Interactive video on Native Frame runs through a Selective Forwarding Unit (SFU): each participant publishes their own media and subscribes to everyone else's, all through the SFU rather than peer-to-peer. Three things shape the experience:

  • Tokens and scopes decide who can broadcast versus who can only view, and gate access to private sessions.
  • The SFU fans out each participant's stream to the others with low latency.
  • Webhooks give your backend real-time signal and control — who joined, who's broadcasting, and the ability to kick or stop.
note

For a deeper look at how the SFU, signaling, and media planes fit together, see Platform architecture. For why WebRTC is the right transport for interactivity, see Streaming protocols.

Build it​

Work through these in order. Each step links the canonical guide — follow it there for the full code.

  1. Mint scoped tokens. Start by issuing the right credentials: broadcaster tokens for participants who publish, viewer tokens for watch-only, and private scopes for gated sessions. See Token setup.

  2. Create a group call. Stand up the room that participants publish and subscribe through. See Create a group call, with concept background in Group calls.

  3. Add a lobby and screenshare. Let participants preview devices before joining with a Call lobby, and let them share their screen with Screenshare.

  4. Or run gated private calls. For 1:1 or invite-only sessions, use private scopes instead of an open room — set up the Private broadcaster and Private viewer.

  5. Wire webhook-based control. Subscribe to session state so your backend can react in real time — admit, kick, or stop participants. See Webhooks and state.

tip

Scopes are your access-control layer. Issue narrow tokens (viewer-only, time-bound, session-scoped) by default and widen only when a participant genuinely needs to broadcast.

Choosing group vs private​

  • Group calls — an open, multi-participant room where anyone with a valid token can join and broadcast. Best for standups, classes, panels, and social gatherings where the participant list is fluid.
  • Private calls — gated sessions where access is scoped to specific broadcasters and viewers. Best for 1:1 consults, paid or invite-only sessions, and anywhere you need tight control over exactly who can join.

Both run on the same WebRTC + SFU foundation, so you can start with a group call and layer in private-call scoping as your access rules get stricter.