### POST /v2/engines/{id}/start Source: https://optiview.dolby.com/docs/theolive/api/migration-from-v1 Starts an individual engine. This is useful for live operations, for example starting a specific engine while keeping the rest of the channel running. ```APIDOC ## POST /v2/engines/{id}/start ### Description Starts an individual engine. This is useful for live operations, for example starting a specific engine while keeping the rest of the channel running. ### Method POST ### Endpoint /v2/engines/{id}/start ### Parameters #### Path Parameters - **id** (string) - Required - The engine ID. ``` -------------------------------- ### Start an engine via API Source: https://optiview.dolby.com/docs/theolive/platform/starting-and-stopping Use this request to start an engine with the specified engine ID. ```bash curl -X POST https://api.theo.live/v2/engines/eng_ghi789/start \ -H "Authorization: Basic $AUTH" ``` -------------------------------- ### Start the channel with curl Source: https://optiview.dolby.com/docs/theolive/api/full-example Starts all engines on the channel. Requires the channel ID and Basic authentication. The channel status transitions through deploying, provisioning, starting, waiting, then to ingesting and playing once the encoder stream arrives. ```bash curl -X POST https://api.theo.live/v2/channels/ch_abc123/start \ -H "Authorization: Basic $AUTH" ``` -------------------------------- ### Manually start a scheduler via POST Source: https://optiview.dolby.com/docs/theolive/platform/scheduler Immediately starts the connected channels regardless of the configured schedule. Available when a scheduler is idle. ```http POST https://api.theo.live/v2/schedulers/{schedulerId}/start ``` -------------------------------- ### POST /v2/engines/{engineId}/start Source: https://optiview.dolby.com/docs/theolive/platform/starting-and-stopping Starts an engine. Returns 204 as soon as the request is accepted; the engine starts in the background. ```APIDOC ## POST /v2/engines/{engineId}/start ### Description Starts an engine. Returns 204 as soon as the request is accepted; the engine starts in the background. ### Method POST ### Endpoint /v2/engines/{engineId}/start ### Parameters #### Path Parameters - **engineId** (string) - Required - The unique identifier of the engine to start. ### Request Example ```bash curl -X POST https://api.theo.live/v2/engines/eng_ghi789/start \ -H "Authorization: Basic $AUTH" ``` ### Response #### Success Response (204) No content. The request was accepted. ``` -------------------------------- ### POST /v2/channels/{channelId}/start Source: https://optiview.dolby.com/docs/theolive/platform/starting-and-stopping Starts a channel and all its engines and RTSP pull ingests. Returns 204 as soon as the request is accepted; the channel starts in the background. ```APIDOC ## POST /v2/channels/{channelId}/start ### Description Starts a channel and all its engines and RTSP pull ingests. Returns 204 as soon as the request is accepted; the channel starts in the background. ### Method POST ### Endpoint /v2/channels/{channelId}/start ### Parameters #### Path Parameters - **channelId** (string) - Required - The unique identifier of the channel to start. ### Request Example ```bash curl -X POST https://api.theo.live/v2/channels/ch_abc123/start \ -H "Authorization: Basic $AUTH" ``` ### Response #### Success Response (204) No content. The request was accepted. ``` -------------------------------- ### POST /v2/schedulers/{schedulerId}/start Source: https://optiview.dolby.com/docs/theolive/platform/scheduler Manually starts a scheduler when it is idle, immediately starting the connected channels regardless of the configured schedule. ```APIDOC ## POST /v2/schedulers/{schedulerId}/start ### Description Manually starts a scheduler when it is idle, immediately starting the connected channels regardless of the configured schedule. ### Method POST ### Endpoint https://api.theo.live/v2/schedulers/{schedulerId}/start ### Parameters #### Path Parameters - **schedulerId** (string) - Required - The unique identifier of the scheduler to start. ### Response No response details provided in the source. ``` -------------------------------- ### Authenticated GET request with cURL Source: https://optiview.dolby.com/docs/theolive/api/authentication Example of making a GET request to the channels endpoint using the Authorization header with a Basic authentication token. ```bash curl -X GET https://api.theo.live/v2/channels \ -H "Authorization: Basic bXktdG9rZW46bXktc2VjcmV0" ``` -------------------------------- ### POST /engines/:id/start Source: https://optiview.dolby.com/docs/theolive/api/start-engine Starts an engine identified by its ID. Returns 204 No Content on success. ```APIDOC ## POST /engines/:id/start ### Description Start an engine ### Method POST ### Endpoint /engines/:id/start ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the engine to start. ### Responses #### Success Response (204) Engine started ``` -------------------------------- ### Start channel POST request Source: https://optiview.dolby.com/docs/theolive/api/start-channel The endpoint to initiate the startup of a channel identified by its ID. ```http POST /channels/:id/start ``` -------------------------------- ### List all webhooks Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Retrieve a list of all configured webhooks using a GET request. ```http GET https://api.theo.live/v2/webhooks ``` -------------------------------- ### Get content protection configurations API request Source: https://optiview.dolby.com/docs/theolive/playback/other-hls-player Retrieve license acquisition URLs for a channel using the GET endpoint. ```http GET https://api.theo.live/v2/channels/{channelId}/drm/configs ``` -------------------------------- ### Webhook payload format example Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Example JSON payload sent to your endpoint when an event fires. Includes event type, timestamp, object details, and event-specific data. ```json { "type": "channel.stopped", "createdAt": 1711900800, "object": { "type": "channel", "id": "ch_abc123", "name": "name-of-channel", "organizationId": "organization-id", // optionally information about the parent object (id, type and name) }, "data": { ... }, } ``` -------------------------------- ### Get supported target languages request Source: https://optiview.dolby.com/docs/theolive/api/get-supported-target-languages The GET request to retrieve the list of supported target languages for speech enhancement. ```http GET /enhancements/speech/supported-target-languages ``` -------------------------------- ### GET /v2/webhooks Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Lists all webhooks. Supports pagination via cursor and limit query parameters. ```APIDOC ## GET /v2/webhooks ### Description Retrieves a list of all webhooks for the authenticated account. ### Method GET ### Endpoint https://api.theo.live/v2/webhooks ### Query Parameters - **cursor** (string) - Optional - Pagination cursor for the next page. - **limit** (integer) - Optional - Number of results per page. ### Response Returns a list of webhooks with details such as name, URL, status, and subscribed events. ``` -------------------------------- ### POST /v2/channels/{id}/start Source: https://optiview.dolby.com/docs/theolive/api/migration-from-v1 Starts the channel, which controls all engines at once. This is the V2 equivalent of the V1 endpoint POST /channels/{id}/start. ```APIDOC ## POST /v2/channels/{id}/start ### Description Starts the channel, which controls all engines at once. This is the V2 equivalent of the V1 endpoint POST /channels/{id}/start. ### Method POST ### Endpoint /v2/channels/{id}/start ### Parameters #### Path Parameters - **id** (string) - Required - The channel ID. ``` -------------------------------- ### Configure IP-blocking via API Source: https://optiview.dolby.com/docs/theolive/distribution/security/ip-blocking Example JSON payload for the security.ipBlocking object when creating or updating a distribution. ```json { "name": "my-distribution", "security": { "ipBlocking": { "enabled": true, "mode": "allow", "cidrs": ["203.0.113.0/24", "198.51.100.0/24"] } } } ``` -------------------------------- ### POST /channels/:id/start Source: https://optiview.dolby.com/docs/theolive/api/start-channel Starts all connected engines and rtsp-pull ingests of the channel. This endpoint is used to initiate the channel's operations. ```APIDOC ## POST /channels/:id/start ### Description Starts all connected engines and all connected rtsp-pull ingests of the channel. ### Method POST ### Endpoint /channels/:id/start ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the channel to start. ### Response #### Success Response (204) Channel started ``` -------------------------------- ### Query transcoding minutes analytics Source: https://optiview.dolby.com/docs/theolive/platform/usage Example request for retrieving transcoding capacity usage, grouped by engine. ```text GET /v2/channels/{channelId}/analytics/transcoding-minutes?start=2025-01-01&end=2025-01-31&resolution=month&groupBy=engine ``` -------------------------------- ### GET /enhancements/speech/dictionaries Source: https://optiview.dolby.com/docs/theolive/api/get-speech-dictionaries The endpoint to retrieve a paginated list of all available speech dictionaries. ```http GET /enhancements/speech/dictionaries ``` -------------------------------- ### Webhook signature header format Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Example of the x-dolby-streaming-signature header containing a timestamp (t) and a hash (h). ```text t=1659622850,h=6bbe0553922a31ea48cb3af9903616c3a8b65351434653251949480f2a91c037 ``` -------------------------------- ### GET /v2/distributions/{distributionId}/thumbnails/thumbnail.jpeg Source: https://optiview.dolby.com/docs/theolive/distribution/thumbnails-manifests Retrieves a live thumbnail image for a specific distribution. Replace {distributionId} with your distribution identifier. ```APIDOC ## GET /v2/distributions/{distributionId}/thumbnails/thumbnail.jpeg ### Description Retrieves a live thumbnail image for a specific distribution. This can be used for poster frames, stream previews, or channel listings outside of the player. ### Method GET ### Endpoint https://discovery.theo.live/v2/distributions/{distributionId}/thumbnails/thumbnail.jpeg ### Parameters #### Path Parameters - **distributionId** (string) - Required - The distribution identifier. ### Response #### Success Response (200) - **body** (image/jpeg) - The thumbnail image. #### Response Example (Image data) ``` -------------------------------- ### GET /v2/schedulers Source: https://optiview.dolby.com/docs/theolive/platform/scheduler Lists all schedulers. Supports optional query parameters for pagination, filtering by status, and sorting. ```APIDOC ## GET /v2/schedulers ### Description Lists all schedulers. Supports optional query parameters for pagination, filtering by status, and sorting. ### Method GET ### Endpoint https://api.theo.live/v2/schedulers ### Parameters #### Query Parameters - **cursor** (string) - Optional - Pagination cursor for the next page - **limit** (integer) - Optional - Number of results per page - **status** (string) - Optional - Comma-separated filter, e.g. idle,active - **sortBy** (string) - Optional - Sort field: status, name, startDate, or startTime - **sortDirection** (string) - Optional - asc or desc ### Response #### Success Response (200) - **schedulers** (array) - List of schedulers #### Response Example { "schedulers": [] } ``` -------------------------------- ### GET /schedulers Source: https://optiview.dolby.com/docs/theolive/api/get-schedulers Lists all schedulers. This endpoint returns a list of schedulers and responds with a 200 status code. ```APIDOC ## GET /schedulers ### Description List all schedulers ### Method GET ### Endpoint /schedulers ### Response #### Success Response (200) List of schedulers ``` -------------------------------- ### Get all channels Source: https://optiview.dolby.com/docs/theolive/api Retrieves a list of all channels. This endpoint is part of the Channels section of the OptiView Live REST API. ```APIDOC ## Get all channels ### Description Retrieves all channels. ### Endpoint Refer to the full API specification for the exact endpoint path. ### Method GET ### Response Returns a list of channels. ``` -------------------------------- ### GET /abr Source: https://optiview.dolby.com/docs/theolive/api/get-abr-ladders Retrieves all ABR ladders for your organization. Returns a list of ABR ladders in the response. ```APIDOC ## GET /abr ### Description Get all ABR ladders for your organization ### Method GET ### Endpoint /abr ### Response #### Success Response (200) List of ABR ladders ``` -------------------------------- ### GET /distributions/:id/security/keys Source: https://optiview.dolby.com/docs/theolive/api/get-distribution-security-keys Retrieves the security keys for a distribution. The distribution ID is provided as a path parameter. ```APIDOC ## GET /distributions/:id/security/keys ### Description Get security keys of a distribution ### Method GET ### Endpoint /distributions/:id/security/keys ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the distribution ### Response #### Success Response (200) List of security keys ``` -------------------------------- ### Configure geo-blocking via API Source: https://optiview.dolby.com/docs/theolive/distribution/security/geo-blocking Example JSON payload for the security.geoBlocking object when creating or updating a distribution. ```json { "name": "my-distribution", "security": { "geoBlocking": { "enabled": true, "mode": "allow", "countries": ["BE", "NL"] } } } ``` -------------------------------- ### Retrieve available regions via GET /v2/regions Source: https://optiview.dolby.com/docs/theolive/api/full-example Fetches the list of available regions for your organization. Requires authentication via the Authorization header. ```bash curl -X GET https://api.theo.live/v2/regions \ -H "Authorization: Basic $AUTH" ``` ```json { "data": [ { "id": "europe-west", "name": "Europe West" }, { "id": "us-east", "name": "US East" } ] } ``` -------------------------------- ### GET /ingests/:id/runs Source: https://optiview.dolby.com/docs/theolive/api/get-ingest-runs Retrieves the list of runs for a specific ingest. Currently only available for rtsp-pull ingests, and runs are ordered by start time (most recent first). ```APIDOC ## GET /ingests/:id/runs ### Description Retrieves the list of runs for a specific ingest. Currently only available for rtsp-pull ingests, and runs are ordered by start time (most recent first). ### Method GET ### Endpoint /ingests/:id/runs ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the ingest. ### Response #### Success Response (200) List of ingest runs. ``` -------------------------------- ### Query viewing minutes analytics Source: https://optiview.dolby.com/docs/theolive/platform/usage Example request for retrieving viewing minutes data grouped by distribution for a specific date range. ```text GET /v2/channels/{channelId}/analytics/viewing-minutes?start=2025-01-01&end=2025-01-31&resolution=day&groupBy=distribution ``` -------------------------------- ### GET /distributions/:id/analytics/insights/browsers-os Source: https://optiview.dolby.com/docs/theolive/api/get-distribution-insights-browsers-os Retrieves browser and OS insights for a distribution. Data is only available for the last 30 days. ```APIDOC ## GET /distributions/:id/analytics/insights/browsers-os ### Description Retrieves browser and OS insights for a distribution. Data is only available for the last 30 days. ### Method GET ### Endpoint /distributions/:id/analytics/insights/browsers-os ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the distribution. ### Response #### Success Response (200) Browser/OS insights data ``` -------------------------------- ### GET /ingests/:id/last-run Source: https://optiview.dolby.com/docs/theolive/api/get-ingest-last-run Retrieves the last run of a specific ingest. Currently only available for rtsp-pull ingests, where a run is recorded every time the ingest is started. ```APIDOC ## GET /ingests/:id/last-run ### Description Retrieves the last run of a specific ingest. Currently only available for rtsp-pull ingests, where a run is recorded every time the ingest is started. ### Method GET ### Endpoint /ingests/:id/last-run ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the ingest. ### Response #### Success Response (200) Last ingest run ``` -------------------------------- ### Configure OptiView Player source Source: https://optiview.dolby.com/docs/theolive/api/full-example Set the player source using the distribution ID to initiate stream playback. ```javascript player.source = { sources: { type: 'theolive', src: 'dist_jkl012', }, }; ``` -------------------------------- ### GET /channels/:id/distributions Source: https://optiview.dolby.com/docs/theolive/api/get-channel-distributions Retrieves the list of distributions for a specific channel. The distributions are ordered alphabetically by name. ```APIDOC ## GET /channels/:id/distributions ### Description Retrieves the list of distributions for a specific channel. Distributions are ordered alphabetically by name. ### Method GET ### Endpoint /channels/:id/distributions ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the channel. ### Response #### Success Response (200) List of distributions, ordered alphabetically by name. ``` -------------------------------- ### Stop channel via cURL Source: https://optiview.dolby.com/docs/theolive/api/full-example Example command to stop a channel using the cURL utility with basic authentication. ```bash curl -X POST https://api.theo.live/v2/channels/ch_abc123/stop \ -H "Authorization: Basic $AUTH" ``` -------------------------------- ### GET /channels/:id/analytics/insights/browsers-os Source: https://optiview.dolby.com/docs/theolive/api/get-channel-insights-browsers-os Retrieves browser and OS insights for a channel. Data is available for the last 30 days. ```APIDOC ## GET /channels/:id/analytics/insights/browsers-os ### Description Retrieves browser and OS insights for a specific channel. Data is only available for the last 30 days. ### Method GET ### Endpoint /channels/:id/analytics/insights/browsers-os ### Parameters #### Path Parameters - **id** (string) - Required - The channel ID. ### Response #### Success Response (200) Browser/OS insights data ``` -------------------------------- ### GET /v2/channels - Next Page Source: https://optiview.dolby.com/docs/theolive/api/pagination Fetch the next page of channels using the cursor returned from a previous response. Continue until hasMore is false. ```APIDOC ## GET /v2/channels ### Description Fetches the next page of channels using the cursor from a previous response. Continue until hasMore is false. ### Method GET ### Endpoint /v2/channels ### Parameters #### Query Parameters - **limit** (number) - Optional - Maximum number of items to return per page. Defaults to 20. - **cursor** (string) - Required - Cursor from a previous response to fetch the next page. ### Request Example curl -X GET "https://api.theo.live/v2/channels?limit=10&cursor=eyJpZCI6ImNoXzEyMyJ9" -H "Authorization: Basic $AUTH" ### Response #### Success Response (200) - **data** (array) - List of channels. - **pagination** (object) - Pagination information. - **hasMore** (boolean) - true if there are more items to fetch, false if this is the last page. - **cursor** (string) - Opaque string to pass as the cursor query parameter in the next request. Only present when hasMore is true. #### Response Example { "data": [...], "pagination": { "hasMore": true, "cursor": "eyJpZCI6ImNoXzEyMyJ9" } } ``` -------------------------------- ### Fetch first page of channels Source: https://optiview.dolby.com/docs/theolive/api/pagination Initial request to a list endpoint using the limit query parameter. ```bash curl -X GET "https://api.theo.live/v2/channels?limit=10" \ -H "Authorization: Basic $AUTH" ``` -------------------------------- ### POST /v2/channels/{channelId}/start Source: https://optiview.dolby.com/docs/theolive/api/full-example Starts all engines on the channel. The channel status transitions through several states until it reaches playing when the encoder's stream arrives. ```APIDOC ## POST /v2/channels/{channelId}/start ### Description Starts all engines on the channel. The channel status will transition through deploying, provisioning, starting, waiting, then to ingesting and playing once the encoder's stream arrives. ### Method POST ### Endpoint https://api.theo.live/v2/channels/{channelId}/start ### Parameters #### Path Parameters - **channelId** (string) - Required - The ID of the channel. ### Request Example ```bash curl -X POST https://api.theo.live/v2/channels/ch_abc123/start \ -H "Authorization: Basic $AUTH" ``` ### Response No response body is documented. ``` -------------------------------- ### Get a specific security key Source: https://optiview.dolby.com/docs/theolive/api Retrieves a specific security key associated with a distribution. This operation is used to get details of a particular security key. ```APIDOC ## Get a specific security key ### Description Retrieves a specific security key associated with a distribution. ### Endpoint [Get a specific security key](https://optiview.dolby.com/docs/theolive/api/get-distribution-security-key.md) ``` -------------------------------- ### Get viewing minutes analytics for a distribution Source: https://optiview.dolby.com/docs/theolive/api Retrieves viewing minutes analytics for a distribution. This operation is used to get analytics data about viewing minutes for a distribution. ```APIDOC ## Get viewing minutes analytics for a distribution ### Description Retrieves viewing minutes analytics for a distribution. ### Endpoint [Get viewing minutes analytics for a distribution](https://optiview.dolby.com/docs/theolive/api/get-distribution-viewing-minutes.md) ``` -------------------------------- ### V2 Create Channel Pipeline Requests Source: https://optiview.dolby.com/docs/theolive/api/migration-from-v1 The four-step process required in V2 to set up a channel pipeline by creating individual channel, ingest, engine, and distribution resources. ```json // 1. Create channel POST https://api.theo.live/v2/channels { "name": "my-channel" } // 2. Create ingest POST https://api.theo.live/v2/channels/{channelId}/ingests { "name": "my-ingest", "type": "rtmp-push" } // 3. Create engine POST https://api.theo.live/v2/channels/{channelId}/engines { "name": "my-engine", "ingestId": "", "region": "", "quality": { "abrLadderId": "" } } // 4. Create distribution POST https://api.theo.live/v2/channels/{channelId}/distributions { "name": "my-distribution", "endpoints": { "engineIds": [""] } } ``` -------------------------------- ### GET /channels/:id/drm/configs Source: https://optiview.dolby.com/docs/theolive/api/get-channel-drm-configs Retrieves the DRM content protection configurations for a specific channel. The channel ID is provided as a path parameter. ```APIDOC ## GET /channels/:id/drm/configs ### Description Get the DRM content protection configurations of a channel. ### Method GET ### Endpoint /channels/:id/drm/configs ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the channel. ### Response #### Success Response (200) The DRM content protection configurations. ``` -------------------------------- ### Create an engine Source: https://optiview.dolby.com/docs/theolive/api/full-example Creates an engine to connect to the ingest and transcode the stream. ```bash curl -X POST https://api.theo.live/v2/channels/ch_abc123/engines \ -H "Authorization: Basic $AUTH" \ -H "Content-Type: application/json" \ -d '{ "name": "Primary engine", "ingestId": "ing_def456", "region": "europe-west", "priority": 1, "quality": { "abrLadderId": "abr_abc123" }, "outputs": { "hesp": true, "hls": true } }' ``` ```json { "data": { "id": "eng_ghi789", "name": "Primary engine", "createdAt": "2026-03-30T12:02:00.000Z", "updatedAt": "2026-03-30T12:02:00.000Z", "quality": { "abrLadderId": "abr_abc123" }, "drm": false, "priority": 1, "daiAssetKey": null, "outputs": { "hesp": true, "hls": true }, "overlays": [] } } ``` -------------------------------- ### GET /monitoring/engines/:engineId Source: https://optiview.dolby.com/docs/theolive/api/get-engine-monitoring Retrieves monitoring data for a specific engine, including rendition metrics. Use this endpoint to get detailed performance and status information for an engine. ```APIDOC ## GET /monitoring/engines/:engineId ### Description Returns monitoring data for a specific engine including rendition metrics. ### Method GET ### Endpoint /monitoring/engines/:engineId ### Parameters #### Path Parameters - **engineId** (string) - Required - The unique identifier of the engine. ### Response #### Success Response (200) Engine monitoring data #### Error Responses - **404** - Engine not found - **500** - Internal error ``` -------------------------------- ### Create a webhook for all events Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Use this POST request to create a catch-all webhook by setting the events array to a wildcard. ```json { "name": "Catch-all webhook", "url": "https://example.com/webhooks", "events": ["*"] } ``` -------------------------------- ### Configure engine overlays via API Source: https://optiview.dolby.com/docs/theolive/media-engine/image-overlays Example JSON payload for adding a logo overlay in the bottom-right corner when creating or updating an engine. ```json { "name": "my-engine", "region": "europe-west", "quality": { "abrLadderId": "your-abr-ladder-id" }, "overlays": [ { "url": "https://example.com/logo.png", "position": { "bottom": 20, "right": 20 }, "opacity": 0.8 } ] } ``` -------------------------------- ### GET /v2/schedulers/{schedulerId} Source: https://optiview.dolby.com/docs/theolive/platform/scheduler Retrieves a single scheduler by its ID. ```APIDOC ## GET /v2/schedulers/{schedulerId} ### Description Retrieves a single scheduler by its ID. ### Method GET ### Endpoint https://api.theo.live/v2/schedulers/{schedulerId} ### Parameters #### Path Parameters - **schedulerId** (string) - Required - The unique identifier of the scheduler ### Response #### Success Response (200) - **scheduler** (object) - The scheduler details #### Response Example { "scheduler": {} } ``` -------------------------------- ### GET /v2/webhooks/{webhookId} Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Retrieves a single webhook by its ID. ```APIDOC ## GET /v2/webhooks/{webhookId} ### Description Retrieves details of a specific webhook using its unique identifier. ### Method GET ### Endpoint https://api.theo.live/v2/webhooks/{webhookId} ### Path Parameters - **webhookId** (string) - Required - The unique identifier of the webhook. ### Response Returns the webhook details including name, URL, status, and subscribed events. ``` -------------------------------- ### GET /channels endpoint Source: https://optiview.dolby.com/docs/theolive/api/get-channels The endpoint used to retrieve all channels. ```http GET /channels ``` -------------------------------- ### Get a speech dictionary by ID Source: https://optiview.dolby.com/docs/theolive/api Retrieves a speech dictionary by its ID. ```APIDOC ## Get a speech dictionary by ID ### Description Get a speech dictionary by ID. ### Method GET ### Endpoint Not specified in source ### Parameters #### Path Parameters - `id` (string) - Required - The ID of the speech dictionary to retrieve. ### Response #### Success Response - `id` (string) - Identifier of the dictionary. - `terms` (array of strings) - List of terms in the dictionary. - `language` (string) - Language of the dictionary. ``` -------------------------------- ### POST /ingests/:id/start Source: https://optiview.dolby.com/docs/theolive/api/start-ingest Starts an RTSP-pull ingest, setting its status to active and recording a new ingest run. Returns 204 on success, 400 not_supported for unsupported ingest types, and 409 already_active if already active. ```APIDOC ## POST /ingests/:id/start ### Description Starts an RTSP-pull ingest. The ingest status becomes active and a new ingest run is recorded. ### Method POST ### Endpoint /ingests/:id/start ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the ingest to start. ### Responses #### Success Response (204) Ingest started #### Error Responses - **400** - not_supported - Returned for ingest types other than rtsp-pull. - **409** - already_active - Returned when the ingest is already active. ``` -------------------------------- ### Stream a file to OptiView Live Source: https://optiview.dolby.com/docs/theolive/contribution/software-encoders/ffmpeg Use this command to stream a local video file to an OptiView Live endpoint. The -re flag is used for file-based sources to read at the native frame rate. ```shell ffmpeg -re -stream_loop -1 -i /path/to/file.mp4 \ -c:v copy -c:a copy -f flv \ -rtmp_playpath "your-stream-key" \ -rtmp_live live "rtmps://rtmp..theo.live/live" ``` -------------------------------- ### GET /regions request Source: https://optiview.dolby.com/docs/theolive/api/get-regions The endpoint to retrieve all regions available for your organization. ```http GET /regions ``` -------------------------------- ### Create a distribution with curl Source: https://optiview.dolby.com/docs/theolive/api/full-example Creates a distribution for a channel. Requires the channel ID and an engine ID. Uses Basic authentication. ```bash curl -X POST https://api.theo.live/v2/channels/ch_abc123/distributions \ -H "Authorization: Basic $AUTH" \ -H "Content-Type: application/json" \ -d '{ "name": "Main distribution", "enabled": true, "endpoints": { "engineIds": ["eng_ghi789"] } }' ``` -------------------------------- ### Create a webhook for specific events Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Use this POST request to create a webhook that listens to a defined list of event types. ```json { "name": "Production event handler", "url": "https://example.com/webhooks", "events": ["channel.created", "channel.stopped", "engine.error"] } ``` -------------------------------- ### POST /v2/webhooks Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Creates a new webhook. You can listen to specific events or all events by using a wildcard. ```APIDOC ## POST /v2/webhooks ### Description Creates a new webhook to receive event payloads. You can specify individual events or use a wildcard to listen to all events. ### Method POST ### Endpoint https://api.theo.live/v2/webhooks ### Request Body - **name** (string) - Required - A descriptive name for the webhook. - **url** (string) - Required - The HTTPS endpoint URL that will receive event payloads. - **events** (array of strings) - Required - List of event names to subscribe to, or ["*"] to listen to all events. ### Request Example { "name": "Production event handler", "url": "https://example.com/webhooks", "events": ["channel.created", "channel.stopped", "engine.error"] } ### Request Example (All Events) { "name": "Catch-all webhook", "url": "https://example.com/webhooks", "events": ["*"] } ``` -------------------------------- ### GET /abr request Source: https://optiview.dolby.com/docs/theolive/api/get-abr-ladders The endpoint used to retrieve all ABR ladders for the organization. ```http GET /abr ``` -------------------------------- ### GET /v2/enhancements/speech/supported-target-languages Source: https://optiview.dolby.com/docs/theolive/contribution/enhancements/speech Retrieves the list of languages that can be translated into. These languages are accepted in the targetTextTracks field. ```APIDOC ## GET /v2/enhancements/speech/supported-target-languages ### Description Retrieves the list of languages that can be translated into. These languages are accepted in the targetTextTracks field. ### Method GET ### Endpoint /v2/enhancements/speech/supported-target-languages ### Response #### Success Response (200) - **data** (array of strings) - List of supported target language codes. #### Response Example { "data": ["en", "fr", "de", "es", "nl"] } ``` -------------------------------- ### Fetch next page of channels Source: https://optiview.dolby.com/docs/theolive/api/pagination Subsequent request using the cursor returned from the previous response. ```bash curl -X GET "https://api.theo.live/v2/channels?limit=10&cursor=eyJpZCI6ImNoXzEyMyJ9" \ -H "Authorization: Basic $AUTH" ``` -------------------------------- ### GET /channels Source: https://optiview.dolby.com/docs/theolive/api/get-channels Retrieves all channels. This endpoint returns a list of channels in the response body. ```APIDOC ## GET /channels ### Description Get all channels ### Method GET ### Endpoint /channels ### Response #### Success Response (200) List of channels ``` -------------------------------- ### GET /v2/channels - First Page Source: https://optiview.dolby.com/docs/theolive/api/pagination Fetch the first page of channels with a limit of 10 items. The response includes a pagination object with hasMore and cursor fields. ```APIDOC ## GET /v2/channels ### Description Fetches a list of channels with cursor-based pagination. Use the limit query parameter to control the number of items per page. ### Method GET ### Endpoint /v2/channels ### Parameters #### Query Parameters - **limit** (number) - Optional - Maximum number of items to return per page. Defaults to 20. - **cursor** (string) - Optional - Cursor from a previous response to fetch the next page. ### Request Example curl -X GET "https://api.theo.live/v2/channels?limit=10" -H "Authorization: Basic $AUTH" ### Response #### Success Response (200) - **data** (array) - List of channels. - **pagination** (object) - Pagination information. - **hasMore** (boolean) - true if there are more items to fetch, false if this is the last page. - **cursor** (string) - Opaque string to pass as the cursor query parameter in the next request. Only present when hasMore is true. #### Response Example { "data": [...], "pagination": { "hasMore": true, "cursor": "eyJpZCI6ImNoXzEyMyJ9" } } ``` -------------------------------- ### Enable SCTE-35 passthrough via POST Source: https://optiview.dolby.com/docs/theolive/channel/scte-35 Set the sctePassthrough property to true when creating a new channel. ```json { "name": "my-channel", "sctePassthrough": true } ``` -------------------------------- ### GET /webhooks Source: https://optiview.dolby.com/docs/theolive/api/get-webhooks Retrieves all webhooks. This endpoint returns a list of webhooks in the response body. ```APIDOC ## GET /webhooks ### Description Get all webhooks ### Method GET ### Endpoint /webhooks ### Response #### Success Response (200) List of webhooks ``` -------------------------------- ### Create Speech Dictionary Request Source: https://optiview.dolby.com/docs/theolive/contribution/enhancements/speech Example JSON payload for creating a new speech dictionary, including a name, language, and a list of terms with optional phonetic hints. ```json { "name": "horse-racing", "language": "en", "terms": ["OptiView", "A. Väyrynen", "D&I|dee-and-eye,dee-n-eye"] } ``` -------------------------------- ### GET /webhooks/:id Source: https://optiview.dolby.com/docs/theolive/api/get-webhook Retrieves a webhook by its ID. The response includes the webhook details. ```APIDOC ## GET /webhooks/:id ### Description Get a webhook by ID ### Method GET ### Endpoint /webhooks/:id ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the webhook ### Response #### Success Response (200) The requested webhook ``` -------------------------------- ### Create Media Asset request Source: https://optiview.dolby.com/docs/theolive/platform/live-clipping Use this cURL request to initiate a clip from a live stream by specifying the channel ID, start and stop times, and setting the target format to hls. ```curl curl --request POST \ --url https://api.millicast.com/api/v3/media/assets \ --header 'Authorization: Bearer abc123' \ --data ' { "channelId": "", "startTime": "2026-01-15T01:33:33Z", "stopTime": "2026-01-15T01:34:33Z", "targetFormat": "hls" } ' ``` -------------------------------- ### GET /schedulers/:id Source: https://optiview.dolby.com/docs/theolive/api/get-scheduler Retrieves a scheduler by its ID. The response contains the requested scheduler. ```APIDOC ## GET /schedulers/:id ### Description Get a scheduler by ID ### Method GET ### Endpoint /schedulers/:id ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the scheduler ### Response #### Success Response (200) The requested scheduler ``` -------------------------------- ### GET /channels/:id Source: https://optiview.dolby.com/docs/theolive/api/get-channel Retrieves a channel by its ID. The response returns the channel details. ```APIDOC ## GET /channels/:id ### Description Get a channel by ID ### Method GET ### Endpoint /channels/:id ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the channel ### Response #### Success Response (200) The requested channel ``` -------------------------------- ### GET /abr/engine-counts Source: https://optiview.dolby.com/docs/theolive/api/get-abr-ladder-engine-counts Request to retrieve the number of engines using each ABR ladder of your organization. ```http GET /abr/engine-counts ``` -------------------------------- ### Verify webhook signatures in Node.js Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks A complete Express.js example demonstrating how to extract the signature header, reconstruct the HMAC SHA-256 hash, and validate the request authenticity. ```javascript const express = require('express'); const crypto = require('crypto'); const port = 3400; var app = express(); app.use(express.json()); app.post('/webhooks', (req, res) => { res.send('ok'); // acknowledge receipt ASAP const secret = 'dolby_sec_myverylittlesecret'; // secret received on creation const data = req.body; // 1. Grab Dolby-Signature from header const signatureHeader = req.header('x-dolby-streaming-signature'); // t=1659622850,h=6bbe0553922a31ea48cb3af9903616c3a8b65351434653251949480f2a91c037 // 2. Split string: you'll receive a timestamp (t) and hash (h) const timestampPart = signatureHeader.split(',')[0]; // t=1659622850 const hashPart = signatureHeader.split(',')[1]; // h=6bbe05... // 3. Get the values for both the timestamp and hash const timestampValue = timestampPart.split('=')[1]; // 1659622850 const hashValue = hashPart.split('=')[1]; // 6bbe05... // 4. Prepare the hash string: stringify the request body const dataAsString = JSON.stringify(data); const stringToBeHashed = `${timestampValue}.${dataAsString}`; // 5. Make a HMAC SHA-256 hash, using your secret as a key const hashToCheck = crypto.createHmac('sha256', secret).update(stringToBeHashed).digest('hex'); // 6. Check if both hashes are the same if (hashToCheck === hashValue) { // all good, continue with code } else { // data not coming from Dolby, throw an error } }); app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); ``` -------------------------------- ### Add WebRTC to a distribution Source: https://optiview.dolby.com/docs/theolive/distribution/webrtc Configures a WebRTC source for a distribution using the webRtc field. Setting priority to 0 gives it the highest priority, causing the player to prefer WebRTC over HESP/HLS. ```json { "name": "my-distribution", "webRtc": { "priority": 0, "src": { "name": "my-realtime-stream", "accountId": "your-realtime-account-id", "apiUrl": "https://director.millicast.com/api/director/subscribe" } } } ``` -------------------------------- ### GET /regions Source: https://optiview.dolby.com/docs/theolive/api/get-regions Retrieves all regions available for your organization. This endpoint returns a list of regions in the response. ```APIDOC ## GET /regions ### Description Get all regions available for your organization ### Method GET ### Endpoint /regions ### Response #### Success Response (200) List of regions ``` -------------------------------- ### GET /engines/:id Source: https://optiview.dolby.com/docs/theolive/api/get-engine Retrieves an engine by its unique identifier. The response contains the engine details. ```APIDOC ## GET /engines/:id ### Description Get an engine by ID ### Method GET ### Endpoint /engines/:id ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the engine. ### Response #### Success Response (200) The requested engine ``` -------------------------------- ### POST /v2/channels Source: https://optiview.dolby.com/docs/theolive/channel/scte-35 Creates a new channel with SCTE-35 passthrough enabled by setting sctePassthrough to true. ```APIDOC ## POST /v2/channels ### Description Creates a new channel. Set sctePassthrough to true to enable SCTE-35 passthrough. ### Method POST ### Endpoint https://api.theo.live/v2/channels ### Parameters #### Request Body - **name** (string) - Required - The name of the channel. - **sctePassthrough** (boolean) - Optional - Set to true to enable SCTE-35 passthrough. ### Request Example { "name": "my-channel", "sctePassthrough": true } ### Response #### Success Response (200) - **sctePassthrough** (boolean) - The effective value of SCTE-35 passthrough for the channel. #### Response Example { "sctePassthrough": true } ``` -------------------------------- ### GET /abr/:id/engines Source: https://optiview.dolby.com/docs/theolive/api/get-abr-ladder-engines Retrieve a paginated list of engines using the specified ABR ladder. ```http GET /abr/:id/engines ``` -------------------------------- ### Low latency encoding for capture devices Source: https://optiview.dolby.com/docs/theolive/contribution/software-encoders/ffmpeg Recommended settings for streaming from a capture device like a DeckLink card to achieve minimal latency. These settings prioritize speed and reduced buffering. ```shell ffmpeg -f decklink -i "DeckLink Mini Recorder" \ -vcodec libx264 -vb 4500k -vprofile main -g 60 \ -preset veryfast -tune zerolatency -bf 0 \ -c:a aac -ab 128k -f flv \ -rtmp_playpath "your-stream-key" \ -rtmp_live live "rtmps://rtmp..theo.live/live" ``` -------------------------------- ### Enable DVR via API channel configuration Source: https://optiview.dolby.com/docs/theolive/channel/dvr Use this JSON payload when creating or updating a channel to enable DVR and set the rewindable buffer size in seconds. ```json { "name": "my-channel", "dvr": { "enabled": true, "windowInSeconds": 3600 } } ``` -------------------------------- ### Create an engine for a channel Source: https://optiview.dolby.com/docs/theolive/api Creates an engine for a channel. ```APIDOC ## Create an engine for a channel ### Description Creates an engine for a channel. ### Endpoint [Refer to the full API documentation for endpoint details.] ``` -------------------------------- ### Get a single webhook Source: https://optiview.dolby.com/docs/theolive/platform/real-time-update-with-webhooks Retrieve details for a specific webhook by providing its unique identifier in the URL path. ```http GET https://api.theo.live/v2/webhooks/{webhookId} ``` -------------------------------- ### GET /v2/enhancements/speech/supported-source-languages Source: https://optiview.dolby.com/docs/theolive/contribution/enhancements/speech Retrieves the list of languages that the speech recognition can transcribe. These languages are accepted in the sourceLanguage field. ```APIDOC ## GET /v2/enhancements/speech/supported-source-languages ### Description Retrieves the list of languages that the speech recognition can transcribe. These languages are accepted in the sourceLanguage field. ### Method GET ### Endpoint /v2/enhancements/speech/supported-source-languages ### Response #### Success Response (200) - **data** (array of strings) - List of supported source language codes. #### Response Example { "data": ["en", "fr", "de", "es", "nl"] } ``` -------------------------------- ### GET captioned minutes analytics endpoint Source: https://optiview.dolby.com/docs/theolive/api/get-speech-captioned-minutes The endpoint path for retrieving captioned minutes analytics data. ```http GET /enhancements/speech/analytics/captioned-minutes ```