DeewanDocs
API keys

Webinars

Hosts present to an audience of up to 500, who watch, chat, react, raise a hand and ask questions.

A webinar is a room with a stage and an audience. Hosts and co-hosts present with their camera, microphone and screen. Everyone else joins as an attendee: they see and hear the stage, chat, react, raise a hand and ask questions, but cannot publish anything until a host invites them to speak. The media server enforces this — an attendee's pass carries no right to publish — so it holds even for a modified client.

Create a webinar

ts
const room = await deewan.rooms.create({
  name: "Product launch",
  settings: { type: "webinar", access: "link" },
});

// Presenters join as hosts; everyone else as participants (the audience).
const host = await deewan.rooms.createJoinLink(room.id, { name: "Sara Ahmed", role: "host" });
const seat = await deewan.rooms.createJoinLink(room.id, { name: "Omar Saleh" });
curl
curl https://deewan.io/api/v1/rooms \
  -H "Authorization: Bearer $DEEWAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Product launch","settings":{"type":"webinar","access":"link"}}'

Invite someone to speak

Hosts usually do this from the participants list, where a raised hand shows an Invite to speak button. Your server can do it too, with the participant's connection identity from GET /rooms/{room_id}/participants.

ts
await deewan.rooms.inviteToSpeak(room.id, identity);   // they may turn on mic and camera
await deewan.rooms.moveToAudience(room.id, identity);  // back to watching

Questions and answers

Attendees ask questions in the Q&A panel and upvote the ones they want answered; hosts mark them answered or hide them. Questions travel end to end encrypted inside the meeting, like chat, and are not stored: someone who joins later is handed the current list by a host's browser.

  • Up to 500 people in one webinar; regular meetings hold up to 300.
  • Strict end-to-end encryption, recordings, captions and polls work as in any room.
  • Breakout rooms opened from a webinar are ordinary meetings, so everyone in them can talk.
  • Billing is the same as any API meeting: per participant-minute.

Events

Subscribe to participant.stage_changed to know the moment someone starts or stops speaking — for example, to drive an overlay on a separate broadcast feed.