Skip to content
Webinars

Guides

Webinars

Run a webinar: speakers get ready backstage, then go on air — seen and heard, with your brand, their titles and a call to action on screen — while everyone else watches, chats, asks questions, answers polls and raises a hand.

Try it

A webinar from the host’s side, beside what its stream shows — the stream to YouTube or LinkedIn, and the recording, are drawn exactly like this. Start it, change the scene, the brand and the speaker’s title, and put up a call to action; each change shows the request that makes it.

Run a webinar — and see its streamInteractive
Backstage141 waiting outside
Scene
Backstage, the stream shows “Starting soon” on its own, with no sound.
PNG, JPEG or WebP under 300 KB. It stays in your browser.
Brand colour
Teal
On the stream
Call to action
Stream shape

A webinar that opens backstage. The stream shows “Starting soon” until a host starts it.

The same, through the API
POST /v1/rooms

{
  "code": "product-launch",
  "name": "Lumen 4.0 — live launch",
  "webinar": true,
  "backstage": true
}

Turn it on

Webinar mode is a room setting, webinar, like the waiting room: set it when you create the room, any time after, or from the call UI’s Settings tab. Add backstage and the webinar opens backstage. Hosts at /meet switch both on when they start a meeting or book one — or prepare one in full with Start a webinar on their dashboard: who gets in, the brand, where it streams (and whether it goes live as soon as they arrive), what’s recorded, and a call to action ready to put up. Each host’s webinars, and their meetings, start the way they left the last one — and a setup you’ll want again becomes a template, which your app names when it creates a room. It’s part of the Pro, Business and Enterprise plans.

curl -X POST https://api.inlinemeet.com/v1/rooms \
  -H "Authorization: Bearer $INLINEMEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code": "product-launch", "name": "Product launch", "webinar": true, "backstage": true}'

Switched on during a call, everyone who isn’t a moderator joins the audience at once; switched off, everyone gets back what they joined with.

The audience

In a webinar, every participant who isn’t a moderator or a speaker is its audience. Their join token lets them publish nothing — the media server enforces it, whatever publish your token route granted — and the call UI shows them as a count (“3 on stage · 214 watching”) rather than as tiles, so a big audience never fills the screen. They can:

  • watch and listen to the stage;
  • chat, ask questions in Q&A and upvote others’, and answer polls;
  • send reactions, raise a hand to ask to speak, and press the call to action.

They’re never asked for a camera or microphone: pass audience to CallRoom when your app knows the person joins as one, and the pre-join screen asks for nothing. Without it, they join as usual and simply aren’t offered either.

Speakers

A speaker is on stage from the moment they join: seen and heard, with what their token’s publish grants, but without a moderator’s controls. Mint their token with stage: true — and a title, which comes up under their name on the stream and the recording as they start talking.

curl -X POST https://api.inlinemeet.com/v1/rooms/product-launch/tokens \
  -H "Authorization: Bearer $INLINEMEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "identity": "speaker-amira",
    "name": "Amira Haddad",
    "stage": true,
    "title": "Head of Product, Lumen",
    "publish": { "microphone": true, "camera": true, "screenShare": true }
  }'

Speakers can set or change their own title in the call’s Live tab. At /meet, a host shares the speaker link instead — from the scheduled meeting, or from the Live tab during the call: whoever opens it joins as a speaker, skipping the password and the backstage queue.

Backstage

With backstage on, a webinar starts behind the curtain. Moderators and speakers meet, check their sound and share their slides; the audience waits outside, told it starts soon (with a countdown, when it’s booked for a set time). Anything streaming or recording shows a Starting soon screen with the call’s sound off, so nothing said backstage goes out, and auto-record waits.

For your server, an audience member’s token request answers 202 while it’s backstage — the waiting room’s shape, with a reason:

{
  "waiting": true,
  "ticket": "q3Jk9vT2…",
  "name": "Sam Lee",
  "pollAfterMs": 2000,
  "message": "The webinar starts soon — you’ll be let in as soon as it does.",
  "reason": "backstage",
  "startsAt": null
}

Hand it to the browser as you would a waiting-room ticket: the call UI polls it, shows the backstage screen, and joins the moment the webinar starts. These tickets aren’t a moderator’s to decide one by one — the lobby counts them as backstage rather than listing them.

Going on air

A host presses Start the webinar on the bar across the top of the call, or your server starts it:

POST/v1/rooms/:code/webinar/start
curl -X POST https://api.inlinemeet.com/v1/rooms/product-launch/webinar/start \
  -H "Authorization: Bearer $INLINEMEET_API_KEY"

# { "onAirAt": "2026-10-22T16:00:04.000Z", "admitted": 186 }

Everyone waiting is let in at once, the stream goes from “Starting soon” to the stage, and auto-record starts. It’s idempotent, and once on air the webinar stays on air until the call ends. Turning backstage off while people wait lets them in the same way.

Bringing people on stage

Moderators and speakers are always on stage. Anyone else comes up when a moderator invites them — Invite to stage beside them in the People tab, highlighted when they have a hand up. On stage, they may publish what their token granted (microphone and camera; their screen too, if they may share it), and they’re told so. To audience sends them back, muted.

POST/v1/rooms/:code/participants/:identity/permissions
curl -X POST https://api.inlinemeet.com/v1/rooms/product-launch/participants/user-42/permissions \
  -H "Authorization: Bearer $INLINEMEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"stage": true}'

It’s one of the permissions a moderator can give, next to screenShare, polls, qna and whiteboard, so it needs the permissions route (permissions: true in createFetchBackend). Like them, it lasts for that person’s connection: someone who rejoins is back in the audience. Outside a webinar it is refused with 409 not_webinar.

