Create channel

Prev Next

Available in Classic and VPC

Create a channel for VOD streaming.

Request

This section describes the request format. The method and URI are as follows:

Method URI
POST /api/v2/channels

Request headers

For information about the headers common to all VOD Station APIs, see VOD Station request headers.

Request body

You can include the following data in the body of your request:

Field Type Required Description
name String Required Channel name
  • Enter 3 to 20 characters using a combination of English letters, numbers, and the special character "-".
storageBucketName String Required Streaming video storage bucket name
accessPrivateFiles Boolean Optional Whether to restrict access to private files in the bucket
  • true | false (default)
    • true: Allow
    • false: Restrict
  • Private files can also be streamed if allowed.
protocolList Array Required List of streaming protocols
  • HLS | DASH
  • Duplicate selection available
encryptionList Array Optional Content protection settings for the channel: encryptionList
segmentDuration Integer Required Playback time per segment (second)
  • 5-20
  • Longer segment playback times can result in larger file sizes and longer loading times.
  • Shorter segment playback times result in smaller file sizes, but may result in buffering.
segmentDurationOption String Optional Segmentation method settings
  • BASIC (default) | VARIABLE
    • BASIC: Create segments at regular intervals set by the segmentDuration setting.
    • VARIABLE: Create segments so that every segment starts with a keyframe.
  • If the VARIABLE option is selected, there is a possibility of a difference between the segmentDuration value and the actual generated segment playback time.
  • It is recommended to use the BASIC option for stable streaming service.
createCdn Boolean Required Whether to create a new CDN
cdn Object Conditional CDN settings
  • Required if createCdn is true
  • Use when integrating with Global Edge.
cdn.profileId Integer Conditional Profile ID
cdn.regionType String Conditional Global Edge Service Region
  • KOREA | JAPAN | GLOBAL
    • KOREA: Korea
    • JAPAN: Japan
    • GLOBAL: Global
cdn.type String Conditional CDN type
  • GLOBAL_EDGE (valid value)
drm Object Optional Multi DRM settings
drm.siteId String Conditional Site ID
drm.contentId String Conditional Content ID
  • Enter 3 to 100 characters using a combination of English letters, numbers, and the special characters "-" and "_".
  • Required when setting multi DRM.

encryptionList

The following describes encryptionList.

Field Type Required Description
drmContentId String Optional DRM content ID
  • Enter 3 to 100 characters using a combination of English letters and numbers.
  • The value is included for DRM key requests and needed for license issuing.
drmKeyUrl String Optional DRM key URL
  • The CPIX API URL of the DRM provider.
  • VOD Station officially supports the integration with Inka Pallyacon DRM's CPIX v1 API.
  • For DRM packaging, VOD Station includes the xml body at POST request.
  • Include http(s)://.
  • Not required when setting Media Encryption.
systemIdList Array Optional DRM system ID
  • DRM system's unique identifier.
  • Enter 1 to 256 characters, including English letters, numbers, and special character "-".
  • Not required when setting Media Encryption.
  • Must include 1 or 2 system IDs depending on DRM type.
drmTypeCode Integer Optional DRM type
  • 21 | 22
    • 21: FairPlay
    • 22: Widevine/PlayReady
  • Not required when setting Media Encryption
mediaEncryptTypeCode Integer Optional Media Encryption (HLS AES-128) code settings
  • 1 | 2 | 3
    • 1: AES-128
    • 2: Sample-AES
    • 3: CENC
  • Unable to set if drmTypeCode is 21.
  • Not required when setting DRM.
protocol String Required Protocol settings
  • HLS | DASH
    • HLS: FairPlay/Media Encryption
    • DASH: Widevine/PlayReady
Note

For fields related to streaming video security settings, see Set streaming video security.

Request example

The request example is as follows:

  • When applying media encryption (MediaEncryption; AES-128)
    curl --location --request POST 'https://vodstation.apigw.ntruss.com/api/v2/channels' \
    --header 'x-ncp-apigw-timestamp: {Timestamp}' \
    --header 'x-ncp-iam-access-key: {Access Key}' \
    --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
    --data '{
        "name": "ch-media-encrypt",
        "storageBucketName": "station-000",
        "accessPrivateFiles": true,
        "protocolList": ["HLS"],
        "encryptionList": [
            {
                "protocol": "HLS",
                "mediaEncryptTypeCode": 1
            }
        ],
        "segmentDuration": 10,
        "segmentDurationOption": "BASIC",
        "createCdn": true,
        "cdn": {
            "profileId": ****,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
        }
    }'
    

