---
title: "Create a live stream"
method: POST
path: "/v2/sites/{site_id}/live/broadcast/streams/"
tags: ["broadcast live"]
---

# Create a live stream

`POST /v2/sites/{site_id}/live/broadcast/streams/`

Create a new live stream

For more product information, see [Get started with Broadcast Live](https://docs.jwplayer.com/platform/docs/broadcast-live-get-started-with-broadcast-live).

## Path parameters

- `site_id` string, required — Unique identifier for a resource

## Request body

- StreamRequestParameters — The request parameters for a new live stream
  - `region` 'eu-west-1' | 'us-east-1', required — Region to use for live-streaming
  - `options` LiveStreamOptionsParameters — Options for creating a new live stream
    - `ingest_format` 'hls_pull' | 'rtmp' | 'rtp' | 'rtp_fec' | 'srt' | 'srt_pull' | 'zixi_push', nullable — Live stream ingest format
    - `enable_drm` boolean, nullable — Whether or not to enable DRM This value will match the site by default.
    - `stream_type` '24/7' | 'event', nullable — Live stream type
    - `stream_start` string, date-time, nullable — A start time for the live stream. Required for event type streaming. You may set a start time for 24/7 live streams to schedule a stream for the future.
    - `stream_end` string, date-time, nullable — An end time for the live stream. Required for event type streaming. Not applicable to 24/7 live streams.
    - `stream_warmup` integer — Number of minutes before `stream_start` that the stream should start early
    - `dvr_window` 30 | 3600 | 7200 | 10800 | 14400 | 18000 | 21600 | 25200 | 28800 | 32400 | 36000 | 39600 | 43200 | 46800 | 50400 | 54000 | 57600 | 61200 | 64800 | 68400 | 72000 | 75600 | 79200 | 82800 | 86400 — DVR window duration, in seconds, for the live stream
    - `enable_live_to_vod` boolean — Whether or not to enable live2vod This is not applicable to 24/7 live streams. With live2vod enabled, the livestream will be converted to a hosted Media at the end of the stream.
    - `live_to_vod_method` 'hosted_capture' | 'renditions_capture', nullable — Controls how Live-to-VOD capture is performed once the stream ends **Possible values**: - `hosted_capture`: The stream is captured using the hosted capture flow. - `renditions_capture`: The stream is captured directly from the output renditions, producing a `renditions` (CMAF VOD) media.
    - `audio_definitions` AudioDefinitionParameters[], nullable — Any audio definitions for the live stream Providing audio definitions is essential for multi-audio live-streaming, but is otherwise not required.
      - `pid` integer, nullable — Packet identifier with a value between `32` and `8190`, excluding the reserved value `8187` The PID provided should be set on your source encoder to identify the language track.
      - `language` string, nullable — Language code for the audio track This is typically ISO-639-2b but depends on the ingest format. Setting a language code allows you to push an audio that may not already be tagged but is otherwise identified by the PID. The resulting audio in the live stream will then be tagged with this language code.
    - `caption_definitions` CaptionDefinitionParameters[], nullable — Any caption definitions for the live stream
      - `name` string — Name identifier for the caption definition This is used to differentiate between caption definitions.
      - `language` string — Language code for the caption This is either `ISO-639-2B` or `ISO-639-2T` Language codes cannot be used for more than one caption definition.
      - `type` 'TELETEXT' | 'CEA608708' — Specifies the type of caption This must be a valid supported caption type.
      - `page_number` integer — Specifies the teletext page number within the data stream from which to extract captions The range is `0x100` (256) to `0x8FF` (2303).
    - `use_legacy_ott_params` boolean — Whether to set the legacy OTT properties on the associated Media object
    - `source_url` string, nullable — Source URL for pull type ingest formats to use as a source
    - `mpd_profile` 'dvb-dash' | 'mpeg-dash', nullable — Which MPD profile to use
    - `clipping_window` '4h' | '6h' | '12h' | '24h' | '36h' — Defines the possible window (in hours) in which footage from **24/7 live streams** can be clipped
    - `additional_outputs` AdditionalUrlOutput[], nullable — Defines up to three RTMP URL objects for publishing to an additional location.
      - `title` string — Associated title used only for display in the platform
      - `url` string — Associated URL for the additional output, can be supplemented by a key
      - `key` string — Associated key for the additional output, such as RTMP
    - `purge_preview_content` boolean — Determines whether to remove preview content from the livestream upon publishing **Possible values**: - `true`: Preview content is removed - `false`: Preview content is retained
  - `metadata` MediaResourceCreateMetadata
    - `title` string — Title of the media <br /><br /> A maximum of 5000 characters is permitted.
    - `description` string — Short explanation of the video content <br /><br /> A maximum of 25000 characters is permitted.
    - `author` string — Name of the author <br /><br /> A maximum of 256 characters is permitted.
    - `drm` boolean — Indicates whether DRM is enabled for a media item in a DRM-enabled site
    - `duration` number — Length of the media in seconds This can only be defined manually for externally hosted media. The `duration` is set automatically for hosted media.
    - `permalink` string — URL of the page where this media is published A maximum of 2048 characters is permitted.
    - `category` 'Automotive' | 'Books and Literature' | 'Business and Finance' | 'Careers' | 'Education' | 'Events and Attractions' | 'Family and Relationships' | 'Fine Art' | 'Food & Drink' | 'Healthy Living' | 'Hobbies & Interests' | 'Home & Garden' | 'Medical Health' | 'Movies' | 'Music and Audio' | 'News and Politics' | 'Personal Finance' | 'Pets' | 'Pop Culture' | 'Real Estate' | 'Religion & Spirituality' | 'Science' | 'Shopping' | 'Sports' | 'Style & Fashion' | 'Technology & Computing' | 'Television' | 'Travel' | 'Video Gaming' — IAB category
    - `publish_start_date` string, date-time — Start date and time in ISO 8601 format when media is available for streaming
    - `publish_end_date` string, date-time — End date and time in ISO 8601 format when media is no longer available for streaming
    - `tags` string[] — User-generated labels used to classify a video Tags are case sensitive, and trailing whitespace is removed. When defining `tags`, include all the `tags` that should be associated with the target resource. When updating existing `tags`, include those already in use. Any `tags` not included within the updated `tags` in the request body will be deleted.
    - `language` 'aa' | 'ab' | 'ae' | 'af' | 'ak' | 'am' | 'an' | 'ar' | 'as' | 'av' | 'ay' | 'az' | 'ba' | 'be' | 'bg' | 'bh' | 'bi' | 'bm' | 'bn' | 'bo' | 'br' | 'bs' | 'ca' | 'ce' | 'ch' | 'co' | 'cr' | 'cs' | 'cu' | 'cv' | 'cy' | 'da' | 'de' | 'dv' | 'dz' | 'ee' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'ff' | 'fi' | 'fj' | 'fo' | 'fr' | 'fy' | 'ga' | 'gd' | 'gl' | 'gn' | 'gu' | 'gv' | 'ha' | 'he' | 'hi' | 'ho' | 'hr' | 'ht' | 'hu' | 'hy' | 'hz' | 'ia' | 'id' | 'ie' | 'ig' | 'ii' | 'ik' | 'io' | 'is' | 'it' | 'iu' | 'ja' | 'jv' | 'ka' | 'kg' | 'ki' | 'kj' | 'kk' | 'kl' | 'km' | 'kn' | 'ko' | 'kr' | 'ks' | 'ku' | 'kv' | 'kw' | 'ky' | 'la' | 'lb' | 'lg' | 'li' | 'ln' | 'lo' | 'lt' | 'lu' | 'lv' | 'mg' | 'mh' | 'mi' | 'mk' | 'ml' | 'mn' | 'mr' | 'ms' | 'mt' | 'my' | 'na' | 'nb' | 'nd' | 'ne' | 'ng' | 'nl' | 'nn' | 'no' | 'nr' | 'nv' | 'ny' | 'oc' | 'oj' | 'om' | 'or' | 'os' | 'pa' | 'pi' | 'pl' | 'ps' | 'pt' | 'qu' | 'rm' | 'rn' | 'ro' | 'ru' | 'rw' | 'sa' | 'sc' | 'sd' | 'se' | 'sg' | 'si' | 'sk' | 'sl' | 'sm' | 'sn' | 'so' | 'sq' | 'sr' | 'ss' | 'st' | 'su' | 'sv' | 'sw' | 'ta' | 'te' | 'tg' | 'th' | 'ti' | 'tk' | 'tl' | 'tn' | 'to' | 'tr' | 'ts' | 'tt' | 'tw' | 'ty' | 'ug' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'vo' | 'wa' | 'wo' | 'xh' | 'yi' | 'yo' | 'za' | 'zh' | 'zu' — List of language codes to define a language. Uses ISO-639-1 language codes.
    - `content_type` string — Content type of the media item <br /> **JWX default values**: - `movie` - `series` - `episode` - `live_channel` - `live_event` - `trailer` - `hub` - `static_page` <br /> **NOTE**: [Content types](https://docs.jwplayer.com/platform/docs/add-a-content-type) allow you to classify media using shared custom parameters. The content type of a media item affects how it is organized and used within JWX. Ensure the selected content type is compatible with the media item's other metadata and relationships.
    - `custom_params` CustomParamSchema — User-generated key-value pairs When defining `custom_params`, include all custom parameters that should be associated with the target resource. When updating existing `custom_params`, include all `custom_params` keys with their updated values. Any `custom_params` key-value pair not included within the updated `custom_params` in the request body is [deleted](https://docs.jwplayer.com/platform/docs/stream-faq-how-can-i-delete-a-custom-parameter).
    - `external_id` string — ID for the media, generated by a non-JWX platform or program A maximum of 64 characters is permitted.
  - `relationships` object — Relationships between the live stream object and related resources, such as the stream config and ingest point Additional supported relationships are attached to the associated media object. The live stream object only supports core Broadcast Live fields. Additional relationships are passed through the create media endpoint. Live stream relationships: - ingest_point - stream_config
    - `ingest_point` RelationshipWrite
      - `id` string, required — Unique identifier for a resource
    - `protection_rule` RelationshipWrite
      - `id` string, required — Unique identifier for a resource
    - `stream_config` RelationshipWrite
      - `id` string, required — Unique identifier for a resource
  - `ssai_config` SsaiConfig — SSAI configuration for a live stream
    - `ad_schedule_id` string, nullable — Ad schedule ID for SSAI
    - `live_preroll` boolean — Whether to enable live pre-roll

## Response `200`

Success

- LiveStreamObjectSchema — Schema object for a live stream
  - `schema` string
  - `id` string, nullable — Unique identifier for this resource
  - `created` string, date-time, nullable — Timestamp of when the live stream was created
  - `last_modified` string, date-time, nullable — Timestamp of when the live stream was last modified
  - `type` string, nullable — Unique type label for this resource
  - `relationships` object, nullable — Related resources
  - `metadata` LiveStreamMetadata — Schema object for a live stream's metadata
    - `status` 'capturing' | 'captured' | 'creating' | 'deleting' | 'destroying' | 'failed' | 'idle' | 'ready' | 'requested' | 'scheduled' | 'starting' | 'stopped' | 'stopping' | 'streaming' — The current live stream status.
    - `ingest` object, nullable — Ingest information for the live stream.
    - `playout` LiveStreamPlayout — Live stream playout information
      - `hls` string, nullable — HLS URL for playout
      - `dash` string, nullable — DASH URL for playout
      - `availability` 'not_available' | 'preview' | 'available' — Availability of the playout This can be used to signal whether public playback should commence or not.
    - `title` string, nullable — Title of the live stream This value matches the media object.
    - `drm` boolean — Whether or not the live stream should use DRM to protect the content
    - `stream_start` string, date-time, nullable — Start time for the live stream
    - `stream_end` string, date-time, nullable — End time of the live stream
  - `stream_type` '24/7' | 'event', nullable — The type of live stream.
  - `profile_name` string, nullable — The associated Preset's name.
  - `cluster_region` string, nullable — The associated Cluster's name.
  - `ingest_format` 'hls_pull' | 'rtmp' | 'rtp' | 'rtp_fec' | 'srt' | 'srt_pull' | 'zixi_push', nullable — The ingest format used for the live stream.
  - `dvr_window` 30 | 3600 | 7200 | 10800 | 14400 | 18000 | 21600 | 25200 | 28800 | 32400 | 36000 | 39600 | 43200 | 46800 | 50400 | 54000 | 57600 | 61200 | 64800 | 68400 | 72000 | 75600 | 79200 | 82800 | 86400 — The DVR window set on the live stream.
  - `audio_definitions` AudioDefinition[], nullable — Audio definitions for the live stream (i.e. language and PID configuration)
    - `pid` integer, nullable — Associated PID (Packet Identifier) for the definition
    - `language` string, nullable — Associated language code for the definition
  - `caption_definitions` CaptionDefinition[], nullable — Caption definitions for the live stream, such as name, language, type, and page number configuration)
    - `name` string — Associated name identifier for the definition
    - `language` string — Associated language code for the definition. This is either `ISO-639-2B` or `ISO-639-2T`
    - `type` object — Associated caption type for the definition This is either `TELETEXT` or `CEA608708`
  - `use_legacy_ott_params` boolean — Whether or not the live stream is using legacy OTT parameters. The flag configures your Media to have the legacy VCH custom params, which may be desirable when migrating to the integrated version of Broadcast Live.
  - `enable_live_to_vod` boolean — Whether or not the live stream has live to VOD enabled. With live2vod enabled, the livestream will be converted to a hosted Media at the end of the stream.
  - `live_to_vod_method` 'hosted_capture' | 'renditions_capture' — Live-to-VOD capture method configured for this stream **Possible values**: - `hosted_capture`: The stream is captured using the hosted capture flow. - `renditions_capture`: The stream is captured directly from the output renditions, producing a `renditions` (CMAF VOD) media.
  - `mpd_profile` string, nullable — The profile type of the DASH MPD for this live stream.
  - `stream_warmup` integer, nullable — Number of minutes before `stream_start` that the stream was configured to start early

## Other responses

- `400` — Bad Request The request either lacks certain attributes or contains malformed/invalid attributes.
- `422` — Unprocessable Filter Parameters

---

[API](https://skmtc.net/jwplayer/apis/management-api-v2.md) · [All operations](https://skmtc.net/jwplayer/apis/management-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/jwplayer/management-api-v2/revisions/180db7cada27/schema)
