Dolby.io Distributions API

The Distributions API from Dolby.io — 13 operation(s) for distributions.

OpenAPI Specification

dolby-io-distributions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Dolby OptiView Real-time Streaming ABR Ladders Distributions 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: Distributions
paths:
  /channels/{id}/distributions:
    get:
      tags:
      - Distributions
      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:
      - Distributions
      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'
  /distributions/{id}:
    get:
      tags:
      - Distributions
      operationId: get-distribution
      summary: Get a distribution by ID
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      responses:
        '200':
          description: The requested distribution
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionObjectResult'
    patch:
      tags:
      - Distributions
      operationId: update-distribution
      summary: Update a distribution by ID
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDistributionBody'
      responses:
        '200':
          description: Updated distribution
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionObjectResult'
    delete:
      tags:
      - Distributions
      operationId: delete-distribution
      summary: Delete a distribution by ID
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      responses:
        '204':
          description: Empty response
  /distributions/{id}/security/keys:
    get:
      tags:
      - Distributions
      operationId: get-distribution-security-keys
      summary: Get security keys of a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      responses:
        '200':
          description: List of security keys
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionSecurityKeyListResult'
    post:
      tags:
      - Distributions
      operationId: create-distribution-security-key
      summary: Add a security key to a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDistributionSecurityKeyBody'
      responses:
        '200':
          description: Security key created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionSecurityKeyObjectResult'
    delete:
      tags:
      - Distributions
      operationId: delete-all-distribution-security-keys
      summary: Delete all security keys of a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      responses:
        '204':
          description: Empty response
  /distributions/{id}/security/keys/{keyId}:
    get:
      tags:
      - Distributions
      operationId: get-distribution-security-key
      summary: Get a specific security key
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      - schema:
          type: string
          description: Security key ID
        required: true
        description: Security key ID
        name: keyId
        in: path
      responses:
        '200':
          description: The requested security key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributionSecurityKeyObjectResult'
    delete:
      tags:
      - Distributions
      operationId: delete-distribution-security-key
      summary: Delete a specific security key
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      - schema:
          type: string
          description: Security key ID
        required: true
        description: Security key ID
        name: keyId
        in: path
      responses:
        '204':
          description: Empty response
  /distributions/{id}/analytics/viewing-minutes:
    get:
      tags:
      - Distributions
      operationId: get-distribution-viewing-minutes
      summary: Get viewing minutes analytics for a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution 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'
  /distributions/{id}/analytics/bytes-transferred:
    get:
      tags:
      - Distributions
      operationId: get-distribution-bytes-transferred
      summary: Get bytes transferred analytics for a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution 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'
  /distributions/{id}/analytics/viewing-minutes/browsers:
    get:
      tags:
      - Distributions
      operationId: get-distribution-viewing-minutes-browsers
      summary: Get viewing minutes grouped by browser for a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution 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'
  /distributions/{id}/analytics/viewing-minutes/countries:
    get:
      tags:
      - Distributions
      operationId: get-distribution-viewing-minutes-countries
      summary: Get viewing minutes grouped by country for a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution 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'
  /distributions/{id}/analytics/bytes-transferred/browsers:
    get:
      tags:
      - Distributions
      operationId: get-distribution-bytes-transferred-browsers
      summary: Get bytes transferred grouped by browser for a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution 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'
  /distributions/{id}/analytics/bytes-transferred/countries:
    get:
      tags:
      - Distributions
      operationId: get-distribution-bytes-transferred-countries
      summary: Get bytes transferred grouped by country for a distribution
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution 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 country
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewingCountryListResult'
  /distributions/{id}/analytics/insights/countries:
    get:
      tags:
      - Distributions
      operationId: get-distribution-insights-countries
      summary: Get country insights for a distribution
      description: Data is only available for the last 30 days.
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      - schema:
          type: string
          enum:
          - hour
          - day
          - week
          - month
          description: Time period for the insights
        required: true
        description: Time period for the insights
        name: period
        in: query
      - schema:
          type: string
          description: Comma-separated list of channel IDs to filter by
        required: false
        description: Comma-separated list of channel IDs to filter by
        name: channelIds
        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: 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
      responses:
        '200':
          description: Country insights data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountryInsightsListResult'
  /distributions/{id}/analytics/insights/browsers-os:
    get:
      tags:
      - Distributions
      operationId: get-distribution-insights-browsers-os
      summary: Get browser and OS insights for a distribution
      description: Data is only available for the last 30 days.
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      - schema:
          type: string
          enum:
          - hour
          - day
          - week
          - month
          description: Time period for the insights
        required: true
        description: Time period for the insights
        name: period
        in: query
      - schema:
          type: string
          description: Comma-separated list of channel IDs to filter by
        required: false
        description: Comma-separated list of channel IDs to filter by
        name: channelIds
        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: 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
      responses:
        '200':
          description: Browser/OS insights data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrowserOsInsightsListResult'
  /distributions/{id}/analytics/insights/viewers:
    get:
      tags:
      - Distributions
      operationId: get-distribution-insights-viewers
      summary: Get viewer count insights for a distribution
      description: Data is only available for the last 30 days.
      parameters:
      - schema:
          type: string
          description: Distribution ID
        required: true
        description: Distribution ID
        name: id
        in: path
      - schema:
          type: string
          enum:
          - hour
          - day
          - week
          - month
          description: Time period for the insights
        required: true
        description: Time period for the insights
        name: period
        in: query
      - schema:
          type: string
          description: Comma-separated list of channel IDs to filter by
        required: false
        description: Comma-separated list of channel IDs to filter by
        name: channelIds
        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: 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
      responses:
        '200':
          description: Viewer count insights data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewersInsightsListResult'
