Destinations

Destinations

Configure where Live streams are published — Destination types, CDN providers, DRM, backup paths and the player URL.

What is a Destination

Destinations is the section of the left rail that catalogues outbound endpoints. The underlying entity is a Destination — the object the API manipulates and the editor edits. The two terms appear together: the list toolbar action is "Add destination", and the editor edits a Destination.

A Destination is independent from the Live stream that consumes it: the same Destination can be reused by many Live streams, and a Live stream can publish to many Destinations — directly or through a Destination group.

How it works

Define

Click Add destination and pick the Destination type. The rest of the form depends on the chosen type — endpoint URL or multicast group, credentials, segment settings for HLS / DASH / CMAF, and so on.

Bind

Bind the Destination to a Live stream from the Live streams editor — pick it under the Destination field. Alternatively, group several Destinations into a Destination group and bind the group.

Monitor

The Destination's runtime state surfaces on the bound Live stream's On air row as a coloured arrow on the Destination entrypoint; the per-rendition status is shown as one indicator per rung of the bound Encoding group.

Destination types

Publishing.type exposes a fixed enum. The canonical API labels are:

TypeNotes
HLS / TSHLS manifest with MPEG-TS segments.
DASHDASH manifest.
CMAFCMAF manifest for unified DASH / HLS delivery.
RTMPRTMP push to any RTMP ingest URL.
Enhanced RTMPEnhanced-RTMP push for multitrack contribution.
SRTSRT push (caller) to a partner SRT listener.
STREAMMPEG-TS over UDP or RTP, used for legacy multicast distribution.
SDIOUTBaseband SDI feed for OB or master control.
RecordCaptures the broadcast to disk and produces a Recording.

DRM is not a separate Destination type — it is the drm block on a DASH or CMAF Destination (see DRM on a Destination below).

CDN and delivery providers

The settings_common.provider field on a Destination names the CDN or delivery platform the destination targets. The provider is informational for some types and operationally meaningful for others (notably Millicast, where the provider gates the rtmp_millicast_buffer_millisec hint; and C21 Live Cloud, where the provider together with the bound account binds the Destination to a registered C21 Live Cloud account).

The full provider catalogue is exposed by GET /c21apiv2/publishing/providers (operationId getPublishingProviders); the UI's per-type compatibility matrix lives in publishingProviders in the Vue UI's app store, expressed as notFor exclusion lists.

Provider (provider value)IntentCompatible Destination types
AkamaiAkamai CDN delivery.DASH, HLS / TS, CMAF, RTMP, SRT, STREAM.
C21 Live CloudCires21's managed cloud platform. The Destination is bound to a registered C21 Live Cloud account.DASH, HLS / TS, CMAF, RTMP, SRT, STREAM.
Generic CDNAny CDN that is not listed by name. The catch-all entry.Every Destination type.
Millicast (Millicast WebRTC CDN)Millicast WebRTC fanout for sub-second delivery. The Destination's rtmp_millicast_buffer_millisec hint is honoured only when the provider is Millicast.RTMP, Enhanced RTMP.
TransparentCDNTransparentCDN delivery.DASH, HLS / TS, CMAF, RTMP, SRT, STREAM.
TwitchTwitch ingest. RTMP is the canonical ingest.RTMP, Enhanced RTMP.
Unified Streaming (Interface-1)Unified Streaming origin via the Interface-1 contract.CMAF.
YoutubeYouTube Live ingest. RTMP is the canonical ingest.HLS / TS, RTMP, SRT, STREAM.
MediaCopilotHLS contribution from a Live stream to a MediaCopilot Live Entrypoint. Requires a MediaCopilot account contracted through Cires21. See Contribute a live signal to MediaCopilot Live.HLS / TS only.

Per-type configuration

The rest of this section walks through each Destination type, the settings_* blocks that apply, and the DRM / backup / TTL interactions.

HLS / TS