In the audienceSpeakerModerator
Seen and heardOnly when invited upYesYes
Chat, Q&A, polls, reactions, raise a handYesYesYes
Let in while backstageNo — waits outsideYesYes
Starts it, scenes, call to action, streamsNoNoYes
Shown asA count, and in the People tabA tileA tile

Your brand on air

Streams and recordings carry your workspace’s brand: its logo in the corner, its colour on speakers’ titles, the call-to-action banner and the scenes, and each speaker’s name and title along the bottom for a few seconds as they start talking. The logo also shows in the call’s own top bar — in ordinary meetings too, where hosts turn it off under Settings → Branding. Set the logo and colour in the dashboard’s Settings, or with PUT /v1/brand:

curl -X PUT https://api.inlinemeet.com/v1/brand \
  -H "Authorization: Bearer $INLINEMEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"color\": \"#0ea5a4\", \"logo\": \"data:image/png;base64,$(base64 < logo.png | tr -d '\n')\"}"

A PNG, JPEG or WebP under 300 KB; a light logo on a transparent background reads best over video. Each room’s look setting turns the logo and the speakers’ titles on or off — both are on unless you say otherwise. Between segments, a moderator switches the stream to a scene — “Starting soon”, “Be right back”, “Thanks for watching” — from the Live tab, or with the room’s scene setting:

curl -X PATCH https://api.inlinemeet.com/v1/rooms/product-launch \
  -H "Authorization: Bearer $INLINEMEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scene": "break", "look": {"titles": true}}'

A call to action

What you want people to do next — “Book a demo”, “Get the slides”, “Enrol now”. Everyone in the call gets a button that opens the link; the stream and the recording show it as a banner with a QR code, since a video can’t be clicked. One at a time: a new one replaces the last. Any room can have one, not only a webinar.

POST/v1/rooms/:code/cta
curl -X POST https://api.inlinemeet.com/v1/rooms/product-launch/cta \
  -H "Authorization: Bearer $INLINEMEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"headline": "See it on your own data", "label": "Book a demo", "url": "acme.example/demo"}'

Every press is counted: GET /v1/rooms/:code/cta answers with the one up now and its clicks, and moderators see the count in the Live tab. DELETE takes it down.

Registration and reminders

A webinar booked at /meet can take registrations: switch on Registration under Webinar when scheduling it, and it gets its own sign-up page — with your logo and colour — to share. Whoever registers gets their own join link, which lets them in without the meeting’s password; anyone else who opens the meeting is pointed to the sign-up page. Each email has a link to cancel, which stops the reminders and the link.

The emails a registration sendsInteractive
  1. At onceYou’re registered: Lumen 4.0 — live launch — Thu 22 Oct, 17:00Their own join link, the event attached for their calendar, and links for Google, Outlook and Microsoft 365.
  2. A day beforeTomorrow: Lumen 4.0 — live launchSkipped: they registered under three hours before it goes out, and have just had their confirmation.
  3. An hour beforeStarting in an hour: Lumen 4.0 — live launchTheir link again, to join a few minutes early.
  4. It starts2 emails, one linkTheir link lets them in with no password — or to wait outside, while the webinar is still backstage.

The meeting in your dashboard shows how many have registered, and downloads the list as a CSV. Up to 5,000 people can register for one webinar.

The report

When a webinar hosted at /meet ends, its host gets an email with the report, and it stays under Reports in the dashboard, with a CSV to download:

  • Attendance — who came, when they first joined, how long they stayed in all, and whether they came up on stage; with registration on, who registered but didn’t come.
  • Engagement — every question with its upvotes and whether it was answered, every poll with its results, and how many messages each person sent.
  • Calls to action — each one shown, how often it was pressed, and by whom.

Attendance comes from the media server, so it counts everyone, whatever their browser does. Engagement comes from the host’s own call screen, which sees the questions and polls as they happen — so it covers the time the host was in the call.

In your own app

The call UI runs the whole webinar for you: the backstage bar and countdown, the audience count, the Live tab’s scenes, look and call to action, and the button for the audience. Turn on the backend routes it needs, each forwarded by your server to the API after checking the caller is a moderator — all but cta/click, which anyone in the call may press:

const backend = createFetchBackend({
  baseUrl: '/api/calls/product-launch',
  permissions: true, // Invite to stage
  webinar: true,     // POST /webinar/start
  cta: true,         // GET, POST, DELETE /cta and POST /cta/click
  streams: true,     // the Live tab's streams
});

<CallRoom backend={backend} connection={connection} audience={!isSpeaker} />

The call UI docs list every route. Nothing extra is needed for the backstage screen: it shows whenever a token request answers with reason: "backstage".

Streaming and recording

A webinar is often streamed too: live streaming sends the stage — with your brand, the chat, questions and polls over it — to YouTube, LinkedIn and the rest, and a host can put an audience member’s comment on screen. Those watching on a platform see the same stage as the audience in the call.

Recording

Recordings show the stage, as the stream does — scenes, logo, titles and call to action included. The audience is never in the picture.

Good to know

  • Audience size follows your plan’s participant limit. Everyone in the audience is still connected to the call, so they hear the stage with no delay and can be brought up in a moment.
  • Unmuting rules don’t apply in a webinar: the audience never has a microphone, and whoever is on stage has been given the floor.
  • Scenes silence the stream, not the call: people in the call still hear each other during “Be right back”.

Combine it with a password for a private webinar, with registration so you know who’s coming, and with Q&A so the audience’s questions are upvoted and answered in order.