Dolby.io Channels API

The Channels API from Dolby.io — 20 operation(s) for channels.

OpenAPI Specification

dolby-io-channels-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Dolby OptiView Real-time Streaming ABR Ladders Channels API
  description: 'REST API for managing OptiView Real-time Streaming (formerly Millicast / Dolby.io

    Real-time Streaming) — publish/subscribe tokens, recordings, transcoders,

    encoder profiles, clusters, analytics, and webhooks. All requests are

    authenticated with a Bearer API Secret created in the streaming dashboard

    (Settings -> Security -> API Secrets).

    '
  version: '2026.05'
  contact:
    name: Dolby OptiView Support
    url: https://optiview.dolby.com/docs/millicast/
servers:
- url: https://api.millicast.com/api
  description: Production REST API
security:
- BearerAuth: []
tags:
- name: Channels
paths:
  /channels:
    get:
      tags:
      - Channels
      operationId: get-channels
      summary: Get all channels
      parameters:
      - schema:
          type: string
          description: Filter by external ID
        required: false
        description: Filter by external ID
        name: externalId
        in: query
      - schema:
          type: string
          description: Pagination cursor
        required: false
        description: Pagination cursor
        name: cursor
        in: query
      - schema:
          type: number
          nullable: true
          maximum: 100
          description: Maximum number of channels to return (max 100)
        required: false
        description: Maximum number of channels to return (max 100)
        name: limit
        in: query
      - schema:
          type: string
          description: Filter by channel name
        required: false
        description: Filter by channel name
        name: name
        in: query
      - schema:
          type: string
          description: Search channels based on ID or name
        required: false
        description: Search channels based on ID or name
        name: search
        in: query
      - schema:
          type: string
          description: Comma-separated list of statuses to filter by
        required: false
        description: Comma-separated list of statuses to filter by
        name: status
        in: query
      - schema:
          type: string
          description: Filter by channel ID
        required: false
        description: Filter by channel ID
        name: id
        in: query
      responses:
        '200':
          description: List of channels
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedChannelResult'
    post:
      tags:
      - Channels
      operationId: create-channel
      summary: Create a new channel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChannelBody'
      responses:
        '200':
          description: Channel created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelCreatedObjectResult'
  /channels/{id}:
    get:
      tags:
      - Channels
      operationId: get-channel
      summary: Get a channel by ID
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: 'Comma-separated list of related resources to include. Valid values: ingests, distributions, engines'
        required: false
        description: 'Comma-separated list of related resources to include. Valid values: ingests, distributions, engines'
        name: include
        in: query
      responses:
        '200':
          description: The requested channel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelObjectResultWithIncludes'
    patch:
      tags:
      - Channels
      operationId: update-channel
      summary: Update a channel by ID
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateChannelBody'
      responses:
        '200':
          description: Updated channel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelObjectResult'
    delete:
      tags:
      - Channels
      operationId: delete-channel
      summary: Delete a channel by ID
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      responses:
        '204':
          description: Empty response
  /channels/{id}/start:
    post:
      tags:
      - Channels
      operationId: start-channel
      summary: Start a channel (will start all connected engines)
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      responses:
        '204':
          description: Channel started
  /channels/{id}/stop:
    post:
      tags:
      - Channels
      operationId: stop-channel
      summary: Stop a channel (will stop all connected engines)
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      responses:
        '204':
          description: Channel stopped
  /channels/{id}/ingests:
    get:
      tags:
      - Channels
      operationId: get-channel-ingests
      summary: Get ingests of a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Pagination cursor
        required: false
        description: Pagination cursor
        name: cursor
        in: query
      - schema:
          type: number
          nullable: true
          maximum: 100
          description: Maximum number of items to return (max 100)
        required: false
        description: Maximum number of items to return (max 100)
        name: limit
        in: query
      responses:
        '200':
          description: List of ingests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIngestResult'
    post:
      tags:
      - Channels
      operationId: create-channel-ingest
      summary: Create an ingest for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Name of the ingest
                type:
                  type: string
                  enum:
                  - rtmp-push
                  - rtmp-pull
                  - srt-pull
                  - srt-push
                  - sdi-pull
                  description: 'Ingest type. Note: srt-push requires SRT push to be enabled at organization level'
                url:
                  type: string
                  description: Source URL (required for pull types)
                region:
                  type: string
                  description: Region ID (required for rtmp-push)
                captions:
                  type: array
                  items:
                    type: object
                    properties:
                      channel:
                        type: number
                        description: Caption channel number
                      language:
                        type: string
                        description: Caption language code
                      label:
                        type: string
                        description: Caption label
                    required:
                    - channel
                    - language
                  description: Caption configuration
                tracks:
                  type: object
                  properties:
                    audio:
                      type: array
                      items:
                        type: object
                        properties:
                          pid:
                            type: number
                            description: Audio track PID (mandatory for multi-audio)
                          language:
                            type: string
                            description: Audio track language code
                          label:
                            type: string
                            description: Audio track label
                        required:
                        - language
                        - label
                      description: Audio track configuration
                  description: Audio track configuration
              required:
              - name
              - type
              additionalProperties: false
      responses:
        '200':
          description: Ingest created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestObjectResult'
  /channels/{id}/engines:
    get:
      tags:
      - Channels
      operationId: get-channel-engines
      summary: Get engines of a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Pagination cursor
        required: false
        description: Pagination cursor
        name: cursor
        in: query
      - schema:
          type: number
          nullable: true
          maximum: 100
          description: Maximum number of items to return (max 100)
        required: false
        description: Maximum number of items to return (max 100)
        name: limit
        in: query
      responses:
        '200':
          description: List of engines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEngineResult'
    post:
      tags:
      - Channels
      operationId: create-channel-engine
      summary: Create an engine for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ingestId:
                  type: string
                  description: Ingest ID to connect the engine to
                name:
                  type: string
                  description: Name of the engine
                region:
                  type: string
                  description: Region ID to deploy the engine in
                priority:
                  type: number
                  minimum: -100
                  maximum: 100
                  description: Engine priority (-100 to 100). Lower numbers mean higher priority
                drm:
                  type: boolean
                  description: Enable DRM. Only possible when enabled on organization level.
                quality:
                  type: object
                  properties:
                    abrLadderId:
                      type: string
                      description: ABR ladder ID
                  required:
                  - abrLadderId
                  description: Quality configuration
                daiAssetKey:
                  type: string
                  nullable: true
                  description: DAI asset key
                overlays:
                  type: array
                  items:
                    type: object
                    properties:
                      url:
                        type: string
                        description: URL of the overlay image
                      position:
                        type: object
                        properties:
                          top:
                            type: integer
                            minimum: 0
                            description: Pixels from top
                          bottom:
                            type: integer
                            minimum: 0
                            description: Pixels from bottom (ignored if top is present)
                          left:
                            type: integer
                            minimum: 0
                            description: Pixels from left
                          right:
                            type: integer
                            minimum: 0
                            description: Pixels from right (ignored if left is present)
                        description: Overlay position
                      size:
                        type: object
                        properties:
                          width:
                            type: integer
                            minimum: 0
                            description: Width in pixels
                          height:
                            type: integer
                            minimum: 0
                            description: Height in pixels
                        description: Overlay size
                      opacity:
                        type: number
                        minimum: 0
                        maximum: 1
                        description: Overlay opacity (0=invisible, 1=fully visible)
                    required:
                    - url
                  description: Image overlay configuration
                outputs:
                  type: object
                  properties:
                    hesp:
                      type: boolean
                      default: true
                      description: Enable HESP output. Enabled by default.
                    hls:
                      type: boolean
                      default: true
                      description: Enable HLS output. Enabled by default.
                    hlsMpegTs:
                      type: boolean
                      default: false
                      description: Enable HLS MPEG-TS output. Only available when enabled on organization level.
                  description: Output format configuration
              required:
              - name
              - region
              - quality
              additionalProperties: false
      responses:
        '200':
          description: Engine created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineObjectResult'
  /channels/{id}/distributions:
    get:
      tags:
      - Channels
      operationId: get-channel-distributions
      summary: Get distributions of a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Pagination cursor
        required: false
        description: Pagination cursor
        name: cursor
        in: query
      - schema:
          type: number
          nullable: true
          maximum: 100
          description: Maximum number of items to return (max 100)
        required: false
        description: Maximum number of items to return (max 100)
        name: limit
        in: query
      responses:
        '200':
          description: List of distributions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDistributionResult'
    post:
      tags:
      - Channels
      operationId: create-channel-distribution
      summary: Create a distribution for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDistributionBody'
      responses:
        '200':
          description: Distribution created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionObjectResult'
  /channels/{id}/instream-metadata/{uuid}:
    post:
      tags:
      - Channels
      operationId: send-channel-instream-metadata
      summary: Send instream metadata for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Instream metadata UUID
        required: true
        description: Instream metadata UUID
        name: uuid
        in: path
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              $ref: '#/components/schemas/SendInstreamMetadataBody'
      responses:
        '200':
          description: Instream metadata accepted
  /channels/{id}/runs:
    get:
      tags:
      - Channels
      operationId: get-channel-runs
      summary: Get engine runs of a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Pagination cursor
        required: false
        description: Pagination cursor
        name: cursor
        in: query
      - schema:
          type: number
          nullable: true
          description: Maximum number of runs to return
        required: false
        description: Maximum number of runs to return
        name: limit
        in: query
      - schema:
          type: string
          description: Filter runs starting after this timestamp
        required: false
        description: Filter runs starting after this timestamp
        name: start
        in: query
      - schema:
          type: string
          description: Filter runs ending before this timestamp
        required: false
        description: Filter runs ending before this timestamp
        name: end
        in: query
      - schema:
          type: string
          description: Comma-separated list of engine IDs to filter by
        required: false
        description: Comma-separated list of engine IDs to filter by
        name: engineIds
        in: query
      responses:
        '200':
          description: List of engine runs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEngineRunResult'
  /channels/{id}/analytics/transcoding-minutes:
    get:
      tags:
      - Channels
      operationId: get-channel-transcoding-minutes
      summary: Get transcoding minutes analytics for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          enum:
          - engine
          - channel
          description: Group results by engine or channel
        required: false
        description: Group results by engine or channel
        name: groupBy
        in: query
      - schema:
          type: string
          enum:
          - 15min
          - hour
          - day
          - month
          description: Time resolution for the analytics data
        required: true
        description: Time resolution for the analytics data
        name: resolution
        in: query
      - schema:
          type: string
          description: Comma-separated list of engine IDs to filter by
        required: false
        description: Comma-separated list of engine IDs to filter by
        name: engineIds
        in: query
      - schema:
          type: string
          description: UTC offset in minutes
        required: false
        description: UTC offset in minutes
        name: utcOffset
        in: query
      responses:
        '200':
          description: Transcoding minutes analytics data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsListResult'
  /channels/{id}/analytics/viewing-minutes:
    get:
      tags:
      - Channels
      operationId: get-channel-viewing-minutes
      summary: Get viewing minutes analytics for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          enum:
          - channel
          - distribution
          - streaming-format
          description: Group results by channel, distribution, or streaming format
        required: false
        description: Group results by channel, distribution, or streaming format
        name: groupBy
        in: query
      - schema:
          type: string
          enum:
          - 15min
          - hour
          - day
          - month
          description: Time resolution for the analytics data
        required: true
        description: Time resolution for the analytics data
        name: resolution
        in: query
      - schema:
          type: string
          description: Comma-separated list of streaming formats to filter by
        required: false
        description: Comma-separated list of streaming formats to filter by
        name: streamingFormats
        in: query
      - schema:
          type: string
          description: Comma-separated list of distribution IDs to filter by
        required: false
        description: Comma-separated list of distribution IDs to filter by
        name: distributionIds
        in: query
      - schema:
          type: string
          description: UTC offset in minutes
        required: false
        description: UTC offset in minutes
        name: utcOffset
        in: query
      responses:
        '200':
          description: Viewing minutes analytics data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsListResult'
  /channels/{id}/analytics/bytes-transferred:
    get:
      tags:
      - Channels
      operationId: get-channel-bytes-transferred
      summary: Get bytes transferred analytics for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          enum:
          - channel
          - distribution
          - streaming-format
          description: Group results by channel, distribution, or streaming format
        required: false
        description: Group results by channel, distribution, or streaming format
        name: groupBy
        in: query
      - schema:
          type: string
          enum:
          - 15min
          - hour
          - day
          - month
          description: Time resolution for the analytics data
        required: true
        description: Time resolution for the analytics data
        name: resolution
        in: query
      - schema:
          type: string
          description: Comma-separated list of streaming formats to filter by
        required: false
        description: Comma-separated list of streaming formats to filter by
        name: streamingFormats
        in: query
      - schema:
          type: string
          description: UTC offset in minutes
        required: false
        description: UTC offset in minutes
        name: utcOffset
        in: query
      responses:
        '200':
          description: Bytes transferred analytics data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsListResult'
  /channels/{id}/analytics/viewing-minutes/browsers:
    get:
      tags:
      - Channels
      operationId: get-channel-viewing-minutes-browsers
      summary: Get viewing minutes grouped by browser for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          description: Comma-separated list of streaming formats to filter by
        required: false
        description: Comma-separated list of streaming formats to filter by
        name: streamingFormats
        in: query
      - schema:
          type: string
          description: Comma-separated list of distribution IDs to filter by
        required: false
        description: Comma-separated list of distribution IDs to filter by
        name: distributionIds
        in: query
      - schema:
          type: string
          description: UTC offset in minutes
        required: false
        description: UTC offset in minutes
        name: utcOffset
        in: query
      responses:
        '200':
          description: Viewing minutes by browser
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewingBrowserListResult'
  /channels/{id}/analytics/viewing-minutes/countries:
    get:
      tags:
      - Channels
      operationId: get-channel-viewing-minutes-countries
      summary: Get viewing minutes grouped by country for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          description: Comma-separated list of streaming formats to filter by
        required: false
        description: Comma-separated list of streaming formats to filter by
        name: streamingFormats
        in: query
      - schema:
          type: string
          description: Comma-separated list of distribution IDs to filter by
        required: false
        description: Comma-separated list of distribution IDs to filter by
        name: distributionIds
        in: query
      - schema:
          type: string
          description: UTC offset in minutes
        required: false
        description: UTC offset in minutes
        name: utcOffset
        in: query
      responses:
        '200':
          description: Viewing minutes by country
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewingCountryListResult'
  /channels/{id}/analytics/bytes-transferred/browsers:
    get:
      tags:
      - Channels
      operationId: get-channel-bytes-transferred-browsers
      summary: Get bytes transferred grouped by browser for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          description: Comma-separated list of streaming formats to filter by
        required: false
        description: Comma-separated list of streaming formats to filter by
        name: streamingFormats
        in: query
      - schema:
          type: string
          description: Comma-separated list of distribution IDs to filter by
        required: false
        description: Comma-separated list of distribution IDs to filter by
        name: distributionIds
        in: query
      - schema:
          type: string
          description: UTC offset in minutes
        required: false
        description: UTC offset in minutes
        name: utcOffset
        in: query
      responses:
        '200':
          description: Bytes transferred by browser
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewingBrowserListResult'
  /channels/{id}/analytics/bytes-transferred/countries:
    get:
      tags:
      - Channels
      operationId: get-channel-bytes-transferred-countries
      summary: Get bytes transferred grouped by country for a channel
      parameters:
      - schema:
          type: string
          description: Channel ID
        required: true
        description: Channel ID
        name: id
        in: path
      - schema:
          type: string
          description: Start date for the analytics period
        required: true
        description: Start date for the analytics period
        name: start
        in: query
      - schema:
          type: string
          description: End date for the analytics period
        required: true
        description: End date for the analytics period
        name: end
        in: query
      - schema:
          type: string
          description: Comma-separated list of streaming formats to filter by
        required: false
        description: Comma-separated list of streaming formats to filter by
        name: streamingFormats
        in: query
      - schema:
          type: string
          description: Co

# --- truncated at 32 KB (113 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dolby-io/refs/heads/main/openapi/dolby-io-channels-api-openapi.yml