Create a stream

Creates a stream. Behaviour depends on whether video_template_id is supplied.

Without video_template_id, the stream is a metadata record that clips and highlights can be attached to. Zentag does not start ingest or analysis.

With video_template_id, Zentag provisions ingest and runs analysis using that template. List GET /stream-templates for the ids available to your organization. Provisioning continues after this call returns, so the stream is created with a non-terminal status: poll GET /streams/{id} or subscribe to stream.started rather than treating the 201 as ready. For push input types, read ingest coordinates from GET /streams/{id}/ingest once provisioning completes.

stream.created fires on this call. stream.started fires only when the feed actually goes live.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required
string

Source URL. Required for recorded feeds and for the pull input types (RTMP_PULL, SRT_PULL, HLS_PULL), where it must use the protocol the input type expects. Not required for push input types, which receive ingest coordinates from GET /streams/{id}/ingest.

string
string
string
string
string

Fixture id from GET /matches. Stored on the stream and used for media-library match enrichment (same field Studio's Add Video feed uses).

date-time
string

Id of a template from GET /stream-templates. Supplying it runs the processing pipeline; omitting it creates a metadata-only stream. The template must belong to your organization.

string
enum

Defaults to recorded. Only meaningful with a template.

Allowed:
date-time

When the match starts. Required when video_type is live.

date-time

When the match ends. Supply this or scheduled_duration_hours.

number
1 to 8

Planned match length. Alternative to scheduled_end_at.

string

IANA timezone recorded alongside the schedule, e.g. Europe/London. Defaults to UTC. Recorded for display only: the schedule itself is resolved from the instants above.

Headers
string

Unique key to safely retry POST requests. Reusing a key returns the original response with Idempotent-Replayed: true and performs no new work. Reusing a key with a different body returns 409 idempotency_conflict. Keys are scoped to your API key and expire after 24 hours.

Responses

Language
Credentials
Bearer
zt_live_sk_*
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json