API

Overview

Programmatic access to C21 Live Control over its REST API.

The C21 Live Control REST API exposes every resource visible in the operator UI. Use it to script provisioning, integrate with playout systems, build internal dashboards or drive operations from an external scheduler. The MCP server documented under MCP server wraps the same operations for any MCP-compatible AI agent or automation.

Base URL

https://<host>/c21apiv2

<host> is the hostname of your C21 Live Control deployment. Every operation lives under /c21apiv2.

Resources

The API is organised around the same resources surfaced in the UI. Each resource usually exposes two scopes: an operational scope (e.g. /livestreams, /livestreams/{id}/start) and a CRUD scope (/crud/livestreams). Consult the OpenAPI spec for the full per-resource operation index.

ResourceOperational pathUI section
Channels/c21apiv2/channelsSources
Encodings/c21apiv2/encodingsEncodings
Encoding groups/c21apiv2/encodings/groupsEncodings
Destinations/c21apiv2/publishingsDestinations
Destination groups/c21apiv2/publishings/groupsDestinations
Live streams/c21apiv2/livestreamsLive streams
Schedules/c21apiv2/schedulesScheduler
Recordings/c21apiv2/recordingsRecordings
Devices/c21apiv2/devicesDevices
Device groups/c21apiv2/devices/groupsDevices
Assets/c21apiv2/assets (with ?fileType=logos|files|clips)Assets
Users/c21apiv2/usersUsers
User groups/c21apiv2/usergroupsUsers
API tokens/c21apiv2/security/tokens(API-only — no UI Interface)
DRM providers/c21apiv2/settings/integrations/drmprovidersIntegrations → DRM Providers
C21 Live Cloud accounts/c21apiv2/settings/integrations/c21livecloudIntegrations → C21 Live Cloud
MediaCopilot/c21apiv2/settings/integrations/mediacopilotIntegrations → MediaCopilot
System/c21apiv2/system(API-only — System Administrator surface)

Resource paths follow the OpenAPI spec literally. Where a path contains a templated segment in braces ({livestreamId}, etc.), substitute the concrete value at call time.

Content types

DirectionType
Request bodyapplication/json
Response bodyapplication/json
File uploads (Assets, licences)multipart/form-data

HTTP verbs

VerbUse
GETRead a single resource or list.
POSTCreate a resource, or trigger an action (/livestreams/{id}/start, /livestreams/{id}/stop).
PUTFull replace.
PATCHPartial update (used by patchSystemPreferences).
DELETERemove a resource.

Action endpoints under POST use a verb-shaped suffix (/start, /stop, /validate) rather than a separate verb.

Idempotency

Clients may send an optional Idempotency-Key header on mutating operations; where the deployment supports it, replayed requests with the same key within the retention window return the cached response from the first call. Confirm with your platform team before building a client that relies on this behaviour. Keys, when applicable, should be opaque, unique per logical operation, and at most 64 characters.

Worked example

Start a Live stream against the public API:

curl -X POST "https://<host>/c21apiv2/livestreams/{livestreamId}/start" \
  -H "Authorization: Bearer $LIVECONTROL_TOKEN" \
  -H "Idempotency-Key: ops-2026-05-15-news-start-01" \
  -H "Content-Type: application/json"

The response carries an X-Request-Id header that correlates the call with server-side events. Clients should first call GET /c21apiv2/livestreams/{livestreamId}/start/config (operation getLivestreamStartConfig) to obtain a valid idEncoderGroup and the last saved startConfig[] before posting the start.

FAQ

Copyright © 2026