components:
  schemas:
    UpdateDistributionBody:
      type: object
      properties:
        name:
          type: string
          description: Name of the distribution
        externalId:
          type: string
          nullable: true
          description: External identifier for the distribution. Set to null to clear.
        enabled:
          type: boolean
          description: Whether the distribution is enabled
        targetLatency:
          type: number
          description: Target latency in seconds
        security:
          type: object
          properties:
            geoBlocking:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: Whether geo-blocking is enabled
                mode:
                  type: string
                  enum:
                  - allow
                  - deny
                  description: Geo-blocking mode
                countries:
                  type: array
                  items:
                    type: string
                  description: List of country codes
              description: Geo-blocking configuration
            ipBlocking:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: Whether IP blocking is enabled
                mode:
                  type: string
                  enum:
                  - allow
                  - deny
                  description: IP blocking mode
                cidrs:
                  type: array
                  items:
                    type: string
                  description: List of CIDR ranges
              description: IP blocking configuration
            refererBlocking:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: Whether referer blocking is enabled
                allowedDomains:
                  type: array
                  items:
                    type: string
                  description: List of allowed domains
                allowNativeApps:
                  type: boolean
                  description: Whether native apps are allowed
              description: Referer blocking configuration
            keys:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Name of the security key
                  key:
                    type: string
                    description: Security key value
                required:
                - key
              maxItems: 2
              description: Security keys (max 2, create only)
          description: Security configuration
        endpoints:
          type: object
          properties:
            engineIds:
              type: array
              items:
                type: string
              description: Engine IDs to connect
          description: Endpoint configuration
        webRtc:
          type: object
          nullable: true
          properties:
            priority:
              type: number
              description: WebRTC priority
            src:
              type: object
              properties:
                name:
                  type: string
                  description: WebRTC source name
                accountId:
                  type: string
                  description: WebRTC account ID
                apiUrl:
                  type: string
                  description: WebRTC API URL
              required:
              - name
              - accountId
              - apiUrl
              description: WebRTC source configuration
          required:
          - priority
          - src
          description: WebRTC 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. Disabled by default.
          description: Output format configuration
        maxBitrate:
          type: number
          nullable: true
          description: Maximum bitrate limit in bps
        dvr:
          type: object
          properties:
            enabled:
              type: boolean
              description: Whether DVR is enabled on the distribution
          description: DVR configuration
        overrides:
          type: array
          nullable: true
          items:
            type: object
            properties:
              deviceType:
                type: string
                nullable: true
                enum:
                - tv
                - mobile
                - desktop
                - other
                - null
                description: Target device type
              sdkType:
                type: string
                nullable: true
                enum:
                - native
                - web
                - null
                description: Target SDK type
              osName:
                type: string
                nullable: true
                enum:
                - apple
                - android
                - windows
                - roku
                - other
                - null
                description: Target OS name
              profileId:
                type: string
                nullable: true
                description: Target profile ID
              targets:
                type: array
                items:
                  type: object
                  properties:
                    distributionId:
                      type: string
                      description: Target distribution ID
                    weight:
                      type: number
                      minimum: 0
                      maximum: 100
                      description: Weight (0-100)
                  required:
                  - distributionId
                  - weight
                description: Override target distributions with weights
            required:
            - targets
          description: Distribution overrides for device targeting
        customEndpoints:
          type: array
          nullable: true
          items:
            type: object
            properties:
              customEndpointId:
                type: string
                description: ID of the custom endpoint to connect
              weight:
                type: integer
                minimum: 0
                maximum: 100
                default: 100
                description: Weight (0-100, default 100)
            required:
            - customEndpointId
          description: Custom endpoints to connect to this distribution. Replaces all existing connections.
      additionalProperties: false
    DistributionObjectResult:
      type: object
      properties:
        data:
          allOf:
          - $ref: '#/components/schemas/Distribution'
          - description: Distribution object
      required:
      - data
    ViewersInsightsListResult:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              timestamp:
                type: string
                description: Timestamp of the data point
              amount:
                type: number
                description: Number of unique viewers
            required:
            - timestamp
            - amount
          description: List of viewer count data points
      required:
      - data
    CountryInsightsListResult:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              city:
                type: string
                description: City name
              countryCode:
                type: string
                description: ISO country code
              geoLocation:
                type: string
                d

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