--- title: "Create channel" slug: "vodstation-channel-create" tags: ["VOD Station"] updated: 2026-09-17T10:12:36Z published: 2026-09-17T10:12:36Z canonical: "api.ncloud-docs.com/vodstation-channel-create" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Create channel 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](/docs/en/vodstation#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). ### 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-20 characters using a combination of English letters, numbers, and special characters "-". | | `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](/docs/en/vodstation-channel-create#encryptionList1) | | `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 - `true` \| `false` - `true`: Create new - `false`: No creation of new CDN - If `false`, see [Integrate VOD Station CDN manually](https://guide.ncloud-docs.com/docs/en/vod-station-cdn-custom-connection). | | `cdn` | Object | Conditional | CDN settings - Required if `createCdn` is `true`. - Use when integrating with Global Edge. | | `cdn.profileId` | Integer | Conditional | Profile ID - See [Get profile list](/docs/en/profile-listing). | | `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 - See [One Click Multi DRM](/docs/en/one-click-multi-drm-api-overview). | | `drm.siteId` | String | Conditional | Site ID - See [Get site list](/docs/en/site-list). - Required when setting multi DRM. | | `drm.contentId` | String | Conditional | Content ID - Enter 3-100 characters using a combination of English letters, numbers, and special characters "-" and "_". - Required when setting multi DRM. | | `notificationUrl` | String | Optional | Channel (callback) URL - See [Use channel callback](/docs/en/vodstation-channel-callback). | #### `encryptionList` The following describes `encryptionList`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `drmContentId` | String | Optional | DRM content ID - Enter 1-200 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-256 characters without spaces, 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](/docs/en/vodstation-channel-create#%EC%86%A1%EC%B6%9C%EC%98%81%EC%83%81%EB%B3%B4%EC%95%88%EC%84%A4%EC%A0%95). ### 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" }, "notificationUrl": "https://example.com/vodstation/callback" }' ``` ## 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` | | `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](/docs/en/vodstation-channel-create#encryptList2) | | `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 | | `content.notificationUrl` | String | - | Channel (callback) URL | #### `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](/docs/en/vodstation#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). ### 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": ***** }, "notificationUrl": "https://example.com/vodstation/callback" } } ``` ## 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](https://guide.ncloud-docs.com/docs/en/globaledge-signedurl) and [JSON Web Token](https://guide.ncloud-docs.com/docs/en/globaledge-jwt) 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](/docs/en/edge-edit). - 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](https://guide.ncloud-docs.com/docs/en/vodstation-vodstationchannel#%EC%BD%98%ED%85%90%EC%B8%A0%EB%B3%B4%ED%98%B8%EC%84%A4%EC%A0%95) and [DoveRunner (formerly PallyCon) guide](https://pallycon.com/drm-platform/). | 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 |