---
title: "Create a distribution for a channel"
method: POST
path: "/channels/{id}/distributions"
tags: ["Channels", "Distributions"]
---

# Create a distribution for a channel

`POST /channels/{id}/distributions`

## Path parameters

- `id` string, required — Channel ID

## Request body

- CreateDistributionBody
  - `name` string, required — Name of the distribution
  - `externalId` string — External identifier for the distribution
  - `enabled` boolean — Whether the distribution is enabled
  - `targetLatency` number — Deprecated: use latencies.hesp instead. If set, will be applied as latencies.hesp.
  - `latencies` object — Latency configuration per output protocol
    - `hesp` number, nullable — HESP latency in seconds (1-30, default: 2)
    - `hls` number, nullable — HLS latency in seconds (8-30, default: 10)
  - `security` object — Security configuration
    - `geoBlocking` object — Geo-blocking configuration
      - `enabled` boolean — Whether geo-blocking is enabled
      - `mode` 'allow' | 'deny' — Geo-blocking mode
      - `countries` string[] — List of country codes
    - `ipBlocking` object — IP blocking configuration
      - `enabled` boolean — Whether IP blocking is enabled
      - `mode` 'allow' | 'deny' — IP blocking mode
      - `cidrs` string[] — List of CIDR ranges
    - `refererBlocking` object — Referer blocking configuration
      - `enabled` boolean — Whether referer blocking is enabled
      - `allowedDomains` string[] — List of allowed domains
      - `allowNativeApps` boolean — Whether native apps are allowed
    - `rewriteSegmentUrls` boolean — When enabled, a short-lived token is added to the segment URLs, derived from the token that was passed. This only works when JWT security is enabled on the same distribution.
    - `keys` object[] — Security keys (max 2, create only)
      - `name` string — Name of the security key
      - `key` string, required — Security key value
  - `endpoints` object — Endpoint configuration
    - `engineIds` string[] — Engine IDs to connect
  - `webRtc` object, nullable — WebRTC configuration
    - `priority` number, required — WebRTC priority
    - `src` object, required — WebRTC source configuration
      - `name` string, required — WebRTC source name
      - `accountId` string, required — WebRTC account ID
      - `apiUrl` string, required — WebRTC API URL
  - `outputs` object — Output format configuration
    - `hesp` boolean — Enable HESP output. Enabled by default.
    - `hls` boolean — Enable HLS output. Enabled by default.
    - `hlsMpegTs` boolean — Enable HLS MPEG-TS output. Disabled by default.
  - `maxBitrate` number, nullable — Maximum bitrate limit in bps
  - `dvr` object — DVR configuration
    - `enabled` boolean — Whether DVR is enabled on the distribution
  - `overrides` object[] — Distribution overrides for device targeting
    - `deviceType` 'tv' | 'mobile' | 'desktop' | 'other' | 'null', nullable — Target device type
    - `sdkType` 'native' | 'web' | 'null', nullable — Target SDK type
    - `osName` 'apple' | 'android' | 'windows' | 'roku' | 'other' | 'null', nullable — Target OS name
    - `profileId` string, nullable — Target profile ID
    - `targets` object[], required — Override target distributions with weights
      - `distributionId` string, required — Target distribution ID
      - `weight` number, required — Weight (0-100)
  - `customEndpoints` object[] — Custom endpoints to connect to this distribution
    - `customEndpointId` string, required — ID of the custom endpoint to connect
    - `weight` integer — Weight (0-100, default 100)
  - `ads` object, nullable — Ads configuration for the distribution
    - `dai` object — DAI endpoint settings
      - `weight` integer, required — Weight for DAI endpoints (0-100)
      - `priority` integer, required — Priority for DAI endpoints (any integer, lower = higher priority)

## Response `200`

Distribution created

- DistributionObjectResult
  - `data` object, required — Distribution object
    - `id` string, required — Unique identifier of the distribution
    - `createdAt` string, required — Creation timestamp
    - `name` string, required — Name of the distribution
    - `externalId` string — External identifier for the distribution
    - `enabled` boolean, required — Whether the distribution is enabled
    - `targetLatency` number — Deprecated: use latencies instead.
    - `latencies` object, required — Latency configuration per output protocol
      - `hesp` number, nullable — HESP latency in seconds (1-30, default: 2)
      - `hls` number, nullable — HLS latency in seconds (8-30, default: 10)
    - `security` object, required — Security configuration
      - `geoBlocking` object, required — Geo-blocking configuration
        - `enabled` boolean, required — Whether geo-blocking is enabled
        - `mode` 'allow' | 'deny', required — Geo-blocking mode
        - `countries` string[], required — List of country codes
      - `ipBlocking` object, required — IP blocking configuration
        - `enabled` boolean, required — Whether IP blocking is enabled
        - `mode` 'allow' | 'deny', required — IP blocking mode
        - `cidrs` string[], required — List of CIDR ranges
      - `refererBlocking` object — Referer blocking configuration
        - `enabled` boolean, required — Whether referer blocking is enabled
        - `allowedDomains` string[], required — List of allowed domains
        - `allowNativeApps` boolean, required — Whether native apps are allowed
      - `rewriteSegmentUrls` boolean — When enabled, a short-lived token is added to the segment URLs, derived from the token that was passed. This only works when JWT security is enabled on the same distribution.
      - `keys` object[], required — Security keys
        - `id` string, required — Security key ID
        - `name` string — Security key name
    - `endpoints` object, required — Endpoint configuration
      - `engineIds` string[], required — Connected engine IDs
    - `webRtc` object — WebRTC configuration
      - `priority` number, required — WebRTC priority
      - `src` object, required — WebRTC source configuration
        - `name` string, required — WebRTC source name
        - `accountId` string, required — WebRTC account ID
        - `apiUrl` string, required — WebRTC API URL
    - `maxBitrate` number — Maximum bitrate limit in bps
    - `outputs` object — Output format configuration
      - `hesp` boolean — Enable HESP output. Enabled by default.
      - `hls` boolean — Enable HLS output. Enabled by default.
      - `hlsMpegTs` boolean — Enable HLS MPEG-TS output. Disabled by default.
    - `dvr` object, required — DVR configuration
      - `enabled` boolean — Whether DVR is enabled on the distribution
    - `overrides` object[] — Distribution overrides
      - `deviceType` 'tv' | 'mobile' | 'desktop' | 'other' | 'null', nullable — Target device type
      - `sdkType` 'native' | 'web' | 'null', nullable — Target SDK type
      - `osName` 'apple' | 'android' | 'windows' | 'roku' | 'other' | 'null', nullable — Target OS name
      - `profileId` string, nullable — Target profile ID
      - `targets` object[], required — Override target distributions with weights
        - `distributionId` string, required — Target distribution ID
        - `weight` number, required — Weight (0-100)
    - `customEndpoints` object[] — Connected custom endpoints with weights
      - `customEndpointId` string, required — ID of the connected custom endpoint
      - `weight` number, required — Weight (0-100)
    - `ads` object — Ads configuration for the distribution
      - `dai` object — DAI endpoint settings
        - `weight` integer, required — Weight for DAI endpoints (0-100)
        - `priority` integer, required — Priority for DAI endpoints (any integer, lower = higher priority)

---

[API](https://skmtc.net/dolby/apis/theolive-api.md) · [All operations](https://skmtc.net/dolby/apis/theolive-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dolby/theolive-api/versions/b57006d43141/schema)