Response

This section describes the response format.

Response body

The response body includes the following data:

Field Type Required Description
content Object - Response result
content.disabled Boolean - Whether Sub Account is disabled
  • true | false
    • true: Disabled
    • false: Enabled
content.id String - Channel ID
content.name String - Channel name
content.channelStatus String - Channel status
  • CREATING | READY | STOPPING | STOPPED | TERMINATING | TERMINATED | FORCE_STOPPING | FORCE_STOPPED | FORCETERMINATING | FORCETERMINATED
    • CREATING: Creating
    • READY: Running
    • STOPPING: Stopping
    • STOPPED: Stopped
    • TERMINATING: Deleting
    • TERMINATED: Deleted
    • FORCE_STOPPING: Force stopping
    • FORCE_STOPPED: Force stopped
    • FORCETERMINATING: Force deleting
    • FORCETERMINATED: Force deleted
content.storageBucketName String - Name of the bucket where the video the channel will stream is stored
content.segmentDuration Integer - Playback time per segment (second)
content.protocolList Array - List of streaming protocols
  • HLS | DASH
content.createTime Integer - Channel creation start date and time (millisecond)
  • Unix timestamp format
content.cdnCreatedTime Integer - Date and time when the CDN was automatically created in integration with the channel
  • Unix timestamp format
content.playUrl String - Playback URL template via CDN
content.cdnStatus String - Status of the CDN integrated with the channel
  • If not auto-generated, displayed as NOT_FOUND
content.cdnDomain String - Auto-generated Global Edge's domain
content.cdnServiceName String - Auto-generated Global Edge's service name
content.storageBucketStatus String - Status of the Object Storage bucket integrated with the channel
content.originPath String - Source path of the created channel
  • Use when creating a separate CDN.
content.encryptList Array - Content protection settings information for the channel: encryptList
content.accessPrivateFiles Boolean - Whether to restrict access to private files in the bucket
  • true | false
    • true: Restrict
    • false: Allow
  • Private files can also be streamed if allowed.
content.encryptedBucketName String - Encrypted name of the bucket integrated with the channel
  • Use when creating the playback URL.
content.segmentDurationOption String - Segmentation method settings
  • BASIC | VARIABLE
    • BASIC: Create segments at regular intervals set by the segmentDuration setting.
    • VARIABLE: Create segments so that every segment starts with a keyframe.
  • If the VARIABLE option is selected, there is a possibility of a difference between the segmentDuration value and the actual generated segment playback time.
content.cdn Object - Auto-generated CDN (Global Edge) information
content.cdn.cdnType String - CDN type
  • GLOBAL_EDGE (valid value)
content.cdn.cdnDomain String - Auto-generated Global Edge's domain
content.cdn.cdnServiceName String - Auto-generated Global Edge's service name
content.cdn.profileId Integer - Auto-generated Global Edge's profile ID
content.cdn.regionType String - Auto-generated Global Edge Service Region
content.cdn.cdnInstanceNo Integer - Auto-generated Global Edge's instance ID

encryptList

The following describes encryptList.

Field Type Required Description
drmContentId String - DRM content ID
  • The value is included for DRM key requests and needed for license issuing.
drmKeyUrl String - DRM key URL
  • DRM provider's CPIX API URL
  • VOD Station officially supports the integration with Inka Pallyacon DRM's CPIX v1 API.
systemIdList Array - DRM system ID
  • DRM system's unique identifier
drmTypeCode Integer - DRM type
  • 21 | 22
    • 21: FairPlay
    • 22: Widevine/PlayReady
drmTypeName String - DRM type name
protocol String - Set protocol
  • HLS | DASH
    • HLS: FairPlay/Media Encryption
    • DASH: Widevine/PlayReady
mediaEncryptTypeCode Integer - Set Media Encryption (HLS AES-128) code settings
  • 1 | 2 | 3
    • 1: AES-128
    • 2: Sample-AES
    • 3: CENC
mediaEncryptionTypeName String - Set Media Encryption (HLS AES-128) type name
  • AES-128 | Sample-AES | CENC

Response status codes

For information about the HTTP status codes common to all VOD Station APIs, see VOD Station response status codes.

Response example

The response example is as follows:

{
    "content": {
        "disabled": false,
        "id": "vs-20250821095732-*******",
        "name": "ch-media-encrypt",
        "channelStatus": "CREATING",
        "storageBucketName": "station-000",
        "segmentDuration": 10,
        "protocolList": [
            "HLS"
        ],
        "createTime": 1755737852,
        "cdnCreatedTime": 1755737852,
        "playUrl": "https://cpzplvi******.edge.naverncp.com/[protocol]/[Object Storage Bucket(encryption name)]/[path]/[video filename]/[manifest]",
        "cdnStatus": "CREATING",
        "cdnDomain": "cpzplvi******.edge.naverncp.com",
        "cdnServiceName": "edge-vs-20250821095732-*******",
        "storageBucketStatus": "RUNNING",
        "originPath": "vs2-k1.video.media.ntruss.com/2706412/vs-20250821095732-*******",
        "encryptList": [
            {
                "protocol": "HLS",
                "mediaEncryptTypeCode": 1
            }
        ],
        "accessPrivateFiles": true,
        "encryptedBucketName": "*****VzPmKvIthkozoufHw__",
        "segmentDurationOption": "BASIC",
        "cdn": {
            "cdnType": "GLOBAL_EDGE",
            "cdnDomain": "cpzplvi******.edge.naverncp.com",
            "cdnServiceName": "edge-vs-20250821095732-*******",
            "profileId": ****,
            "regionType": "KOREA",
            "cdnInstanceNo": *****
        }
    }
}

Set streaming video security

Various settings are available to secure video content for streaming on the channel you create.

Content access control

By integrating with the Global Edge service, you can restrict access to streaming video content through Global Edge's content authentication control. Content authentication control methods include Signed URL and JSON Web Token. See Signed URL and JSON Web Token in the Global Edge user guide for how to use each method.

  • When issuing an authentication token, you must enter the wildcard path under ACL for Signed URL and path for JSON Web Token respectively.
    • Single bitrate playback: /[protocol]/[encryptedBucketName]/[path]/[video filename]/*
      • Example:
        • HLS: https://example.edge.navercorp.com/hls/guide/vod-5100k.mp4/index.m3u8
          • wildcard path : /hls/guide/vod-5100k.mp4/*
        • DASH: https://example.edge.navercorp.com/dash/guide/vod-5100k.mp4/index.m3u8
          • wildcard path: /dash/guide/vod-5100k.mp4/*
    • Adaptive bitrate playback: /[protocol]/[encryptedBucketName]/[path]/[prefix],[video filenames],[suffix].smil/*
      • Example:
        • HLS playback address: https://example.edge.navercorp.com/hls/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/master.m3u8
          • wildcard path: /hls/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/*
        • DASH playback address: https://example.edge.navercorp.com/dash/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/manifest.mpd
          • wildcard path: /dash/guide/abr/vod-,5400,2400,1200,0900,0600,0300,k.mp4.smil/*
  • You must set Edge Auth to the output protocol of the channel that created Edge Auth in the cache settings of Global Edge. For more information, see the Global Edge API guide.
    • Extensions excluded from authentication
      • .ts, .mp4, .m4s, .vtt, .key
    • Extension that forwards the authentication token to the source
      • .m3u8, .mpd

Content protection

By integrating with the One Click Multi DRM service, you can encrypt and stream video content through multi DRM to prevent piracy and distribution. You can easily set DRM features through the drm object when creating a channel, and multi DRM is applied according to the selected output protocol. For more information on encryption methods by DRM technology, supported devices, platforms, and versions, etc., see the VOD Station user guide and DoveRunner (formerly PallyCon) guide.

Encryption method Protocol DRM type Encryption algorithm Supported devices
HLS AES-128 HLS - AES-128 MS Edge, IE11, Chrome, Firefox, Opera HLS HTML5
DRM HLS
  • FairPlay: DRM technology specification provided by Apple that encrypts each HLS segment with AES-CBC
SAMPLE-AES Mac/iOS Safari browser, iOS/iPadOS/tvOS app, HLS HTML5
DRM DASH
  • PlayReady: DRM technology provided by Microsoft, encrypted with AES-128 in accordance with the Common Encryption specification
  • Widevine: DRM technology provided by Google, encrypted with AES-128 in accordance with the Common Encryption specification
CENC (Common Encryption) MS Edge, IE11, Chrome, Firefox, Opera DASH HTML5