How Tos

Schedule a weekly recurring broadcast

Drive a Live stream on a fixed cadence — from the Scheduler UI, from the API, or both.

Available in: UI · API

Use this how-to when the same Live stream must go on air on a fixed cadence — every weekday at the same time, every Sunday morning, every day. The Scheduler owns the calendar; the Live stream definition owns the bound Channel, Encoding and Destination.

When to use this

When a Live stream's start and stop must be automated against a calendar (daily news, weekend matches, every-weekday bulletin). For ad-hoc one-off starts use the Start flow in On air.

Prerequisites

  • A Live stream that has already been configured (Channel, Encoding and Destination bound). The Schedule references it by id.
  • A user with the Operator or System Administrator role. Schedule CRUD is available to both.

The Schedule entity

Schedule carries:

FieldNotes
nameDisplay name.
livestreamIdNumeric id of the bound Live stream.
startISO-8601 start timestamp.
endISO-8601 end timestamp.
recurrence.typeOne of none, daily, weekly, workdays, weekend.
enabledDisable the Schedule without deleting it.
encoderGroupIdOptional encoder group / Device group the Schedule will run against.

The API rejects starts earlier than 10 minutes in the past; the UI date picker greys out earlier dates accordingly.

Via UI

Navigation: Scheduler.

Open the Scheduler

Click Scheduler in the left rail, then press New Schedule.

Fill in the dialog

The dialog is grouped into three blocks:

  • InformationName, Live Stream, Enabled.
  • Date and TimeStart, End.
  • Recurrence — one of None, Daily, Weekly, Workdays, Weekend.

For a Monday-to-Friday news bulletin at 21:00, pick Workdays. Workdays repeats every weekday (Monday through Friday).

Submit

The Schedule is persisted. From the next start time it dispatches the bound Live stream automatically; the Live stream's row on On air shows the calendar icon next to the encoder name with the tooltip "Started by Schedule".

Via API

ActionMethod + pathoperationId
Create a SchedulePOST /c21apiv2/schedulesaddSchedule
Read a ScheduleGET /c21apiv2/schedules/{scheduleId}getScheduleById
UpdatePUT /c21apiv2/schedules/{scheduleId}updateSchedule
Enable / DisablePOST /c21apiv2/schedules/{scheduleId}/{enable|disable}enableSchedule, disableSchedule
DeleteDELETE /c21apiv2/schedules/{scheduleId}deleteSchedule
Expand to occurrencesGET /c21apiv2/schedules/{scheduleId}/occurrences?from=…&to=…getScheduleOccurrences
curl -X POST "https://<your-host>/c21apiv2/schedules" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Idempotency-Key: <unique-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "news-weekday-21h",
    "livestreamId": <id>,
    "start": "2026-05-18T21:00:00Z",
    "end": "2026-05-18T21:30:00Z",
    "recurrence": { "type": "workdays" },
    "enabled": true
  }'

Idempotency-Key is honoured on addSchedule; retries do not create duplicate Schedules.

Recording

Recording is enabled by attaching a Record-type Destination to one of the Destination groups bound to the Live stream — there is no separate recording flag on the Schedule entity. The Schedule simply starts and stops the Live stream; whatever Destinations are bound at start time, including any Record Destination, run alongside the broadcast. See Recordings.

Verify

  • The Schedule appears in the Scheduler list with the expected recurrence label.
  • getScheduleById returns the Schedule with enabled = true and the expected recurrence.type.
  • getScheduleOccurrences over the next week returns one occurrence per weekday.
  • At the first occurrence's start, the bound Live stream's row on On air flips to Live.

FAQ

Copyright © 2026