HLS manifest with MPEG-TS segments.

  • Compatible providers: every provider that does not exclude HLS / TS — in practice Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Youtube, MediaCopilot.
  • settings_extra.hls: segments (count), duration (segment duration), ad_duration, max_ad_duration, absolute_path, keep_dvr (honoured only on CMAF; ignored here).
  • AES-128 static-key encryption: settings_extra.aes.{active, key, iv, key_url} enables clear-key AES-128.
  • DRM: not supported on HLS / TS in v1 — use CMAF for protected delivery on the Apple ecosystem.
  • Backup URLs: an optional secondary path is configurable through settings_common.urls.backup_server / settings_common.urls.backup when the receiving CDN supports dual ingest.
MediaCopilot Live (provider = MediaCopilot). A Destination whose provider is set to MediaCopilot contributes the live HLS feed to a MediaCopilot tenant in real time. The Destination editor's Username / Password fields are relabelled to Access Key ID / Secret Access Key, sourced from the MediaCopilot tenant. The bound Live stream is constrained to a single audio track and no subtitle tracks. Although HLS on the wire, a MediaCopilot Destination behaves as a single-program output: when the Live stream carries multiple renditions, only the highest quality is contributed — MediaCopilot processes one asset, not an adaptive ladder. See Contribute a live signal to MediaCopilot Live for the end-to-end flow.

DASH

DASH manifest.

  • Compatible providers: Akamai, C21 Live Cloud, Generic CDN, TransparentCDN.
  • settings_extra.dash: min_buffer_time (seconds), time_shift_buffer_depth (seconds), minimum_update_period (seconds).
  • DRM: supported via the drm block. The typical combination is systems = ["Widevine", "PlayReady"] with encryption_mode = cenc.

CMAF

CMAF manifest for unified DASH / HLS delivery.

  • Compatible providers: Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Unified Streaming (Interface-1).
  • settings_extra.hls: segments, duration, absolute_path, keep_dvr (preserves the previous DVR window across restarts; CMAF-only).
  • DRM: supported via the drm block. CMAF is the only type that supports FairPlay (systems = ["FairPlay"] with encryption_mode = cbcs, or a Widevine + PlayReady CMAF in cenc for the non-Apple ecosystem).

RTMP

RTMP push to an external ingest URL.

  • Compatible providers: Akamai, C21 Live Cloud, Generic CDN, Millicast, TransparentCDN, Twitch, Youtube.
  • settings_common: stream (stream name), urls.primary, optional urls.backup, username, password.
  • Stream backup name: backup_stream_name plus use_stream_backup_name = true. When the flag is set, the serializer stores the pair as <stream>#<backup> inside settings_common.stream; reads split the two halves automatically.
  • Millicast hint: rtmp_millicast_buffer_millisec is honoured only when provider = Millicast.
  • DRM: not applicable.

Enhanced RTMP

Enhanced-RTMP push for multitrack contribution.

  • Compatible providers: Generic CDN, Millicast, Twitch.
  • settings_common: same shape as RTMP.
  • DRM: not applicable.

For the sub-second end-to-end flow against Dolby Millicast — Real time encoding plus RTMP / Enhanced RTMP contribution — see Real Time streaming to Dolby Millicast.

SRT

SRT push (caller) to a partner SRT listener.

  • Compatible providers: every provider that does not exclude SRT — Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Youtube.
  • settings_common: urls.primary, optional urls.backup.
  • settings_extra.srt: latency (milliseconds), encryption (AES-128, AES-192 or AES-256; the server stores the integer key byte length), passphrase. The passphrase is redacted to non–System Administrator bearer tokens — reads return ***REDACTED***.
  • DRM: not applicable.

STREAM

MPEG-TS over UDP or RTP. The UI's publishingProtocols store exposes udp:// and rtp:// as the protocols a STREAM Destination accepts. A third protocol, udpr:// (UDP-R), is offered when the instance carries the C21LiveDeploy license.

  • Compatible providers: every provider that does not exclude STREAM — Akamai, C21 Live Cloud, Generic CDN, TransparentCDN, Youtube.
  • settings_common: urls.primary, optional urls.backup.
  • ttl: integer 0–255, honoured only on this type.
  • DRM: not applicable.

