MENU
      VOD Station overview

        VOD Station overview


        Article summary

        Summary

        VOD Station is a service that lets you encode a number of video files saved in Object Storage in various video qualities, and stream them using the HLS/DASH protocol. You can use HTTP API to control all features of VOD Station.

        Common settings

        VOD Station API URL

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

        Request headers

        Header nameDescription
        x-ncp-region_codeNAVER Cloud Platform Region code (not included in the GET request)
        x-ncp_region_code:{Region Code}
        x-ncp-apigw-timestampIt indicates the elapsed time in milliseconds since January 1, 1970 00:00:00 UTC
        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-keyAccess key ID value issued on NAVER Cloud Platform portal
        x-ncp-iam-access-key:{Sub Account Access Key}
        x-ncp-apigw-signature-v2Signature used to encrypt the body of the above example with the secret key that maps with the access key ID
        HmacSHA256 is used for the HMAC encryption algorithm
        x-ncp-apigw-signature-v2:{API Gateway Signature}
        Content-TypeRequest content type as application/json for requests that contain a request body
        Content-Type: application/json

        Authentication header

        An API Gateway authentication is required to use the VOD Station API.
        See NAVER Cloud Platform API for more information related to API Gateway authentication.

        Create AUTHPARAMS

        • AUTHPARAMS request example
        curl -i -X GET \
           -H "x-ncp-region_code:KR" \
           -H "x-ncp-apigw-timestamp:1505290625682" \
           -H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
           -H "x-ncp-apigw-signature-v2:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
         'https://vodstation.apigw.ntruss.com/api/v2/channels'
        Plain text
        • Create a signature (add a new line with \n)

          • Create StringToSign matching the request, encrypt using SecretKey with HmacSHA256 algorithm, and encode using Base64.

          • This value is used as x-ncp-apigw-signature-v2.

            RequestStringToSign
            GET /api/v2/channels?limit=10
            x-ncp-apigw-timestamp={timestamp}
            x-ncp-iam-access-key={accesskey}
            x-ncp-apigw-signature-v2={signature}
            GET /api/v2/channels?limit=10
            {timeStamp}
            {accessKey}
        • Sample code

        public String makeSignature() {
            String space = " ";					// Space
            String newLine = "\n";  				// Line break
            String method = "GET";  				// HTTP method
            String url = "/api/v2/channels?isPage=true";	// Full URL under "/" (including query strings), excluding the domain
            String accessKey = "{accessKey}";		// access key id (from portal or Sub Account)
            String secretKey = "{secretKey}";		// secret key (from portal or Sub Account)
            String timestamp = String.valueOf(System.currentTimeMillis());		// Current timestamp (epoch, millisecond)
        
            String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(url)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();
        
            SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(signingKey);
        
            byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
            String encodeBase64String = Base64.encodeBase64String(rawHmac);
        
          return encodeBase64String;
        }
        Java
        /*
        https://code.google.com/archive/p/crypto-js/
        https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/crypto-js/CryptoJS%20v3.1.2.zip
        */
        
        /*
        CryptoJS v3.1.2
        code.google.com/p/crypto-js
        (c) 2009-2013 by Jeff Mott. All rights reserved.
        code.google.com/p/crypto-js/wiki/License
        */
        
        
        
        function makeSignature(secretKey, method, url, timestamp, accessKey) {
        	var space = " ";
        	var newLine = "\n";
        
        	var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey); // secret key
        	hmac.update(method);		// HTTP method
        	hmac.update(space);		// Space
        	hmac.update(url);		// Full URL under "/" (including query strings), excluding the domain
        	hmac.update(newLine);		// Line break
        	hmac.update(timestamp);		// Current timestamp (epoch, millisecond)
        	hmac.update(newLine);		// Line break
        	hmac.update(accessKey);		// access key (from portal or iam)
        
        	var hash = hmac.finalize();
        
        	return hash.toString(CryptoJS.enc.Base64);
        }
        JavaScript
        import sys
        import os
        import hashlib
        import hmac
        import base64
        import requests
        import time
        
        def	make_signature():
        	timestamp = int(time.time() * 1000)
        	timestamp = str(timestamp)				# Current timestamp (epoch, millisecond)
        
        	access_key = "{accessKey}"				# access key id (from portal or Sub Account)
        	secret_key = "{secretKey}"				# secret key (from portal or Sub Account)
        	secret_key = bytes(secret_key, 'UTF-8')
        
        	method = "GET"						# HTTP method
        	uri = "/api/v2/channels?isPage=true"			# Full URL under "/" (including query strings), excluding the domain
        
        	message = method + " " + uri + "\n" + timestamp + "\n"
        	+ access_key
        	message = bytes(message, 'UTF-8')
        	signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
        	return signingKey
        Python
        <?php
        
        $access_key = "{accessKey}";
        $secret_key = "{secretKey}";
        $url = "/api/v2/channels";
        $timestamp = getMillisecond();
        
        $message = "GET";
        $message .= " ";
        $message .= $url;
        $message .= "\n";
        $message .= $timestamp;
        $message .= "\n";
        $message .= $access_key;
        
        $signature = base64_encode(hash_hmac('sha256', $message, $secret_key, true));
        
        $headers = array(
          "Content-Type: application/json;",
          "x-ncp-apigw-timestamp: ".$timestamp."",
          "x-ncp-iam-access-key: ".$access_key."",
          "x-ncp-apigw-signature-v2: ".$signature.""
        );
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://vodstation.apigw.ntruss.com".$url);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        
        echo $response;
        
        function getMillisecond()
        {
          list($microtime, $timestamp) = explode(' ', microtime());
          $time = $timestamp.substr($microtime, 2, 3);
          return $time;
        }
        
        ?>
        PHP
        function makeSignature() {
        	nl=$'\\n'
        
        	TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))	# Current timestamp (epoch, millisecond)
        	ACCESSKEY="{accessKey}"				# access key id (from portal or Sub Account)
        	SECRETKEY="{secretKey}"				# secret key (from portal or Sub Account)
        	METHOD="GET"					# HTTP method
        	URI="/api/v2/channels?isPage=true"		# Full URL under "/" (including query strings), excluding the domain
        
        	SIG="$METHOD"' '"$URI"${nl}
        	SIG+="$TIMESTAMP"${nl}
        	SIG+="$ACCESSKEY"
        
        	SIGNATURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $SECRETKEY -binary|openssl enc -base64)
        }
        Bash

        VOD Station API request configuration

        Header
          x-ncp-region_code:{Region Code}
          x-ncp-apigw-timestamp:{Timestamp}
          x-ncp-iam-access-key:{Sub Account Access Key}
          x-ncp-apigw-signature-v2:{API Gateway Signature}
          Content-Type:application/json
        Body
          Json Object
        URL
          https://vodstation.apigw.ntruss.com/api/v2/{action}
        Plain text

        VOD Station API request sample

        curl -i -s -X POST \
         -H "Content-Type:application/json" \
         -H "x-ncp-region_code:KR" \
         -H "x-ncp-apigw-timestamp:1521787414578" \
         -H "x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy" \
         -H "x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=" \
         "https://vodstation.apigw.ntruss.com/api/v2/channles"\
         -d "{ \"cdn\": {\"profileId\": 1111, \"type\":\"GLOBAL_EDGE\", \"regionType\":\"KOREA\"}, \"createCdn\": true, \"name\": \"api-guide\", \"protocolList\": [ \"HLS\", \"DASH\" ], \"segmentDuration\": 5, \"storageBucketName\": \"guide\"}"
        Plain text

        VOD Station API Content-Type

        application/json is used for the Content-type of all data delivered through VOD Station API HTTP requests and response bodies.


        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.