Meeting rooms

Persistent rooms, live stages, server-recorded sessions.

Rooms are addressable containers a live call runs inside. Schedule them, set a policy, give the host control, route through SFU when the audience scales, record to your bucket when it matters.

Scheduled or persistent·Speakers + audience roles·Up to 64 in SFU

64SFU participants per room
Roleshost · speaker · audience
Server-recordeddirectly to your bucket
Scheduledor persistent — your call

Use cases

What customers build with it

Rooms are the container. You decide what runs inside.

All-hands & town halls

Stage with one or two speakers, audience watches receive-only, raise-hand to ask, recording goes to your bucket.

Internal · Events

Live podcast recording

Multi-host call with SFU recording. Composite or per-track output, uploaded directly to your storage on stop.

Media · Production

Audio-only spaces

Twitter Spaces / Clubhouse-style rooms. Audio scales further than video, raise-hand promotes to speaker, host moderates.

Social · Community

Why DropOnAir for rooms

The room is a primitive, not a meeting type.

Policy-driven, not opinionated

One RoomPolicy controls capacity, waiting room, host requirement, auto-close. We don't decide if it's a webinar or a hangout — you do.

Stage mode, built in

Toggle stageMode: true and the room runs as a stage — speakers/audience roles, raise-hand, promote/demote. No bolt-on streaming product.

Server recording to your bucket

SFU-mode rooms record composite or per-track tracks. Uploaded straight to your S3 / GCS / Azure on stop. We don't keep a copy.

Scheduled or persistent

A room can have a scheduled start, an auto-close policy, or live forever. The lifecycle is yours to design.

Create & join in 4 lines

A room, a call, a recording — same API.

Rooms in the SDK →

// 1) Create a stage-mode room
const room = await client.createRoom({ policy: { stageMode: true, mediaMode: 'SFU' } });

// 2) Join (callId arrives on GROUP_CALL_JOINED)
await client.joinRoom(room.roomId);

// 3) Start recording → your bucket
await client.startSfuRecording(room.roomId, destinationId);

What you ship in a week

A full live-event product, not a feature scaffold.

  • Scheduled & persistent rooms
  • Per-room policy (waiting room, host required, max participants, auto-close)
  • Live-stage mode with speaker / audience roles
  • Raise-hand & promote-to-speaker flow
  • SFU mode for ≤64 participants
  • Server-side recording to your bucket
  • Multi-track or composite output
  • Host controls (kick, mute, lower hand)

Ready to host

Run live events your customers stay for.

Stage roles + SFU + recording — all in one SDK.