SDIOUT

Baseband SDI feed routed to an encoder Device's SDI output card.

  • settings_sdiout: format (one of the standard SDI formats — NTSC, PAL, 1080p / 1080i / 720p families), encoder (FK to the Device that owns the SDI card), slot (SDI slot number on that Device), channels (number of audio channels on the output).
  • Providers: SDI is local routing; the CDN-provider matrix does not apply.
  • DRM: not applicable.

Record

Captures the broadcast to disk and produces a Recording.

  • settings_recording.remotefolder: FK to a registered RemoteFolder.
  • settings_recording.delete_after: retention in days. The encoder multiplies the value by 24 to derive the purge window in hours.
  • Providers: Record is local capture; the CDN-provider matrix does not apply.
  • DRM: not applicable.

DRM on a Destination

DRM is not a separate Destination type; it is the drm block on a DASH or CMAF Destination. The block carries:

FieldNotes
activeBoolean. Enables protection.
provider_idFK to a validated DRM provider. See DRM workflow.
contentid≤ 100 characters, unique per Destination. The identifier the upstream vendor expects on key requests.
systemsArray of Widevine, PlayReady, FairPlay.
encryption_modecenc or cbcs. Derived from systems by the server — any FairPlay member forces cbcs; otherwise cenc. Clients may omit it on write; the server recomputes the value.

Two constraints come straight from the schema:

  • HLS / TS does not support DRM in v1. Use CMAF instead for protected delivery on the Apple ecosystem.
  • Interoperability policy: FairPlay cannot be combined with Widevine or PlayReady on the same Destination. Split into two Destinations — a CMAF / cbcs / FairPlay Destination for Apple and a DASH or CMAF / cenc / Widevine + PlayReady Destination for the rest.

For the end-to-end flow see DRM workflow; for the provider CRUD see DRM providers.

Backup URLs and stream backup name

Stream-pushing types (RTMP, Enhanced RTMP, SRT, STREAM, and HLS / TS / DASH / CMAF when fed to a dual-ingest origin) accept an optional secondary destination via settings_common.urls.backup_server and settings_common.urls.backup.

When the destination expects a secondary stream name, set backup_stream_name and use_stream_backup_name = true; the serializer stores the pair as <stream>#<backup> inside settings_common.stream and the API returns them split.

At runtime, the Operator can flip the per-Destination primary / backup state independently through runtimeTogglePublishings — see the Destinations tab in the runtime panel on On air. For destinations whose backup URL is empty (Record, SDIOUT, STREAM without backup), primary is the on/off toggle and backup is a no-op.

Playback URL

Optional field on the Destination where the operator can store the playback URL for that output. The product does not compute it — it is persisted verbatim from what the customer enters so it is on hand (to share with consumers, paste into a test player or reference from another integration). Persisted under settings_common.urls.player.

Common options

OptionNotes
NameDisplay name reused across the UI, API and logs.
DescriptionOptional free-text description.
TypeOne of the Destination types listed above.
ProviderOne of the values from getPublishingProviders. Compatibility against type is enforced by the matrix above.
Settings (common)Stream name, primary / backup URLs, username / password — depending on the type.
Settings (extra)Type-specific knobs grouped by family: hls, dash, srt, aes.
DRMOptional block on a DASH / CMAF Destination.
TTLIP TTL for UDP / RTP packets — meaningful only when type = STREAM.
Backup stream nameSecondary stream name; persisted alongside the primary stream name as described above.

Credentials (stream keys, SRT passphrases, RTMP usernames and passwords, DRM provider credentials) are stored encrypted at rest. Operators only see masked values in the UI; full values are never returned by the API.

In the Destination editor the fields are visually grouped into two fieldsets: Basic data (Name, Type) and Destination configuration (Provider, Stream name, Primary server, Primary URL, Backup server, Username, Password). The Backup server, Username and Password fields render only for types that accept credentials.

FAQ

Copyright © 2026