> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Video: rooms, embeds, recording, and broadcast

> Run in-browser video rooms on Orbit — scheduled rooms from the API or the dashboard, guest links and join tokens, a prebuilt embed from the web SDK, recording, and live broadcast.

# Video

Orbit's video channel gives you live, in-browser video rooms that run over WebRTC on Orbit Media (Devotel's hosted SFU). Rooms need nothing installed — a guest joins from a link in any modern browser — and they live on the same account as your SMS, voice, WhatsApp, and email, so a video session lands in the shared inbox alongside the rest of the conversation.

This page is the concept-and-reference surface: room kinds, join tokens, the embed, recording, moderation, and broadcast. For the full endpoint parameter and response contract see the [Video API reference](/api-reference/video); for the ordered walkthroughs see [Video meetings and conferences](/guides/video-meetings), [Video room access tokens](/guides/video-room-access-tokens), and the [embedded video consultation button](/guides/embed-video-consultation-button).

## Two kinds of rooms

|           | Scheduled rooms                                         | Ad-hoc rooms                                  |
| --------- | ------------------------------------------------------- | --------------------------------------------- |
| Endpoint  | `/api/v1/video/rooms-scheduled`                         | `/api/v1/video/rooms`                         |
| Lifecycle | Persistent, named room that outlives any single session | Fire-and-forget; ends when participants leave |
| Best for  | Meetings, consultations, webinars, recurring standups   | Click-to-start calls inside your product      |

Scheduled rooms are the first-class surface: they carry a host, an optional schedule and recurrence rule, a capacity, recording, guest invite links, and an inbox entry. Ad-hoc rooms are the lighter primitive for one-off "start a call now" flows.

## Create and schedule from the API

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/video/rooms-scheduled" \
  -H "X-API-Key: dv_live_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Onboarding call - Acme",
    "scheduled_at": "2026-09-01T14:00:00Z",
    "recording_enabled": true,
    "max_participants": 25
  }'
```

The response returns the room plus a host token for the creator, so the organizer joins immediately. Leave `scheduled_at` unset to start now, pass an RFC 5545 `recurrence_rule` for a repeating series, and omit `max_participants` to inherit your tenant's participant ceiling.

## Join tokens: the browser never sees your API key

Joining a room is a two-step wire. Your back end mints a bounded, per-participant join token:

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/video/rooms-scheduled/ROOM_ID/join" \
  -H "X-API-Key: dv_live_sk_..." \
  -H "Content-Type: application/json" \
  -d '{ "participant_name": "guest" }'
```

The token — not the tenant API key — is what the browser carries. Hand it to the prebuilt embed, the guest lobby, or your own client.

## Embed a room with the web SDK

The Orbit web SDK (`@devotel-orbit/web`) registers a prebuilt video-room element:

```html theme={null}
<script type="module"
  src="https://cdn.jsdelivr.net/npm/@devotel-orbit/web@latest/dist/index.mjs">
</script>

<div style="height:600px">
  <orbit-video-room
    token="SERVER_MINTED_JOIN_TOKEN"
    display-name="Support agent"
    enable-screen-share="true"
  ></orbit-video-room>
</div>
```

The camera, microphone, screen-share, and device-selection toggles ship with the widget, so an embedded room is a snippet rather than a UI build. For the full embed walkthrough see the [embedded video consultation button guide](/guides/embed-video-consultation-button).

## Recording

Drive recording from the API — `/rooms-scheduled/:id/recording/start`, `/stop`, and `/pause` — or set `recording_enabled: true` on create so recording starts automatically when the first participant joins. Finished recordings land back on the room.

## Moderation and broadcast

Hosts moderate from the dashboard or the API: spotlight a speaker, mute or remove a participant, lock the room, run the waiting-room lobby, and clear the deck with mute-all. For larger audiences, stream the room with live broadcast and RTMP egress, or bridge it to the phone network with dial-in for guests and dial-out to bring a PSTN participant in.

## Room-config templates

Save a room's configuration as a reusable template under `/rooms-scheduled/templates` and create later rooms from it with the same behavior as a direct create — the fixed onboarding-call or weekly-sync setup stops being a copy-paste of settings.
