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
|
envType |
String | Optional | Channel type
|
outputProtocol |
String | Optional | Output protocol settings
|
cdn |
Object | Required | Set up CDN. |
cdn.createCdn |
Boolean | Required | Whether to create a new CDN
|
cdn.cdnType |
String | Required | CDN type
|
cdn.cdnDomain |
String | Conditional | Global Edge domain
|
cdn.profileId |
Integer | Required | Global Edge profile ID
|
cdn.regionType |
String | Conditional | Global Edge Service Region
|
cdn.cdnInstanceNo |
Integer | Conditional | Global Edge instance ID
|
qualitySetId |
Integer | Required | Image quality setting ID
|
useDvr |
Boolean | Required | Time machine settings
|
immediateOnAir |
Boolean | Optional | Whether to set up auto-recording immediately upon streaming
|
timemachineMin |
Integer | Conditional | Time Machine allowance (minute)
|
record |
Object | Required | Recording storage information |
record.format |
String | Conditional | Autosave recording type
|
record.type |
String | Required | Recording storage settings
|
record.bucketName |
String | Conditional | Recording file storage bucket name
|
record.filePath |
String | Conditional | Detailed storage path
|
record.accessControl |
String | Conditional | Recording file storage bucket disclosure scope
|
isStreamFailOver |
Boolean | Optional | Whether to set streaming redundancy
|
drmEnabledYn |
Boolean | Required | Multi DRM usage
|
drm |
Object | Conditional | Multi DRM settings
|
drm.siteId |
String | Conditional | Site ID
|
drm.contentId |
String | Conditional | Content ID
|
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.
- 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
|
content.cdn.cdnType |
String | - | CDN type
|
content.cdn.cdnInstanceNo |
Integer | - | Global Edge instance ID |
content.cdn.profileId |
Integer | - | Global Edge profile ID |
content.cdn.regionType |
String | - | Global Edge Service Region
|
content.qualitySetId |
Integer | - | Image quality setting ID |
content.useDvr |
Boolean | - | Time machine settings
|
content.immediateOnAir |
Boolean | - | Whether to set up auto-recording immediately upon streaming
|
content.timemachineMin |
Integer | - | Time Machine allowance (minute) |
content.channelId |
String | - | Channel ID |
content.uploadPath |
String | - | Recording file upload path |
content.envType |
String | - | Channel type
|
content.record |
Object | - | Recording storage information |
content.record.type |
String | - | Recording storage settings
|
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
|
content.record.accessControl |
String | - | Recording file storage bucket disclosure scope
|
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
|
content.drmEnabledYn |
Boolean | - | Multi DRM usage
|
content.drm |
Object | - | Multi DRM settings
|
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
- Extensions excluded from authentication
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 |
|
AES-CBC | Mac/iOS Safari browser, iOS/iPadOS/tvOS app, HLS HTML5 |
DRM | DASH |
|
CENC (Common Encryption) | MS Edge, IE11, Chrome, Firefox, Opera DASH HTML5 |
- 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.