MENU
      Create channel

        Create channel


        Article summary

        VOD Station provides an API to create channels, as well as the Channel list search API and Channel information search API for searching created channels.

        Note

        The following are precautions when using the content authentication (Signed URL/JWT) control of Global Edge in integration with VOD Station.

        • In the cache settings of Global Edge, you need to set Edge Auth as follows. For more information on how to change Global Edge Edge Auth settings, see the API Guide.
          • Extensions excluded from authentication
            • .ts, .mp4, .m4s, .vtt, .key
          • Extension that forwards the authentication token to the source
            • .m3u8, .mpd
        • When issuing an authentication token, you must enter wildcard path under acl for Signed URL and path for JWT respectively. For more information on how to issue authentication tokens, see the User Guide.
          • 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/*'

        Request

        POST https://vodstation.apigw.ntruss.com/api/v2/channels
        HTTP

        Request headers

        Header nameDescription
        x-ncp-region_codeNAVER Cloud Platform's Region code
        x-ncp_region_code:{Region Code}
        x-ncp-apigw-timestampThis is the number of milliseconds that have elapsed since January 1, 1970 00:00:00 UTC, and the request is considered invalid if the timestamp differs from the current time by more than 5 minutes
        x-ncp-apigw-timestamp:{Timestamp}
        x-ncp-iam-access-keyValue of access key ID issued in the NAVER Cloud Platform portal
        x-ncp-iam-access-key:{Sub Account Access Key}
        x-ncp-apigw-signature-v2Signature encrypted with the access key ID value and secret key
        x-ncp-apigw-signature-v2:{API Gateway Signature}
        Content-TypeSpecify the request body content type as application/json
        Content-Type: application/json

        Request body

        Field names in API requests are case sensitive.

        | Field name | Required | Type | Restrictions | Default value | Description |
        |--- |--- |--- |--- |--- |--- |
        | name | Yes | String | | | Name of the channel to be created |
        | storageBucketName | Yes | String | | | Name of the NAVER Cloud Platform Object Storage bucket to be linked with the channel |
        | accessPrivateFiles | No | Boolean | | | Set access restrictions in VOD Station for private files in the Object Storage bucket to be linked
        If allowed, files can be streamed without processing them to be public |
        | protocolList[] | Yes | Array(String) | HLS, DASH | | Streaming protocol for the channel
        HLS and DASH are supported, with duplicate selections available |
        | encryptionList[] | No | Array | | | Media protection settings for the channel
        It provides media encryption feature and DRM (FairPlay, Widevine/PlayReady) integration interface |
        | encryptionList[].drmContentId | Optional | String | Numbers and English letters between 1 and 200 characters
        Not needed when setting up media encryption | | DRM Content ID
        The value is included for DRM key requests and needed for license issuing |
        | encryptionList[].drmKeyUrl | Optional | String | URL including http(s)://
        Not needed when setting up media encryption | | 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 |
        | encryptionList[].systemIdList | Optional | Array(String) | Spaces not allowed, "-" allowed, must be less than 256 characters
        Not needed when setting up media encryption | | SystemID by DRM type
        Required to enter a value for the type you're setting |
        | encryptionList[].drmTypeCode | Optional | Integer | FairPlay: 21
        Widevine/PlayReady: 22
        Not required when setting up media encryption | | DRM type settings required |
        | encryptionList[].mediaEncryptionTypeCode | Optional | Integer | AES-128: 1
        Unnecessary when DRM is set | | Set HLS AES-128
        Can't be configured with FairPlay |
        | encryptionList[].protocol | Yes | String | HLS, DASH | | Set the appropriate protocol for DRM or media encryption
        Widevine/PlayReady: DASH
        FairPlay: HLS
        MediaEncryption: HLS |
        | segmentDuration | Yes | Integer | An integer between 5 and 20 | | Play time per segment
        The longer the duration, the longer the segment size becomes. This may result in a longer loading time, depending on the client network conditions
        On the other hand, the shorter the segment duration, the smaller the segment size will become. If set too small, buffering may occur, depending on the client network conditions
        (Unit: second) |
        | segmentDurationOption | No | String | BASIC, VARIABLE | BASIC | Create segments so that all segments start with a keyframe
        When selecting the VARIABLE option, a difference may occur between configured segmentDuration value and segment duration actually created, and the segment duration may not be constant |
        | createCdn | Yes | Boolean | true, false | | VOD Station requires CDN integration
        Can be created together upon channel creation or separately |
        | cdn | Optional | Object | Required when auto-generating Global Edge | ||
        | cdn.profileId | Optional | Integer | New Global Edge profile ID to create | |Profile ID to create the Global Edge from |
        |cdn.regionType | Optional | String | Utilized when integrating Global Edge | KOREA, JAPAN, GLOBAL |Global Edge service region|
        | cdn.type | Optional | String | Utilized when integrating Global Edge |GLOBAL_EDGE |Type for creating a new Global Edge|
        | drm | No | Object | Required to enter when selecting One Click Multi DRM | | |
        | drm.siteId | No | String | Required to enter when selecting One Click Multi DRM | | |
        | drm.contentId | No | String | Required to enter when selecting One Click Multi DRM | contentId is the unique ID of the content to be played, and it is used when packaging DRM. You can enter 3 to 100 characters consisting of English letters, numbers, "-" (hyphens), and "_" (underscores) | |

        Response

        | Field name | Type | Description | Note |
        |--- |--- |--- |--- |
        | content | Object | VOD Station open API response object | |
        | content.id | String | ID of the created channel | |
        | content.name | Object | Channel name | |
        | content.channelStatus | Integer | Channel's current status | CREATING, READY, STOPPING, STOPPED, TERMINATING, TERMINATED, FORCE_STOPPING, FORCE_STOPPED, FORCETERMINATING, FORCETERMINATED |
        | content.storageBucketName | String | Name of the Object Storage bucket linked with the channel | |
        | content.encryptedBucketName | String | Encrypted name of the Object Storage bucket integrated with the channel, used when creating the playback URL | |
        | content.accessPrivateFiles | Boolean | Set access restrictions in VOD Station for private files in the bucket | |
        | content.segmentDuration | Integer | Segment duration of the channel (unit: second) | |
        | content.segmentDurationOption | String | Channel's segment keyframe sorting options | |
        | content.protocolList[] | Array(String) | List of streaming protocols of the channel | |
        | content.createTime | Integer | The time channel creation started | |
        | content.readyTime | Integer | The time channel creation completed | |
        | content.cdnCreatedTime | Integer | The time when the CDN was automatically created in linkage to the channel | |
        | content.playUrl | String | CDN-based playback URL template | |
        | 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.cdn | Object | Auto-generated Global Edge information | |
        | content.cdn.cdnType | String | Auto-generated CDN type | |
        | content.cdn.cdnDomain | String | Auto-generated Global Edge's domain | |
        | content.cdn.cdnServiceName | String | Auto-generated Global Edge's service name | |
        | content.cdn.profileId | String | Auto-generated Global Edge's profile ID | |
        | content.cdn.regionType | String | Auto-generated Global Edge's service area | |
        | content.cdn.cdnInstanceNo | Integer | Auto-generated Global Edge's instance information | |
        | content.storageBucketStatus | String | Status of the Object Storage bucket integrated with the channel | |
        | content.originPath | String | Source path of the created channel. This is referred to when an independent CDN is created. | |
        | content.encryptionList[] | Array | Media security settings of the channel | |
        | content.encryptionList[].protocol | String | Media security target protocol | |
        | content.encryptionList[].mediaEncryptionTypeCode | Integer | Media security setting's encryption type
        1: AES-128
        2: Sample-AES
        3: CENC | |
        | content.encryptionList[].drmTypeCode | Intenger | Media security setting's DRM type
        21: FairPlay
        22: Widevine/PlayReady | |
        | content.encryptionList[].drmTypeName | String | Name of the media security setting's DRM type | |
        | content.encryptionList[].drmContentId | String | Content ID to be requested when packaging from VOD Station | |
        | content.encryptionList[].systemIdList | Array(String) | DRM System ID to be requested when packaging from VOD Station | |
        | content.encryptionList[].drmKeyUrl | String | DRM CPIX API URL to be requested when packaging from VOD Station | |
        | content.drm | Object | DRM encryption settings using VOD Station | |
        | content.drm.siteId | String | Site id created with One Click Multi DRM product | |
        | content.drm.contentId | String | Unique ID of the content to apply DRM encryption to
        It is used for DRM packaging and can be at least 3 characters and up to 100 characters, including English letter, numbers, "-" (hyphen), and "_" (underscore) | |
        | error | Object | Error response code and message | |
        | error.errorCode | String | Error response code | |
        | error.message | String | Error response message | |
        | error.details | String | Detailed description of the error message
        It responds when an error occurs in the API Gateway | |

        Examples

        Request example

        POST https://vodstation.apigw.ntruss.com/api/v2/channels
        
        POST /api/v2/channels
        HOST: vodstation.apigw.ntruss.com
        Content-Type: application/json
        x-ncp-region_code:KR
        x-ncp-apigw-timestamp:1521787414578
        x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy
        x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=
        
        Request body (Global Edge)
        {
          "accessPrivateFiles": false,
          "cdn": {
            "profileId": 681,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
          },
          "createCdn": true,
          "name": "ey-api-gedge-0628",
          "protocolList": [
            "HLS","DASH"
          ],
          "segmentDuration": 5,
          "segmentDurationOption": "BASIC",
          "storageBucketName": "eytestbucket"
        }
        
        Reqeust body (non DRM)
        {
           "cdn": {
             "profileId": 681,
             "regionType": "KOREA",
             "type": "GLOBAL_EDGE"
           },
           "createCdn": true,
          "name": "api-guide",
          "protocolList": [
            "HLS", "DASH"
          ],
          "segmentDuration": 5,
          "storageBucketName": "vodstation-bucket"
        }
        
        Request body (One Click Multi DRM using MediaEncryption and Widevine/PlayReady)
        {
          "createCdn": true,
          "name": "api-guide-drm",
          "protocolList": [
            "HLS", "DASH"
          ],
          "segmentDuration": 5,
          "segmentDurationOption": "BASIC",
          "accessPrivateFiles": true,
          "storageBucketName": "vodstaton-test",
          "drm" : {
               "siteId" : "ABCD",
               "contentId" : "abc-2344-dfd"
            }
        }
        
        Request body (DRM using MediaEncryption and Widevine/PlayReady)
        {
          "cdn": {
            "profileId": 681,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
          },
          "createCdn": true,
          "encryptionList": [
            {
              "drmContentId": "openapi",
              "drmKeyUrl": "https://kms.example.com/cpix/token",
              "systemIdList": [
              	"9A04F079-9840-4286-AB92-E65BE0885F95",
              	"EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
              ],
              "drmTypeCode": 22,
              "protocol": "DASH"
            },
            {
              "mediaEncryptTypeCode": 1,
              "protocol":"HLS"
            }
          ],
          "name": "api-guide-drm",
          "protocolList": [
            "HLS", "DASH"
          ],
          "segmentDuration": 5,
          "segmentDurationOption": "BASIC",
          "accessPrivateFiles": true,
          "storageBucketName": "vodstaton-test"
        }
        
        Request body (DRM using FairPlay and Widevine/PlayReady)
        {
          "cdn": {
            "profileId": 681,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
          },
          "createCdn": true,
          "encryptionList": [
            {
              "drmContentId": "openapi",
              "drmKeyUrl": "https://kms.example.com/cpix/token",
              "systemIdList": [
              	"9A04F079-9840-4286-AB92-E65BE0885F95",
              	"EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
              ],
              "drmTypeCode": 22,
              "protocol": "DASH"
            },
            {
              "drmContentId": "openapi",
              "drmKeyUrl": "https://kms.example.com/cpix/token",
              "systemIdList": [
              	"94CE86FB-07FF-4F43-ADB8-93D2FA968CA2"
              ],
              "drmTypeCode": 21,
              "protocol": "HLS"
            },
          ],
          "name": "api-guide-drm",
          "protocolList": [
            "HLS", "DASH"
          ],
          "segmentDuration": 5,
          "accessPrivateFiles": true,
          "storageBucketName": "vodstaton-test"
        }
        
        Request body (DRM using Widevine)
        {
          "cdn": {
            "profileId": 681,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
          },
          "createCdn": true,
          "encryptionList": [
            {
              "drmContentId": "openapi",
              "drmKeyUrl": "https://kms.example.com/cpix/token",
              "systemIdList": [
              	"EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
              ],
              "drmTypeCode": 22,
              "protocol": "DASH"
            },
          ],
          "name": "api-guide-drm",
          "protocolList": [
            "HLS", "DASH"
          ],
          "segmentDuration": 5,
          "accessPrivateFiles": true,
          "storageBucketName": "vodstaton-test"
        }
        
        Request body (using MediaEncryption Only)
        {
          "cdn": {
            "profileId": 681,
            "regionType": "KOREA",
            "type": "GLOBAL_EDGE"
          },
          "createCdn": true,
          "encryptionList": [
            {
              "mediaEncryptTypeCode": 1,
              "protocol":"HLS"
            }
          ],
          "name": "api-guide-drm",
          "protocolList": [
            "HLS", "DASH"
          ],
          "segmentDuration": 5,
          "accessPrivateFiles": true,
          "storageBucketName": "vodstaton-test"
        }
        HTTP

        Response example

        HTTP/1.1 200 OK
        Server: nginx
        Date: Wed, 12 Sep 2018 09:53:32 GMT
        Content-Type: application/json;charset=utf-8
        Connection: keep-alive
        Access-Control-Allow-Origin: *
        x-ncp-trace-id: 36c9k60om4p3238cpmc9gm4cj4
        
        {
          "content": {
            "disabled": false,
            "id": "vs-20230628104743-IhwvCgd",
            "name": "ey-api-gedge-0628",
            "channelStatus": "CREATING",
            "storageBucketName": "gjtest",
            "segmentDuration": 5,
            "protocolList": [
              "HLS",
              "DASH"
            ],
            "createTime": 1687916863,
            "cdnCreatedTime": 1687916864,
            "playUrl": "https://kphmlswg1388.beta-edge.naverncp.com/[protocol]/[Object Storage Bucket(encryption name)]/[path]/[video filename]/[manifest]",
            "cdnStatus": "CREATING",
            "cdnDomain": "kphmlswg1388.beta-edge.naverncp.com",
            "cdnServiceName": "edge-vs-20230628104743-IhwvCgd",
            "storageBucketStatus": "RUNNING",
            "originPath": "beta-vs2-k1.video.media.ntruss.com/86/vs-20230628104743-IhwvCgd",
            "encryptList": [
        
            ],
            "accessPrivateFiles": false,
            "encryptedBucketName": "sk3DDQr8sR~23I9msiHAPg__",
            "segmentDurationOption": "BASIC",
            "cdn": {
              "cdnType": "GLOBAL_EDGE",
              "cdnDomain": "kphmlswg1388.beta-edge.naverncp.com",
              "cdnServiceName": "edge-vs-20230628104743-IhwvCgd",
              "profileId": 681,
              "regionType": "KOREA",
              "cdnInstanceNo": 1388
            },
             "drm": {
              "siteId": "ABCD",
              "contentId": "abc-2344-dfd"
            }
          }
        }
        HTTP

        Was this article helpful?

        Changing your password will log you out immediately. Use the new password to log back in.
        First name must have atleast 2 characters. Numbers and special characters are not allowed.
        Last name must have atleast 1 characters. Numbers and special characters are not allowed.
        Enter a valid email
        Enter a valid password
        Your profile has been successfully updated.