Change channel CDN

Prev Next

Available in Classic and VPC

Change the CDN server integrated with a VOD Station channel. This is used when integrating a channel integrated with the CDN+ service with the Global Edge service, and can only be changed when the channel is in the STOPPED status.

Caution

Note that changing CDN will change the playback path URL.

Request

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

Method URI
POST /api/v2/channels/{channelId}/cdn-to-edge

Request headers

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

Request path parameters

You can use the following path parameters with your request:

Field Type Required Description
channelId String Required Channel ID

Request body

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

Field Type Required Description
cdn Object Required Set up CDN.
cdn.profileId Integer Required Global Edge profile ID
cdn.regionType String Required Global Edge Service Region
  • KOREA | JAPAN | GLOBAL
    • KOREA: Korea
    • JAPAN: Japan
    • GLOBAL: Global

Request example

The request example is as follows:

curl --location --request POST 'https://vodstation.apigw.ntruss.com/api/v2/channels/vs-20250821095732-*******/cdn-to-edge' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--data '{
    "cdn": {
        "profileId": ****,
        "regionType": "KOREA"
    }
}'

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 channel 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.readyTime Integer - Channel creation completion 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.stopTime Integer - Channel stop date and time (millisecond)
  • 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 Optional 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 Optional 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 Optional 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": "STOPPED",
        "storageBucketName": "station-000",
        "segmentDuration": 10,
        "protocolList": [
            "HLS"
        ],
        "createTime": 1755737852,
        "readyTime": 1755737880,
        "cdnCreatedTime": 1755737852,
        "stopTime": 1755757440,
        "playUrl": "https://cpzplvi211650.edge.naverncp.com/[protocol]/[Object Storage Bucket(encryption name)]/[path]/[video filename]/[manifest]",
        "cdnStatus": "RUNNING",
        "cdnDomain": "cpzplvi211650.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": "cpzplvi211650.edge.naverncp.com",
            "cdnServiceName": "edge-vs-20250821095732-*******",
            "profileId": ****,
            "regionType": "KOREA",
            "cdnInstanceNo": *****
        }
    }
}