Create channel

Prev Next

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 headers common to all Live Station APIs, see Live Station request headers.

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 to 20 characters using a combination of Korean letters, English letters, numbers, and the 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
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
cdn.profileId Integer Required Global Edge profile ID
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
qualitySetId Integer Required Image quality setting ID
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.
  • 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: Enable
    • false: Disable
  • When using, always broadcast main stream first.
drmEnabledYn Boolean Required Multi DRM usage
  • true | false
    • true: Enable
    • false: Disable
drm Object Conditional Multi DRM settings
  • Required if drmEnabledYn is true
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 "_".
Note

When entering a request body, see the following:

  • When setting cdn, you can enter the CDN+ you were using by switching to Global Edge. For more information on how to switch, see Change CDN.
  • We recommend setting the key frame to 1 second for seamless LL-HLS channel usage. For more information, see Recommended streaming options.
  • For fields related to streaming video security settings, see Set streaming video security.
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.
  • If you integrate a CDN that does not meet the conditions, you can't play live broadcasts stably. The CDNs that can be integrated with the Live Station service are as follows:
    * CDNs created during the creation of other live channels
    * CDNs that have the required settings to integrate with Live Station service
    * CDNs created in NAVER Cloud Platform
    * 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: Enable
    • false: Disable
content.drmEnabledYn Boolean - Multi DRM usage
  • true | false
    • true: Enable
    • false: Disable
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 HTTP status codes common to all Live Station APIs, see Live Station response status codes.

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 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.
    • 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.
    • 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.

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.