--- title: "Create channel" slug: "media-livestation-channel-channelcreate" tags: ["Live Station"] updated: 2026-10-08T04:11:56Z published: 2026-10-08T04:11:56Z canonical: "api.ncloud-docs.com/media-livestation-channel-channelcreate" --- > ## 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 live channel for 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 request headers common to all Live Station APIs, see [Live Station request headers](/docs/en/media-livestation#%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 | | --- | --- | --- | --- | | `channelName` | String | Required | Channel name - Enter 3-20 characters using a combination of Korean letters, English letters, numbers, and special character "_". | | `envType` | String | Optional | Channel type - `REAL` (default) \| `DEV` \| `STAGE` - Separator based on the service environment to apply | | `outputProtocol` | String | Optional | Output protocol settings - `HLS` (default) \| `LL_HLS` \| `HLS,DASH` - `HLS`: Option for reliable and compatible HLS streaming. - `LL_HLS`: Option for low-latency HLS streaming with CMAF. - LL-HLS official version is only supported in Global Edge integrated environments. - Available if Global Edge CDN Service Region is Korea. - `HLS,DASH`: Option to stream both regular HLS and Dash. | | `ingestProtocol` | String | Optional | Ingest protocol: `RTMP` (default) \| `SRT`. Can only be set when creating the channel; can't be changed after creation. | | `cdn` | Object | Required | Set up CDN. | | `cdn.createCdn` | Boolean | Required | Whether to create a new CDN - `true` \| `false` - `true`: Create new - `false`: Use existing CDN | | `cdn.cdnType` | String | Required | CDN type - `GLOBAL_EDGE` (valid value) | | `cdn.cdnDomain` | String | Conditional | Global Edge domain - See [Get edge list](/docs/en/edge-listing). - Required if `cdn.createCdn` is `false`. | | `cdn.profileId` | Integer | Required | Global Edge 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 - Required if `cdn.createCdn` is `true` | | `cdn.cdnInstanceNo` | Integer | Conditional | Global Edge instance ID - See [Get edge list](/docs/en/edge-listing). - Required if `cdn.createCdn` is `false`. | | `qualitySetId` | Integer | Required | Image quality setting ID - See [Get image quality settings list](/docs/en/media-livestation-qualitysetting-qualitysettinglist). - If `outputProtocol` is `LL_HLS`, only the quality setting for ultra low latency is selectable. | | `useDvr` | Boolean | Required | Time machine settings - `true` \| `false` - `true`: Enable. - `false`: Disable. - You can rewind your streaming live broadcast when setting up. | | `immediateOnAir` | Boolean | Optional | Whether to set up auto-recording immediately upon streaming - `true` \| `false` - `true`: Automatic - `false`: Manual | | `timemachineMin` | Integer | Conditional | Time Machine allowance (minute) - `360` (valid value) - Required if `useDvr` is `true` | | `record` | Object | Required | Recording storage information | | `record.format` | String | Conditional | Autosave recording type - `MP4` \| `HLS` \| `ALL` - Specify the recording file format. - Required if `record.type` is `AUTO_UPLOAD`. | | `record.type` | String | Required | Recording storage settings - `NO_RECORD` \| `AUTO_UPLOAD` \| `MANUAL_UPLOAD` - `NO_RECORD`: No recording - `AUTO_UPLOAD`: Save automatically - `MANUAL_UPLOAD`: Save temporarily | | `record.bucketName` | String | Conditional | Recording file storage bucket name - See [ListBuckets](/docs/en/storage-objectstorage-listbuckets). - Required if `record.type` is `AUTO_UPLOAD`. | | `record.filePath` | String | Conditional | Detailed storage path - Start with `/`. - Required if `record.type` is `AUTO_UPLOAD`. | | `record.accessControl` | String | Conditional | Recording file storage bucket disclosure scope - `PRIVATE` (default) \| `PUBLIC_READ` - `PRIVATE`: Private - `PUBLIC_READ`: Public - Required if `record.type` is `AUTO_UPLOAD` | | `isStreamFailOver` | Boolean | Optional | Whether to set streaming redundancy - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - When using, always broadcast main stream first. | | `drmEnabledYn` | Boolean | Required | Multi DRM usage - `true` \| `false` - `true`: Enabled - `false`: Disabled | | `drm` | Object | Conditional | Multi DRM settings - Required if `drmEnabledYn` is `true` | | `drm.siteId` | String | Conditional | Site ID - See [Get site list](/docs/en/site-list). | | `drm.contentId` | String | Conditional | Content ID - Enter 3-100 characters using a combination of English letters, numbers, and special characters "-" and "_". | Note When entering a request body, see the following: - We recommend setting the key frame to 1 second for seamless LL-HLS channel usage. For more information, see [Recommended streaming options](https://guide.ncloud-docs.com/docs/en/livestation-stream#%EA%B6%8C%EC%9E%A5-%EC%86%A1%EC%B6%9C-%EC%98%B5%EC%85%98). - For fields related to streaming video security settings, see [Set streaming video security](/docs/en/media-livestation-channel-channelcreate#%EC%86%A1%EC%B6%9C%EC%98%81%EC%83%81%EB%B3%B4%EC%95%88%EC%84%A4%EC%A0%95). Caution - Videos converted through the Live Station service are transmitted to viewers through the Global Edge service of NAVER Cloud Platform. Therefore, Global Edge usage fees will be charged separately when streaming broadcasts through the Live Station service. - Only CDNs created during the live channel creation process can be integrated. If you integrate a CDN that does not meet the conditions, you can't play live broadcasts stably. * CDNs created during the creation of live channels * CDNs that have the required settings to integrate with Live Station service * CDNs with the source domain and dedicated path assigned to the channel you want to integrate with * CDNs with the following settings * Protocol for source communication: HTTPS (port 443) * Forward Host Header: Origin Hostname * Cache Key Hostname: Incoming Host Header * Caching Option: Prioritize origin cache-control header. * Force Revalidation of Stale Object: Serve only valid content. ### Request example The request example is as follows: ``` curl --location --request POST 'https://livestation.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}' \ --header 'x-ncp-region_code: KR' \ --header 'Content-Type: application/json' \ --data '{ "channelName": "testchannel", "envType": "DEV", "outputProtocol": "LL_HLS", "cdn": { "createCdn": true, "cdnType": "GLOBAL_EDGE", "profileId": 4207, "regionType": "KOREA" }, "qualitySetId": 2585, "useDvr": true, "immediateOnAir": true, "timemachineMin": 360, "record": { "format": "MP4", "type": "AUTO_UPLOAD", "bucketName": "mybucket", "filePath": "/livestation", "accessControl": "PRIVATE" }, "isStreamFailOver": true, "drmEnabledYn": false }' ``` ## 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.channelName` | String | - | Channel name | | `content.cdn` | Object | - | Set up CDN. | | `content.cdn.createCdn` | Boolean | - | Whether to create a new CDN - `true` \| `false` - `true`: Create new - `false`: Use existing CDN | | `content.cdn.cdnType` | String | - | CDN type - `GLOBAL_EDGE` (valid value) | | `content.cdn.cdnInstanceNo` | Integer | - | Global Edge instance ID | | `content.cdn.profileId` | Integer | - | Global Edge profile ID | | `content.cdn.regionType` | String | - | Global Edge Service Region - `KOREA` \| `JAPAN` \| `GLOBAL` - `KOREA`: Korea - `JAPAN`: Japan - `GLOBAL`: Global | | `content.qualitySetId` | Integer | - | Image quality setting ID | | `content.useDvr` | Boolean | - | Time machine settings - `true` \| `false` - `true`: Enable - `false`: Disable | | `content.immediateOnAir` | Boolean | - | Whether to set up auto-recording immediately upon streaming - `true` \| `false` - `true`: Automatic - `false`: Manual | | `content.timemachineMin` | Integer | - | Time Machine allowance (minute) | | `content.channelId` | String | - | Channel ID | | `content.uploadPath` | String | - | Recording file upload path | | `content.envType` | String | - | Channel type - `DEV` \| `STAGE` \| `REAL` | | `content.record` | Object | - | Recording storage information | | `content.record.type` | String | - | Recording storage settings - `NO_RECORD` \| `AUTO_UPLOAD` \| `MANUAL_UPLOAD` - `NO_RECORD`: No recording - `AUTO_UPLOAD`: Save automatically - `MANUAL_UPLOAD`: Save temporarily | | `content.record.bucketName` | String | - | Recording video file storage bucket name | | `content.record.filePath` | String | - | Detailed storage path | | `content.record.format` | String | - | Automatic save recording type - `MP4` \| `HLS` \| `ALL` | | `content.record.accessControl` | String | - | Recording file storage bucket disclosure scope - `PRIVATE` \| `PUBLIC_READ` - `PRIVATE`: Private - `PUBLIC_READ`: Public | | `content.outputProtocol` | String | - | Output Protocol | | `content.origin` | Object | - | Source information | | `content.origin.originDomain` | String | - | Origin domain | | `content.origin.originPath` | String | - | Origin path | | `content.isStreamFailOver` | Boolean | - | Streaming redundancy settings - `true` \| `false` - `true`: Enabled - `false`: Disabled | | `content.drmEnabledYn` | Boolean | - | Multi DRM usage - `true` \| `false` - `true`: Enabled - `false`: Disabled | | `content.drm` | Object | - | Multi DRM settings - If `content.drmEnabledYn` is `true`, display sub-information. | | `content.drm.siteId` | String | - | Site ID | | `content.drm.contentId` | String | - | Content ID | ### Response status codes For information about the response status codes common to all Live Station APIs, see [Live Station response status codes](/docs/en/media-livestation#%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": { "channelName": "testchannel", "cdn": { "createCdn": true, "cdnType": "GLOBAL_EDGE", "cdnInstanceNo": 1***2, "profileId": 4207, "regionType": "KOREA" }, "qualitySetId": 2585, "useDvr": true, "immediateOnAir": true, "timemachineMin": 360, "channelId": "ls-20250818******-UbUBe", "uploadPath": "/mybucket/livestation", "envType": "DEV", "record": { "type": "AUTO_UPLOAD", "bucketName": "mybucket", "filePath": "/livestation", "format": "MP4", "accessControl": "PRIVATE" }, "outputProtocol": "LL_HLS", "origin": { "originDomain": "*****.video.media.ntruss.com", "originPath": "27***85" }, "isStreamFailOver": true, "drmEnabledYn": false } } ``` ## 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. - Wildcard path: /live/video/{channelId}/* - 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 - HLS: .ts, .jpg - HLS/DASH: .ts, .jpg, .m4s, .m4v, .m4a - LL_HLS: .jpg, .m4s, .m4v, .m4a - Extension that forwards the authentication token to the source - HLS: .m3u8 - HLS/DASH: .m3u8, .mpd - LL_HLS: playlist.m3u8 ### 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 [DoveRunner (formerly PallyCon) guide](https://pallycon.com/drm-platform/). | Encryption method | Protocol | DRM type | Encryption algorithm | Supported devices | | --- | --- | --- | --- | --- | | DRM | HLS | - FairPlay: DRM technology specification provided by Apple that encrypts each HLS segment with AES-CBC | AES-CBC | 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 | Note - Only single-key packaging is supported when integrating One Click Multi DRM service. - Channels using quality settings that include passthrough quality do not support the DRM service.