The KKBOX English Developer Hub

Welcome to the KKBOX English developer hub. You'll find comprehensive guides and documentation to help you start working with KKBOX English as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    
Suggest Edits

Overview

Overview of different authorization flows

 

KKBOX OAuth 2.0 API use OAuth Standard to verify application.

KKBOX OAuth 2.0 API is to allow KKBOX member to authorize third-party applications. Third-party applications can access personal data on KKBOX such as favorite songs, albums, playlists directly rather than supply username and password to third-party applications.

A comparative table for OAuth Flow as follows :

Flow
User Authorization Required
Access User Resources
Access Token Refresh
Suitable for Use in

Client Credentials Flow

NO

NO

NO

Only need to get KKBOX open data

Authorization Code Flow

YES

YES

YES

Need to get user's personal data such as favorite songs, albums, playlists

Devices Flow

YES

YES

YES

Need to get user's personal data such as favorite songs, albums, playlists. The device is not convenient for user input username and password to log in.

If you use Authorization Code Flow or Devices Flow to get Access Token, you can also do Token Refreshing at the same time. In this way, user can get a new Access Token when the Access token expire instead of authorizing again.

Suggest Edits

Client Credentials Flow

Pass your App ID and App Secret to get access_token.
Create an App => https://developer.kkbox.com/#/app

 
posthttps://account.kkbox.com/oauth2/token
POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com

grant_type=client_credentials&client_id=234560AA085B38C19FB60371C8C6D25E&client_secret=6B7928FDE40394CCC81962D7700C0107
A binary file was returned

You couldn't be authenticated

{
  "access_token": "fCVTwABPlcO6Qxc7Ll23rsdfsf",
  "expires_in": 2592000,
  "token_type": "Bearer"
}
{
  "error":"invalid_request"
}
{
  "error":"invalid_client"
}
{
  "error":"invalid_grant"
}
{
  "error":"invalid_request"
}

Form Data

grant_type
string
required

Please set client_credentials

client_id
string
required

App ID. You also can transfer via HTTP Basic access authentication.

client_secret
string
required

App Secret. You also can transfer via HTTP Basic access authentication.

 
Suggest Edits

Authorization Code Flow

 

OAuth 2.0 for Authorization Code Grant
To help device which have Browser and Cloud Service get Access Token. After KKBOX authenticate the device via Access Token, the device can use KKBOX API service. The way of OAuth 2.0 for Authorization Code Flow integration we recommend is as follows :

Participant Description

  • User People who use the application.
  • User Agent Browser or Web View Component
  • Cloud Service KKBOX OAuth Client Service based on Webserver
  • KKBOX API Service API Service supply by KKBOX

Authorization Code Flow Log-in description

  • If user want to experience KKBOX Service on the application, User Agent will display the interface to ask user for log in KKBOX. If user accept the request, user will authorize Cloud Service to access personal data on KKBOX Service, then request to log in account.

  • Cloud Service call KKBOX OAuth 2.0 Authorize API [3], the parameter have to contain redirect_uri(Should be encoded), this parameter is same as the redirect_uri on the project of Developer Site My App Page. After request, User Agent will redirect to KKBOX log-in page where contain state parameter [3-8].
    We recommend Android use Chrome Custom Tab , and iOS use SFAuthenticationSession to open the website.
    User has to enter KKBOX username and password to authorize, if user does not have an account, user have to register one. After finishing entering username and password, KKBOX API Service will check whether
    redirect_uri is correct. If there is something wrong during the check, it will deny the authorization; on the contrary, it will finish setting for user if the process is correct.

KKBOX OAuth 2.0 Authorize API Request

GET /oauth2/authorize?scope=user_profile user_territory user_account_status&redirect_uri=https%3A%2F%2Flocalhost%2F&client_id={MY_CLIENT_ID}&response_type=code&state={YOUR_STATE_MSG} HTTP/1.1
  Host: account.kkbox.com
Location: /login?url=%2Foauth2%2Fauthorize%3Fscope%3Duser_profile%26redirect_uri%3Dhttps%253A%252F%252Flocalhost%252F%26client_id%3D{MY_CLIENT_ID}%26response_type%3Dcode%26state%3D1234
  • After user authorize, browser will redirect into Cloud Service which is same as the redirect_uri page, it is called Cloud Service because redirect_uri is based on Web Server. [9]
    Take the picture below for example. When browser is redirecting, the url will contain Authorization Code and State. Partner have to extract the Authorization Code in the url. [10-11]

Token API for Authorization Code Flow Request

POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com
  
grant_type=authorization_code&code={authorization_code}&client_id={MY_CLIENT_ID}&client_secret={MY_CLIENT_SECRET}

Token API for Authorization Code Flow Response

{
  "access_token": "{ACCESS_TOKEN}",
  "expires_in": 9223372036854775807,
  "token_type": "Bearer",
  "refresh_token": "{REFRESH_TOKEN}"
}
  • Finally, Cloud Service will notify User log-in successfully, and browser will show the message to let user know time to enjoy KKBOX Service. [14-15]

Access Token Management

  • In this use case, access token should be preserved on Web Server. If you need to transfer access token via internet to allow your device or service to get user's personal data from KKBOX, please use encrypted transport protocol, such as TLS 1.2 or above.
Suggest Edits

Step 1. Authorize

Redirect user to a page where user can authorize your app.

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://account.kkbox.com/oauth2/authorize
GET /oauth2/authorize?redirect_uri=https%3A%2F%2Flocalhost%2F&client_id=my_client_id&response_type=code&state=1234 HTTP/1.1
Host: account.kkbox.com
A binary file was returned

You couldn't be authenticated

Location: /login?url=redirect_uri%3Dhttps%253A%252F%252Flocalhost%252F%26client_id%3Dmy_client_id%26response_type%3Dcode%26state%3D1234
{
  "error":"invalid_request"
}
{
  "error":"unauthorized_client"
}
{
  "error":"unsupported_response_type"
}
{
  "error":"access_denied"
}

Query Params

redirect_uri
string
required

The user will redirect to this uri after the user authorize successfully. The uri should be encoded. This parameter must be same as https://developer.kkbox.com/#/app

client_id
string
required

Your App ID

response_type
string
required

Please set to code

state
string
required

Based on the security, if the user redirects successfully, there will be a value that is the same as this state parameter.

 
Suggest Edits

Step 2. Token API for Authorization Code Flow

Use Authorization Code to get access token.

 
posthttps://account.kkbox.com/oauth2/token
POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com

grant_type=authorization_code&code=eff150349d630c2accd0ab55c5172ba7&client_id=234560AA085B38C19FB60371C8C6D25E&client_secret=6B7928FDE40394CCC81962D7700C0107
A binary file was returned

You couldn't be authenticated

{
  "access_token": "fCVTwABPlcO6Qxc7Ll23rsdfsf",
  "expires_in": 2592000,
  "token_type": "Bearer",
  "refresh_token": "y600sLtGlsR+oU4mhYtOeg=="
}
{
  "error": "invalid_client"
}
{
  "error": "invalid_grant"
}
{
  "error": "invalid_request"
}

Form Data

grant_type
string
required

Please set to authorication_code

code
string
required

Please set the value which is in the url parameter after you redirect from Step 1- Authorize

client_id
string
required

App ID. You also can transfer via HTTP Basic access authentication.

client_secret
string
required

App Secret. You also can transfer via HTTP Basic access authentication.

 
Suggest Edits

Devices Flow

 

OAuth 2.0 Device Flow 標準
If there is no browser, or it is not convenience to get Access Token, device can use OAuth 2.0 Device Flow to solve this problem. It occurs more often on the develop version, Smart TV, Set-top box, Smart Speaker... etc. To let user log in, device can use Device Code, QR Code or other communicated ways to transfer process to Smart Phone or other devices which have abilities to connect to the internet. The way of OAuth 2.0 for Device Flow integration we recommend is as follows:

Participant Description

  • User Person who experience KKBOX Service via IoT device
  • Control App IoT device help user control the app, such as iOS/Android App.
  • IoT Device IoT device Invented by developer
  • KKBOX API Service API Service supply by KKBOX

Device Flow log-in process description

  • As a start, user connects to Wifi and finishes other settings. [1]
  • Control App displays the interface to ask user for accepting KKBOX log in [2]
  • User uses the interface which show on Control App to accept KKBOX log in [3]
  • Control App send KKBOX account log-in request to IoT Device [4]
  • IoT Device call Device Code API to get device_code and verification_qrcode(URL) [5-6]

Device Code API Request

POST /oauth2/device/code HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com
  
client_id={MY_CLIENT_ID}
{
  "device_code": "{DEVICE_CODE}",
  "expires_in": 600,
  "interval": 5,
  "short_verification_url": "https://www.kkbox.com/device",
  "user_code": "{USER_CODE}",
  "verification_qrcode": "https://account.kkbox.com/oauth2/authorize?response_type=device&user_code={USER_CODE}",
  "verification_url": "https://account.kkbox.com/device"
}

We recommand Android use Chrome Custom Tab , and iOS use SFAuthenticationSession to open the verification_qrcode, which IoT Device pass to Control App. User has to enter KKBOX username and password to authorize, if user does not have an account, user have to register one. The format of verification_qrcode URL call is as follows :

GET /oauth2/authorize?response_type=device&user_code={USER_CODE} HTTP/1.1
Host: account.kkbox.com

IoT Device use Polling to call Token API for Devices Flow [7]. If [8-10] have not be finished, it will show the error message authorization_pending until you get a new Access Token [11].
Notice that, {ACCESS_TOKEN} and {REFRESH_TOKEN} are important, they need to be preserved carefully.

Token API for Devices Flow Request

POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com
  
grant_type=http://oauth.net/grant_type/device/1.0&client_id={CLIENT_ID}&client_secret={CLIENT_SECRET}&code={DEVICE_CODE}
{
  "access_token": "{ACCESS_TOKEN}",
  "expires_in": 9223372036854775807,
  "token_type": "Bearer",
  "refresh_token": "{REFRESH_TOKEN}"
}

After IoT Device get Access Token [11], it will notify Control App user that log in successfully [12]. If Control App want to access KKBOX data, it can pass Access Token to Control App. For example, Control App on some devices can show playlists or covers of albums... etc.

Finally, Control App show the massage that user can start to enjoy KKBOX Service. [13]

Suggest Edits

Step 1. Device Code API

Get device_code and verification_qrcode, then direct user into the url to authorize your app.

 
posthttps://account.kkbox.com/oauth2/device/code
POST /oauth2/device/code HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com

client_id=my_client_id
A binary file was returned

You couldn't be authenticated

{
  "device_code": "3ff6c414af09003d2dsf34dsdfsdf",
  "expires_in": 600,
  "interval": 5,
  "short_verification_url": "https://www.kkbox.com/device",
  "user_code": "135793242432",
  "verification_qrcode": "https://account.kkbox.com/oauth2/authorize?response_type=device&user_code=135793242432",
  "verification_url": "https://account.kkbox.com/device"
}

Form Data

client_id
string
required

Your App ID

 
Suggest Edits

(Optional) Generate QR Code Image

If your device is not convenient for user enter the username and password to authorize, but the device contain a screen, it can show the QR code that is transferred from authorized url to allow user to scan. User can log in on the phone browser and authorize your app via QR code.

 
gethttps://account.kkbox.com/oauth2/generator
GET /generator?content=https%3A%2F%2Fevent.kkbox.com%2Fcontent%2Fplaylist%2FDZni8m29ciOFbRxTJq%3Fdesktop%3Dtrue&image_size=250&logo_size=50&response_type=json HTTP/1.1
Host: qrcode.kkbox.com.tw
A binary file was returned

You couldn't be authenticated

{
  "status":"success",
  "data":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAgAElEQVR4nOy9ebgdR3E2\/va55+771X61b5ZtWZZsybbMapsYEwgYAiGEkBAS1nyEhMX5+EISfgkJJOwkToAAcQirCbtZAnYwYI....."
}

Query Params

content
string
required

Generate the string of QR Code. Used in Devices Flow, please set the verification_qrcode value got from Step1.

image_size
int32
required

The pixel size of your QR code image.

logo_size
int32
required

A square in pixel size show in the middle of QR code image.

response_type
string
required

Choose the type of response, it can be set to image or json

foreground_color
int32

The color of QR Code based on 16-bit RGB color

background_color
int32

The background color of QR Code based on 16-bit RGB color

 
Suggest Edits

Step 2. Token API for Devices Flow

Use device_code to get access token.

 
gethttps://account.kkbox.com/oauth2/token
POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com

grant_type=http://oauth.net/grant_type/device/1.0&code=2e64328c71f35dc9c55417c8194a46b8&client_id=234560AA085B38C19FB60371C8C6D25E&client_secret=6B7928FDE40394CCC81962D7700C0107
A binary file was returned

You couldn't be authenticated

{
  "access_token": "fCVTwABPlcO6Qxc7Ll23rsdfsf",
  "expires_in": 9223372036854775807,
  "token_type": "Bearer",
  "refresh_token": "UeOKz4pJepEkIaGvlBUm3z=="
}
{
  "error":"authorization_pending"
}
{
  "error":"invalid_request"
}
{
  "error":"invalid_client"
}
{
  "error":"invalid_request"
}

Form Data

grant_type
string
required

Please set to http://oauth.net/grant_type/device/1.0

code
string
required

Please set the device_code got from Step1.

client_id
string
required

App ID. You also can transfer via HTTP Basic access authentication.

client_secret
string
required

App Secret. You also can transfer via HTTP Basic access authentication.

 
Suggest Edits

Token Refreshing

 

Access Token and Refresh Token which are gotten via Token API have validity. Access Token will expired, which time is based on expires_in. The validity of Refresh Token is little longer than Access Token, please refresh these tokens before they expire. It will affect the user experience if the token expire.

  • Token API Response
{
  "access_token": "{ACCESS_TOKEN}",
  "expires_in": 2592000,
  "token_type": "Bearer",
  "refresh_token": "{REFRESH_TOKEN}"
}
  • JSON value description
KEY
VALUE DESCRIPTION

access_token

Access Token is used for subsequent calls. For example, KKBOX API Service.

expires_in

The time period of access token's validity.

token_type

Access token may be used under a particular type. Such as "Bearer".

refresh_token

A token that can be sent to KKBOX Service to replace access code. In this way, user can get a new access token and refresh token.

Check here to know how to refresh the token Token API for Refreshing .
In the valid time period, call Refresh Token ( Token API for Refreshing ) to update Access Token.

Token API for Refreshing Request

POST /oauth2/token HTTP/1.1
Authorization: Basic {BASE64_ENCODE(CLIENT_ID:CLIENT_SECRET)}
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com

grant_type=refresh_token&refresh_token={REFRESH_TOKEN}
{
  "access_token": "{NEW_ACCESS_TOKEN}",
  "expires_in": 9223372036854775807,
  "token_type": "Bearer",
  "scope": "user_account_status user_profile user_territory",
  "refresh_token": "{NEW_REFRESH_TOKEN}"
}
  • Notice that : If the result show error message, please do OAuth authorization again.
Suggest Edits

Token API for Refreshing

Use refresh_token to get a new access_token

 
posthttps://account.kkbox.com/oauth2/token
POST /oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: account.kkbox.com

grant_type=refresh_token&refresh_token=y700ELGGlsR+qU5ohZtOeg==&client_id=234560AA085B38C19FB60371C8C6D25E&client_secret=6B7928FDE40394CCC81962D7700C0107
A binary file was returned

You couldn't be authenticated

{
  "access_token": "fCVTwABPlcO6Qxc7Ll23rsdfsf",
  "expires_in": 9223372036854775807,
  "token_type": "Bearer",
  "refresh_token": "UfKLz4PHepEkIaGvmXUm3z=="
}
{
  "error":"invalid_request"
}
{
  "error":"invalid_client"
}
{
  "error":"invalid_grant"
}
{
  "error":"invalid_request"
}

Form Data

grant_type
string
required

Please set to refresh_token

refresh_token
string
required

Set the refresh token which is gotten through Authorization Code Flow or Devices Flow

client_id
string
required

App ID. You also can transfer via HTTP Basic access authentication.

client_secret
string
required

App Secret. You also can transfer via HTTP Basic access authentication.

 
Suggest Edits

Getting Started

 

After getting Access Token through KKBOX OAuth 2.0 API, we could start to use KKBOX Open API. To get data, you have to add Authorization: Bearer my_access_token in Headers of HTTP Request.
For example, if your Access Token is fCVTwABPlcO6Qxc7Ll23rsdfsf, and you want to get KKBOX Charts, the content of HTTP Request is

GET /v1.1/charts?territory=TW HTTP/1.1
Authorization: Bearer fCVTwABPlcO6Qxc7Ll23rsdfsf
Host: api.kkbox.com

If you want to know further, please check Charts API document

The search API for query KKBOX's music libraries.

Suggest Edits

Charts

Song rankings from the KKBOX's service.

 
Suggest Edits

/charts

List of song rankings.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/charts
GET /v1.1/charts?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/charts?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/charts?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/charts?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/charts?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/charts?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/charts?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "LZPhK2EyYzN15dU-PT",
      "title": "綜合新歌即時榜",
      "description": "綜合新歌即時榜",
      "url": "https://www.kkbox.com/tw/tc/playlist/LZPhK2EyYzN15dU-PT",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/59599602v1259/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/59599602v1259/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/59599602v1259/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-08-02T03:01:58+00:00",
      "owner": {
        "id": "T-YMdq3gnf6AVbuqgt",
        "url": "https://www.kkbox.com/tw/profile/T-YMdq3gnf6AVbuqgt",
        "name": "KKBOX",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "PYQbSKw4piAuZAS8z8",
      "title": "華語單曲日榜",
      "description": "華語單曲日榜",
      "url": "https://www.kkbox.com/tw/tc/playlist/PYQbSKw4piAuZAS8z8",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/65090851v1/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/65090851v1/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/65090851v1/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-08-01T23:20:50+00:00",
      "owner": {
        "id": "T-YMdq3gnf6AVbuqgt",
        "url": "https://www.kkbox.com/tw/profile/T-YMdq3gnf6AVbuqgt",
        "name": "KKBOX",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "1-O_-tQ-1E2cxrYDeH",
      "title": "西洋單曲日榜",
      "description": "西洋單曲日榜",
      "url": "https://www.kkbox.com/tw/tc/playlist/1-O_-tQ-1E2cxrYDeH",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/65090970v1/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/65090970v1/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/65090970v1/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-08-01T23:21:04+00:00",
      "owner": {
        "id": "T-YMdq3gnf6AVbuqgt",
        "url": "https://www.kkbox.com/tw/profile/T-YMdq3gnf6AVbuqgt",
        "name": "KKBOX",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "DXg7Kh_0Hhl4u8NbiB",
      "title": "韓語單曲日榜",
      "description": "韓語單曲日榜",
      "url": "https://www.kkbox.com/tw/tc/playlist/DXg7Kh_0Hhl4u8NbiB",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/65090872v1/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/65090872v1/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/65090872v1/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-08-01T23:20:53+00:00",
      "owner": {
        "id": "T-YMdq3gnf6AVbuqgt",
        "url": "https://www.kkbox.com/tw/profile/T-YMdq3gnf6AVbuqgt",
        "name": "KKBOX",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "5YQgr1nN3dAINAbNFD",
      "title": "日語單曲日榜",
      "description": "日語單曲日榜",
      "url": "https://www.kkbox.com/tw/tc/playlist/5YQgr1nN3dAINAbNFD",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/65090865v1/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/65090865v1/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/65090865v1/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-08-01T23:20:52+00:00",
      "owner": {
        "id": "T-YMdq3gnf6AVbuqgt",
        "url": "https://www.kkbox.com/tw/profile/T-YMdq3gnf6AVbuqgt",
        "name": "KKBOX",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/noimg/cropresize/300x300.jpg"
          }
        ]
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 5,
    "previous": null,
    "next": null
  },
  "summary": {
    "total": 29
  }
}

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a song ranking.

 
Suggest Edits

/charts/:chart_id

To retrieve information of the song ranking with chart_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/charts/chart_id
GET /v1.1/charts/X-6lSz-IwzDxkPuDP-?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/charts/4nUZM-TY2aVxZ2xaA-?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/charts/4nUZM-TY2aVxZ2xaA-?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/charts/4nUZM-TY2aVxZ2xaA-?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/charts/4nUZM-TY2aVxZ2xaA-?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/charts/4nUZM-TY2aVxZ2xaA-?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/charts/4nUZM-TY2aVxZ2xaA-?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "tracks": {
    "data": [
      {
        "id": "Cl6IBBqIFKtg2hkWuB",
        "name": "有一種悲傷 (A Kind of Sorrow)",
        "duration": 237008,
        "url": "https://www.kkbox.com/tw/tc/song/EJT009KS-TZFBgeRFBgeR0XL-index.html",
        "track_number": 1,
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "album": {
          "id": "OtS1j6YhEqbM8XuF5D",
          "name": "有一種悲傷 (A Kind of Sorrow)",
          "url": "https://www.kkbox.com/tw/tc/album/aMZ0PysNRqgHN0F2RKf6009H-index.html",
          "explicitness": false,
          "available_territories": [
            "TW",
            "HK",
            "SG",
            "MY",
            "JP"
          ],
          "release_date": "2018-10-12",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/global/40716998,1v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/global/40716998,1v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/global/40716998,1v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "Osbh3TUzyafhBl0WD5",
            "name": "A-Lin",
            "url": "https://www.kkbox.com/tw/tc/artist/RTQrEhYKUkU5NCX0F03LZ08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/13667,0v22/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/13667,0v22/fit/300x300.jpg"
              }
            ]
          }
        }
      }....
    ],
  "updated_at": "2018-12-12T19:38:46+00:00",
  "owner": {
    "id": "T-YMdq3gnf6AVbuqgt",
    "url": "https://www.kkbox.com/tw/profile/T-YMdq3gnf6AVbuqgt",
    "name": "KKBOX",
    "description": "",
    "images": [
      {
        "height": 75,
        "width": 75,
        "url": "https://i.kfs.io/muser/global/noimg/cropresize/75x75.jpg"
      },
      {
        "height": 180,
        "width": 180,
        "url": "https://i.kfs.io/muser/global/noimg/cropresize/180x180.jpg"
      },
      {
        "height": 300,
        "width": 300,
        "url": "https://i.kfs.io/muser/global/noimg/cropresize/300x300.jpg"
      }
    ]
  }
}

Path Params

chart_id
string
required

The identifier of a song raking.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a song ranking.

 
Suggest Edits

/charts/:chart_id/tracks

List tracks of a chart playlist.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/charts/chart_id/tracks
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/charts/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&offset=0&limit=2' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/charts/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&offset=0&limit=2")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/charts/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&offset=0&limit=2",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/charts/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&offset=0&limit=2", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/charts/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&offset=0&limit=2",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/charts/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&offset=0&limit=2"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "Cl6IBBqIFKtg2hkWuB",
      "name": "有一種悲傷 (A Kind of Sorrow)",
      "duration": 237008,
      "url": "https://www.kkbox.com/tw/tc/song/EJT009KS-TZFBgeRFBgeR0XL-index.html",
      "track_number": 1,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "OtS1j6YhEqbM8XuF5D",
        "name": "有一種悲傷 (A Kind of Sorrow)",
        "url": "https://www.kkbox.com/tw/tc/album/aMZ0PysNRqgHN0F2RKf6009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2018-10-12",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/40716998,1v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/40716998,1v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/40716998,1v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "Osbh3TUzyafhBl0WD5",
          "name": "A-Lin",
          "url": "https://www.kkbox.com/tw/tc/artist/RTQrEhYKUkU5NCX0F03LZ08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/13667,0v22/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/13667,0v22/fit/300x300.jpg"
            }
          ]
        }
      }
    },
    {
      "id": "CrmRXkVxa7_3NcU5lL",
      "name": "備胎 (feat. Eetu Kalavainen)",
      "duration": 272013,
      "url": "https://www.kkbox.com/tw/tc/song/ydR00K7A0TnUF7q5UF7q50XL-index.html",
      "track_number": 1,
      "explicitness": true,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "PX-NUOP3Q7mrw8OHOO",
        "name": "備胎 (feat. Eetu Kalavainen)",
        "url": "https://www.kkbox.com/tw/tc/album/GPk7Uh328ma8L0F2XdRF009H-index.html",
        "explicitness": true,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2018-11-29",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/42374863,1v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/42374863,1v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/42374863,1v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "4nnlQg-K2KLL4Qwdrg",
          "name": "謝和弦 (R-chord)",
          "url": "https://www.kkbox.com/tw/tc/artist/E0hu.wEuV-BsvmQ0F09mG08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/40080,0v12/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/40080,0v12/fit/300x300.jpg"
            }
          ]
        }
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 2,
    "previous": null,
    "next": "https://api.kkbox.com/v1.1/charts/X-6lSz-IwzDxkPuDP-/tracks?limit=2&territory=TW&offset=2"
  },
  "summary": {
    "total": 100
  }
}

Path Params

chart_id
string
required

The identifier of a song ranking.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a song ranking.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

New Hits Playlists

 

The new hits playlists from the KKBOX service.

Suggest Edits

/new-hits-playlists

List of new hits playlists.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/new-hits-playlists
GET /v1.1/new-hits-playlists?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/new-hits-playlists?territory=TW&offset=0&limit=10")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/new-hits-playlists?territory=TW&offset=0&limit=10",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/new-hits-playlists?territory=TW&offset=0&limit=10", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/new-hits-playlists?territory=TW&offset=0&limit=10",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/new-hits-playlists?territory=TW&offset=0&limit=10"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/new-hits-playlists?territory=TW&offset=0&limit=10' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "DZrC8m29ciOFY2JAm3",
      "title": "華語速爆新歌 (每週二五更新)",
      "description": "【封面人物:曾沛慈】\n大受好評華語歌壇重量級速爆歌單,\n收藏一張歌單,流行最強音零時差搶先收聽。",
      "url": "https://www.kkbox.com/tw/tc/playlist/DZrC8m29ciOFY2JAm3",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/26541395v263/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/26541395v263/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/26541395v263/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-07-30T10:13:43+00:00",
      "owner": {
        "id": "Os-z4yYPRlzOAkzZm3",
        "url": "https://www.kkbox.com/tw/profile/Os-z4yYPRlzOAkzZm3",
        "name": "KKBOX 華語小編",
        "description": "這次我要播很多 華語 類別的歌曲,快來跟我一起聽音樂吧!",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/94562966v27/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/94562966v27/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/94562966v27/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "DZni8m29ciOFbRxTJq",
      "title": "西洋速爆新歌  (每週六更新)",
      "description": "最新西洋新歌都在這裡!Cover:Alan Walker",
      "url": "https://www.kkbox.com/tw/tc/playlist/DZni8m29ciOFbRxTJq",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/26541409v142/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/26541409v142/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/26541409v142/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-07-27T03:12:14+00:00",
      "owner": {
        "id": "5XIttVqe0foATcIFMp",
        "url": "https://www.kkbox.com/tw/profile/5XIttVqe0foATcIFMp",
        "name": "KKBOX 西洋小編",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/94563062v1/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/94563062v1/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/94563062v1/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "1_pCwOnj-qZsGU3rTJ",
      "title": "日語速爆新歌(每週日更新)",
      "description": "最新日語新歌都在這裡!\n\nCover Artist:愛繆",
      "url": "https://www.kkbox.com/tw/tc/playlist/1_pCwOnj-qZsGU3rTJ",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/26541410v126/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/26541410v126/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/26541410v126/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-07-26T08:01:46+00:00",
      "owner": {
        "id": "Ooerjv5-p-TJsFGLg5",
        "url": "https://www.kkbox.com/tw/profile/Ooerjv5-p-TJsFGLg5",
        "name": "KKBOX 日語小編",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/94563302v1/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/94563302v1/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/94563302v1/cropresize/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "0kM_Sp_Ezou3BMGK-n",
      "title": "韓語速爆新歌 (每週一更新)",
      "description": "最新韓語新歌都在這裡!\nCover Artist:姜丹尼爾",
      "url": "https://www.kkbox.com/tw/tc/playlist/0kM_Sp_Ezou3BMGK-n",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/playlist/global/26541412v131/cropresize/300x300.jpg"
        },
        {
          "height": 600,
          "width": 600,
          "url": "https://i.kfs.io/playlist/global/26541412v131/cropresize/600x600.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/playlist/global/26541412v131/cropresize/1000x1000.jpg"
        }
      ],
      "updated_at": "2019-08-01T03:39:32+00:00",
      "owner": {
        "id": "D-gh_8TEudW64tRSCs",
        "url": "https://www.kkbox.com/tw/profile/D-gh_8TEudW64tRSCs",
        "name": "KKBOX 韓語小編",
        "description": "",
        "images": [
          {
            "height": 75,
            "width": 75,
            "url": "https://i.kfs.io/muser/global/94563350v1/cropresize/75x75.jpg"
          },
          {
            "height": 180,
            "width": 180,
            "url": "https://i.kfs.io/muser/global/94563350v1/cropresize/180x180.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/muser/global/94563350v1/cropresize/300x300.jpg"
          }
        ]
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 5,
    "previous": null,
    "next": null
  },
  "summary": {
    "total": 4
  }
}

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a new hits playlist.

 
Suggest Edits

/new-hits-playlists/:playlist_id

To retrieve information of the new hits playlist with playlist_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/new-hits-playlists/playlist_id
GET /v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "tracks": {
    "data": [
      {
        "id": "WpOR92XbaMOw9-5qhi",
        "name": "謎之音 (Confession)",
        "duration": 265691,
        "url": "https://www.kkbox.com/tw/tc/song/JFs00H.4ZH-RiJY8RiJY80XL-index.html",
        "track_number": 1,
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "album": {
          "id": "Ol6Nm-x5CCud88oW2-",
          "name": "謎之音 (Confession)",
          "url": "https://www.kkbox.com/tw/tc/album/SkqaUAPZS2gFu0F3Tz3N009H-index.html",
          "explicitness": false,
          "available_territories": [
            "TW",
            "HK",
            "SG",
            "MY",
            "JP"
          ],
          "release_date": "2019-07-26",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/global/58192087,1v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/global/58192087,1v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/global/58192087,1v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "0t3qKleq91sO_PChVT",
            "name": "曾沛慈 (Pets Tseng)",
            "url": "https://www.kkbox.com/tw/tc/artist/XPFR3oF3.0Dh890F03rWf08K-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/1013803,0v5/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/1013803,0v5/fit/300x300.jpg"
              }
            ]
          }
        }
      },
      {
        "id": "9-Gl4RJfF6qQ0WU7dr",
        "name": "兩秒終 (2 Seconds)",
        "duration": 220473,
        "url": "https://www.kkbox.com/tw/tc/song/eUb00W15WD-jkBmgjkBmg0XL-index.html",
        "track_number": 3,
        "explicitness": true,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "album": {
          "id": "PavDxuKhDe7LXcxCwo",
          "name": "WHAT A LIFE",
          "url": "https://www.kkbox.com/tw/tc/album/UGQdQ3-uysUVU0F3VCL.009H-index.html",
          "explicitness": true,
          "available_territories": [
            "TW",
            "HK",
            "SG",
            "MY",
            "JP"
          ],
          "release_date": "2019-07-25",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/global/58508645,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/global/58508645,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/global/58508645,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "4pCYG3uv_-WY5d9QYt",
            "name": "周湯豪 (NICKTHEREAL)",
            "url": "https://www.kkbox.com/tw/tc/artist/RMbSPqW5.xeUHFK0F0CqQ08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/52634,0v5/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/52634,0v5/fit/300x300.jpg"
              }
            ]
          }
        }
      },
      {
        "id": "SqrAF0uNV6Obwu2w1w",
        "name": "simple",
        "duration": 169534,
        "url": "https://www.kkbox.com/tw/tc/song/1GX00C3TNH-I6jYOI6jYO0XL-index.html",
        "track_number": 1,
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "album": {
          "id": "8pHFTC4cvmYiMRIm5j",
          "name": "simple",
          "url": "https://www.kkbox.com/tw/tc/album/x86rxvWwRBZLO0F3Wagx009H-index.html",
          "explicitness": false,
          "available_territories": [
            "TW",
            "HK",
            "SG",
            "MY",
            "JP"
          ],
          "release_date": "2019-07-26",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/global/58878781,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/global/58878781,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/global/58878781,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "8sh6QVl8zbMOksEAKR",
            "name": "葛仲珊 (MISS KO)",
            "url": "https://www.kkbox.com/tw/tc/artist/mjv4v-5-0dn.j5g0F0wVp08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/247797,0v5/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/247797,0v5/fit/300x300.jpg"
              }
            ]
          }
        }
      },
    ],
    "paging": {
      "offset": 0,
      "limit": 100,
      "previous": null,
      "next": null
    },
    "summary": {
      "total": 51
    }
  },
  "id": "DZrC8m29ciOFY2JAm3",
  "title": "華語速爆新歌 (每週二五更新)",
  "description": "【封面人物:曾沛慈】\n大受好評華語歌壇重量級速爆歌單,\n收藏一張歌單,流行最強音零時差搶先收聽。",
  "url": "https://www.kkbox.com/tw/tc/playlist/DZrC8m29ciOFY2JAm3",
  "images": [
    {
      "height": 300,
      "width": 300,
      "url": "https://i.kfs.io/playlist/global/26541395v263/cropresize/300x300.jpg"
    },
    {
      "height": 600,
      "width": 600,
      "url": "https://i.kfs.io/playlist/global/26541395v263/cropresize/600x600.jpg"
    },
    {
      "height": 1000,
      "width": 1000,
      "url": "https://i.kfs.io/playlist/global/26541395v263/cropresize/1000x1000.jpg"
    }
  ],
  "updated_at": "2019-07-30T10:13:43+00:00",
  "owner": {
    "id": "Os-z4yYPRlzOAkzZm3",
    "url": "https://www.kkbox.com/tw/profile/Os-z4yYPRlzOAkzZm3",
    "name": "KKBOX 華語小編",
    "description": "這次我要播很多 華語 類別的歌曲,快來跟我一起聽音樂吧!",
    "images": [
      {
        "height": 75,
        "width": 75,
        "url": "https://i.kfs.io/muser/global/94562966v27/cropresize/75x75.jpg"
      },
      {
        "height": 180,
        "width": 180,
        "url": "https://i.kfs.io/muser/global/94562966v27/cropresize/180x180.jpg"
      },
      {
        "height": 300,
        "width": 300,
        "url": "https://i.kfs.io/muser/global/94562966v27/cropresize/300x300.jpg"
      }
    ]
  }
}

Path Params

playlist_id
string
required

The identifier of a new hits playlist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a new hits playlist.

 
Suggest Edits

/new-hits-playlists/:playlist_id/tracks

List of tracks of a new hits playlist.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/new-hits-playlists/playlist_id/tracks
GET /v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&limit=3 HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&offset=42&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&offset=42&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&offset=42&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&offset=42&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&offset=42&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?territory=TW&offset=42&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "WpOR92XbaMOw9-5qhi",
      "name": "謎之音 (Confession)",
      "duration": 265691,
      "url": "https://www.kkbox.com/tw/tc/song/JFs00H.4ZH-RiJY8RiJY80XL-index.html",
      "track_number": 1,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "Ol6Nm-x5CCud88oW2-",
        "name": "謎之音 (Confession)",
        "url": "https://www.kkbox.com/tw/tc/album/SkqaUAPZS2gFu0F3Tz3N009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-26",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/58192087,1v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/58192087,1v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/58192087,1v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "0t3qKleq91sO_PChVT",
          "name": "曾沛慈 (Pets Tseng)",
          "url": "https://www.kkbox.com/tw/tc/artist/XPFR3oF3.0Dh890F03rWf08K-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/1013803,0v5/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/1013803,0v5/fit/300x300.jpg"
            }
          ]
        }
      }
    },
    {
      "id": "9-Gl4RJfF6qQ0WU7dr",
      "name": "兩秒終 (2 Seconds)",
      "duration": 220473,
      "url": "https://www.kkbox.com/tw/tc/song/eUb00W15WD-jkBmgjkBmg0XL-index.html",
      "track_number": 3,
      "explicitness": true,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "PavDxuKhDe7LXcxCwo",
        "name": "WHAT A LIFE",
        "url": "https://www.kkbox.com/tw/tc/album/UGQdQ3-uysUVU0F3VCL.009H-index.html",
        "explicitness": true,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-25",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/58508645,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/58508645,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/58508645,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "4pCYG3uv_-WY5d9QYt",
          "name": "周湯豪 (NICKTHEREAL)",
          "url": "https://www.kkbox.com/tw/tc/artist/RMbSPqW5.xeUHFK0F0CqQ08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/52634,0v5/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/52634,0v5/fit/300x300.jpg"
            }
          ]
        }
      }
    },
    {
      "id": "SqrAF0uNV6Obwu2w1w",
      "name": "simple",
      "duration": 169534,
      "url": "https://www.kkbox.com/tw/tc/song/1GX00C3TNH-I6jYOI6jYO0XL-index.html",
      "track_number": 1,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "8pHFTC4cvmYiMRIm5j",
        "name": "simple",
        "url": "https://www.kkbox.com/tw/tc/album/x86rxvWwRBZLO0F3Wagx009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-26",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/58878781,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/58878781,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/58878781,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "8sh6QVl8zbMOksEAKR",
          "name": "葛仲珊 (MISS KO)",
          "url": "https://www.kkbox.com/tw/tc/artist/mjv4v-5-0dn.j5g0F0wVp08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/247797,0v5/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/247797,0v5/fit/300x300.jpg"
            }
          ]
        }
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 3,
    "previous": null,
    "next": "https://api.kkbox.com/v1.1/new-hits-playlists/DZrC8m29ciOFY2JAm3/tracks?limit=3&territory=TW&offset=3"
  },
  "summary": {
    "total": 51
  }
}

Path Params

playlist_id
string
required

The identifier of a new hits playlist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a new hits playlist.

limit
int32

The number of items to return per page, not to exceed 500

offset
int32

The offset index for first element.

 
Suggest Edits

New Release Categories

 

New release categories from the KKBOX service.

Suggest Edits

/new-release-categories

List of new release categories.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/new-release-categories
GET /v1.1/new-release-categories?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/new-release-categories?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/new-release-categories?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/new-release-categories?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/new-release-categories?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/new-release-categories?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/new-release-categories?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "KrdH2LdyUKS8z2aoxX",
      "title": "綜合"
    },
    {
      "id": "Cng5IUIQhxb8w1cbsz",
      "title": "華語"
    },
    {
      "id": "CkgxHJdAgNrEruEDza",
      "title": "西洋"
    },
    {
      "id": "4pVhRTE2XjCwnJfQRn",
      "title": "韓語"
    },
    {
      "id": "-nap5A1iST1A6Ny3ze",
      "title": "日語"
    },
    {
      "id": "1ZQwmFTaLE4p7BG-Ua",
      "title": "台語"
    },
    {
      "id": "GtN6qomUYBvqtWeRP8",
      "title": "粵語"
    },
    {
      "id": "HaGEkt7m7GQpGZOizF",
      "title": "原聲帶"
    },
    {
      "id": "8oroiyJSZINEq8f7Nc",
      "title": "電子"
    },
    {
      "id": "0oiRsbGpPKxymZD1Lg",
      "title": "嘻哈"
    },
    {
      "id": "XZjUObcyRqcInHd62v",
      "title": "R&B"
    },
    {
      "id": "KsOPYl5NAnG7rpnWpe",
      "title": "搖滾"
    },
    {
      "id": "Ksfvcl5NAnG7pjDuca",
      "title": "另類/獨立"
    },
    {
      "id": "Cod1x4lH1l7Y1dhuy4",
      "title": "靈魂樂"
    },
    {
      "id": "LX484KR5HnYUt4luvG",
      "title": "鄉村"
    },
    {
      "id": "0nyjA5B6Bj-8DkdXVI",
      "title": "雷鬼"
    },
    {
      "id": "0pGAIGDf5SqYh_SyHr",
      "title": "藍調歌曲"
    },
    {
      "id": "5YLZUQJX6npjoGcFdr",
      "title": "有聲書/相聲"
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 50,
    "previous": null,
    "next": null
  },
  "summary": {
    "total": 18
  }
}

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a new release category.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

/new-release-categories/:category_id

To retrieve information of the new release category with category_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/new-release-categories/category_id
GET /v1.1/new-release-categories/1ZQwmFTaLE4p7BG-Ua?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "id": "1ZQwmFTaLE4p7BG-Ua",
  "title": "台語",
  "albums": {
    "data": [
      {
        "id": "8tH-BDNMZgqWexd-LS",
        "name": "無你惦身邊 (Long Distance Relationship)",
        "url": "https://www.kkbox.com/tw/tc/album/lf-b9ejuhjUI-0F3V.y2009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-08-01",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/58613634,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/58613634,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/58613634,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "Cr1MGNx2Y7UDAI8Cth",
          "name": "魏嘉榆",
          "url": "https://www.kkbox.com/tw/tc/artist/ERROlu4B5PP6.Y0F0Dngd08K-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/3619625,0v1/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/3619625,0v1/fit/300x300.jpg"
            }
          ]
        }
      },
      {
        "id": "WoJGwjRnYBvu8I7Z8n",
        "name": "咱的膨紗衫",
        "url": "https://www.kkbox.com/tw/tc/album/5HD8jxEsxTljC0F3YlV2009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-31",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/59447234,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/59447234,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/59447234,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "__Zt5ICtv1wl2B0drt",
          "name": "王瑞霞",
          "url": "https://www.kkbox.com/tw/tc/artist/3sTqVU9OIzsit1DU0F0Ns08I-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/1528,0v1/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/1528,0v1/fit/300x300.jpg"
            }
          ]
        }
      },
      {
        "id": "-rACvEbp1XBjKwFpGe",
        "name": "愛到底",
        "url": "https://www.kkbox.com/tw/tc/album/02ZzYbMMivLZy0F3XJoE009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-24",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/59063566,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/59063566,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/59063566,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "9ZvjQ3i6Jj_jLQm727",
          "name": "白冰冰",
          "url": "https://www.kkbox.com/tw/tc/artist/03oq-55HsAIhveH0F01Wv08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/6203,0v1/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/6203,0v1/fit/300x300.jpg"
            }
          ]
        }
      },
      {
        "id": "PYBSkUqmqns_RzyIci",
        "name": "爸爸",
        "url": "https://www.kkbox.com/tw/tc/album/CCMkoa9qqfRKt0F3XG0R009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-24",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/59047963,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/59047963,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/59047963,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "-ptBFzWlb8HCQypwkd",
          "name": "顏千翔",
          "url": "https://www.kkbox.com/tw/tc/artist/OqBCtUOPhyING0F011fbV08L-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/tw/noimg/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/tw/noimg/fit/300x300.jpg"
            }
          ]
        }
      },
      {
        "id": "-nlaaCE4NWEdaOICHN",
        "name": "終愛",
        "url": "https://www.kkbox.com/tw/tc/album/vCV8cstfqZ8eT0F3WnHr009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2019-07-23",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/58930295,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/58930295,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/58930295,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "L_hPERzqgunFPnzaIP",
          "name": "陳采捷 (CAI JIE)",
          "url": "https://www.kkbox.com/tw/tc/artist/f4aHazN.JwiwG0F011-qh08L-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/tw/noimg/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/tw/noimg/fit/300x300.jpg"
            }
          ]
        }
      }
    ],
    "paging": {
      "offset": 0,
      "limit": 5,
      "previous": null,
      "next": null
    },
    "summary": {
      "total": 21
    }
  }
}

Path Params

category_id
string
required

The identifier of a new release category.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a new release category.

 
Suggest Edits

/new-release-categories/:category_id/albums

List of albums of a new release category.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/new-release-categories/category_id/albums
GET /v1.1/new-release-categories/1ZQwmFTaLE4p7BG-Ua/albums?territory=TW&limit=5 HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX/albums?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX/albums?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX/albums?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX/albums?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX/albums?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/new-release-categories/KrdH2LdyUKS8z2aoxX/albums?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "8tH-BDNMZgqWexd-LS",
      "name": "無你惦身邊 (Long Distance Relationship)",
      "url": "https://www.kkbox.com/tw/tc/album/lf-b9ejuhjUI-0F3V.y2009H-index.html",
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "release_date": "2019-08-01",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/global/58613634,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/global/58613634,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/global/58613634,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "Cr1MGNx2Y7UDAI8Cth",
        "name": "魏嘉榆",
        "url": "https://www.kkbox.com/tw/tc/artist/ERROlu4B5PP6.Y0F0Dngd08K-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/global/3619625,0v1/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/global/3619625,0v1/fit/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "WoJGwjRnYBvu8I7Z8n",
      "name": "咱的膨紗衫",
      "url": "https://www.kkbox.com/tw/tc/album/5HD8jxEsxTljC0F3YlV2009H-index.html",
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "release_date": "2019-07-31",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/global/59447234,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/global/59447234,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/global/59447234,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "__Zt5ICtv1wl2B0drt",
        "name": "王瑞霞",
        "url": "https://www.kkbox.com/tw/tc/artist/3sTqVU9OIzsit1DU0F0Ns08I-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/global/1528,0v1/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/global/1528,0v1/fit/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "-rACvEbp1XBjKwFpGe",
      "name": "愛到底",
      "url": "https://www.kkbox.com/tw/tc/album/02ZzYbMMivLZy0F3XJoE009H-index.html",
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "release_date": "2019-07-24",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/global/59063566,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/global/59063566,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/global/59063566,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "9ZvjQ3i6Jj_jLQm727",
        "name": "白冰冰",
        "url": "https://www.kkbox.com/tw/tc/artist/03oq-55HsAIhveH0F01Wv08J-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/global/6203,0v1/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/global/6203,0v1/fit/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "PYBSkUqmqns_RzyIci",
      "name": "爸爸",
      "url": "https://www.kkbox.com/tw/tc/album/CCMkoa9qqfRKt0F3XG0R009H-index.html",
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "release_date": "2019-07-24",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/global/59047963,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/global/59047963,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/global/59047963,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "-ptBFzWlb8HCQypwkd",
        "name": "顏千翔",
        "url": "https://www.kkbox.com/tw/tc/artist/OqBCtUOPhyING0F011fbV08L-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/tw/noimg/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/tw/noimg/fit/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "-nlaaCE4NWEdaOICHN",
      "name": "終愛",
      "url": "https://www.kkbox.com/tw/tc/album/vCV8cstfqZ8eT0F3WnHr009H-index.html",
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "release_date": "2019-07-23",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/global/58930295,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/global/58930295,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/global/58930295,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "L_hPERzqgunFPnzaIP",
        "name": "陳采捷 (CAI JIE)",
        "url": "https://www.kkbox.com/tw/tc/artist/f4aHazN.JwiwG0F011-qh08L-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/tw/noimg/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/tw/noimg/fit/300x300.jpg"
          }
        ]
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 5,
    "previous": null,
    "next": "https://api.kkbox.com/v1.1/new-release-categories/1ZQwmFTaLE4p7BG-Ua/albums?limit=5&territory=TW&offset=5"
  },
  "summary": {
    "total": 21
  }
}

Path Params

category_id
string
required

The identifier of a new release category.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a new release category.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

Featured Playlist Categories

 

The featured playlist categories of the KKBOX service.

Suggest Edits

Featured Playlists

 

Hand-picked and arranged by KKBOX curators.

Suggest Edits

Shared Playlists

 

Playlist shared form KKBOX's users.

Suggest Edits

/shared-playlists/:playlist_id

To retrieve information of the shared playlist with playlist_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/shared-playlists/playlist_id
GET /v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "tracks": {
    "data": [
      {
        "id": "SsJItLYfDXYxalPgtU",
        "name": "這個世界",
        "duration": 240195,
        "url": "https://www.kkbox.com/tw/tc/song/NKl00LGCdYHWnLsZWnLsZ0XL-index.html",
        "track_number": 12,
        "explicitness": false,
        "available_territories": [
          "TW"
        ],
        "album": {
          "id": "CnWnDaRF4d6Z3EgCnv",
          "name": "這個世界 (This World)",
          "url": "https://www.kkbox.com/tw/tc/album/EPWsiNVmD5o7V0F193Zv009H-index.html",
          "explicitness": false,
          "available_territories": [
            "TW"
          ],
          "release_date": "2016-10-12",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/global/19151099,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/global/19151099,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/global/19151099,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "-lm_2ldXI0rBCMeriC",
            "name": "蔡藍欽",
            "url": "https://www.kkbox.com/tw/tc/artist/h-lOMWJF9LIrmo80F01Dn08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/4979,0v1/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/4979,0v1/fit/300x300.jpg"
              }
            ]
          }
        }
      },
      {
        "id": "-kQ0G1lzMveSbRJI1h",
        "name": "這個世界",
        "duration": 268956,
        "url": "https://www.kkbox.com/tw/tc/song/LKT-Nvm0x00w7Y91vH1vH0On-index.html",
        "track_number": 25,
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "album": {
          "id": "KqoKCbzKOnJP4qBEAZ",
          "name": "當我們混在一起 2005 演唱會 Live 全記錄",
          "url": "https://www.kkbox.com/tw/tc/album/.3-abKn7x-jiu1a0FDMp008l-index.html",
          "explicitness": false,
          "available_territories": [
            "TW",
            "HK",
            "SG",
            "MY",
            "JP"
          ],
          "release_date": "2005-05-27",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/tw/54709,0v3/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/tw/54709,0v3/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/tw/54709,0v3/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "9XN-7yg5vg3gYnCdsM",
            "name": "五月天 (Mayday)",
            "url": "https://www.kkbox.com/tw/tc/artist/Tqyk2VnYD3.Md.I0F01bv08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/6651,0v9/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/6651,0v9/fit/300x300.jpg"
              }
            ]
          }
        }
      },
    ],
    "paging": {
      "offset": 0,
      "limit": 100,
      "previous": null,
      "next": null
    },
    "summary": {
      "total": 10
    }
  },
  "id": "4nUZM-TY2aVxZ2xaA-",
  "title": "各種版本的「這個世界」",
  "description": "原來曾經有這麼多人重唱過「你的世界」",
  "url": "https://www.kkbox.com/tw/tc/playlist/4nUZM-TY2aVxZ2xaA-",
  "images": [
    {
      "height": 300,
      "width": 300,
      "url": "https://i.kfs.io/playlist/global/39885447v1/cropresize/300x300.jpg"
    },
    {
      "height": 600,
      "width": 600,
      "url": "https://i.kfs.io/playlist/global/39885447v1/cropresize/600x600.jpg"
    },
    {
      "height": 1000,
      "width": 1000,
      "url": "https://i.kfs.io/playlist/global/39885447v1/cropresize/1000x1000.jpg"
    }
  ],
  "updated_at": "2016-10-18T08:15:09+00:00",
  "owner": {
    "id": "CoiM4s7qXvCTQBLstX",
    "url": "https://www.kkbox.com/tw/profile/CoiM4s7qXvCTQBLstX",
    "name": "澳門首家線上__",
    "description": "http://about.me/honglong",
    "images": [
      {
        "height": 75,
        "width": 75,
        "url": "https://i.kfs.io/muser/global/34836681v2/cropresize/75x75.jpg"
      },
      {
        "height": 180,
        "width": 180,
        "url": "https://i.kfs.io/muser/global/34836681v2/cropresize/180x180.jpg"
      },
      {
        "height": 300,
        "width": 300,
        "url": "https://i.kfs.io/muser/global/34836681v2/cropresize/300x300.jpg"
      }
    ]
  }
}

Path Params

playlist_id
string
required

The identifier of a shared playlist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a shared playlist.

 
Suggest Edits

/shared-playlists/:playlist_id/tracks

List of songs of a shared playlist.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/shared-playlists/playlist_id/tracks
GET /v1.1/shared-playlists/-meJqWeQgu9_xxSLSy-/tracks?territory=TW&limit=3 HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "SsJItLYfDXYxalPgtU",
      "name": "這個世界",
      "duration": 240195,
      "url": "https://www.kkbox.com/tw/tc/song/NKl00LGCdYHWnLsZWnLsZ0XL-index.html",
      "track_number": 12,
      "explicitness": false,
      "available_territories": [
        "TW"
      ],
      "album": {
        "id": "CnWnDaRF4d6Z3EgCnv",
        "name": "這個世界 (This World)",
        "url": "https://www.kkbox.com/tw/tc/album/EPWsiNVmD5o7V0F193Zv009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW"
        ],
        "release_date": "2016-10-12",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/19151099,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/19151099,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/19151099,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "-lm_2ldXI0rBCMeriC",
          "name": "蔡藍欽",
          "url": "https://www.kkbox.com/tw/tc/artist/h-lOMWJF9LIrmo80F01Dn08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/4979,0v1/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/4979,0v1/fit/300x300.jpg"
            }
          ]
        }
      }
    },
    {
      "id": "-kQ0G1lzMveSbRJI1h",
      "name": "這個世界",
      "duration": 268956,
      "url": "https://www.kkbox.com/tw/tc/song/LKT-Nvm0x00w7Y91vH1vH0On-index.html",
      "track_number": 25,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "KqoKCbzKOnJP4qBEAZ",
        "name": "當我們混在一起 2005 演唱會 Live 全記錄",
        "url": "https://www.kkbox.com/tw/tc/album/.3-abKn7x-jiu1a0FDMp008l-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2005-05-27",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/tw/54709,0v3/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/tw/54709,0v3/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/tw/54709,0v3/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "9XN-7yg5vg3gYnCdsM",
          "name": "五月天 (Mayday)",
          "url": "https://www.kkbox.com/tw/tc/artist/Tqyk2VnYD3.Md.I0F01bv08J-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/6651,0v9/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/6651,0v9/fit/300x300.jpg"
            }
          ]
        }
      }
    },
    {
      "id": "0oVpLhDXhv4OSjm_fJ",
      "name": "這個世界",
      "duration": 234370,
      "url": "https://www.kkbox.com/tw/tc/song/erPcI2o01.aG47W547W540P4-index.html",
      "track_number": 6,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "__v-2rnU8IHVqOOmz9",
        "name": "黃鶯鶯搖籃曲",
        "url": "https://www.kkbox.com/tw/tc/album/LBvK2LMIsY7XwR0F1LyF0091-index.html",
        "explicitness": false,
        "available_territories": [
          "HK",
          "MY",
          "JP",
          "TW",
          "SG"
        ],
        "release_date": "2012-07-02",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/tw/352143,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/tw/352143,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/tw/352143,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "GsuNkAHedyFlIFnpAU",
          "name": "黃鶯鶯 (Tracy Huang)",
          "url": "https://www.kkbox.com/tw/tc/artist/Pu.C.nO1c58lTBej0F05f08I-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/363,0v1/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/363,0v1/fit/300x300.jpg"
            }
          ]
        }
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 3,
    "previous": null,
    "next": "https://api.kkbox.com/v1.1/shared-playlists/4nUZM-TY2aVxZ2xaA-/tracks?limit=3&territory=TW&offset=3"
  },
  "summary": {
    "total": 10
  }
}

Path Params

playlist_id
string
required

The identifier of a shared playlist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a shared playlist.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

Genre Stations

 

The genre stations of the KKBOX service.

Suggest Edits

/genre-stations

List of genre stations.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/genre-stations
GET /v1.1/genre-stations?territory=TW&limit=10 HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/genre-stations?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/genre-stations?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/genre-stations?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/genre-stations?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/genre-stations?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/genre-stations?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "TYq3EHFTl-1EOvJM5Y",
      "category": "Mandarin",
      "name": "Mandarin New Release"
    },
    {
      "id": "SrGnPsRNdLGo2-QD4_",
      "category": "Mandarin",
      "name": "Mandopop Male"
    },
    {
      "id": "KmH_kXscZ40s9YgvHo",
      "category": "Mandarin",
      "name": "Mandopop Female"
    },
    {
      "id": "WoqzVWL-LKrtawiYGT",
      "category": "Mandarin",
      "name": "Mandopop Group"
    },
    {
      "id": "DZFgBL_02ygfJq12I0",
      "category": "Mandarin",
      "name": "Mandopop Duet"
    },
    {
      "id": "Wmm-aBHQWjQ0swnWFc",
      "category": "Mandarin",
      "name": "Mandopop Idol"
    },
    {
      "id": "CrUb2t-gr2k6sxUxH5",
      "category": "Mandarin",
      "name": "Love Song"
    },
    {
      "id": "OlKxmKz5tfab39jlx_",
      "category": "Mandarin",
      "name": "Karaoke Hits"
    },
    {
      "id": "LaN6zM2q9ZeLxC790i",
      "category": "Mandarin",
      "name": "Golden Melody Award Winner"
    },
    {
      "id": "Wmn-aBHQWjQ0vtJ5mX",
      "category": "Mandarin",
      "name": "Mandarin Film & TV Songs"
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 10,
    "previous": null,
    "next": "https://api.kkbox.com/v1.1/genre-stations?limit=10&territory=TW&offset=10"
  },
  "summary": {
    "total": 188
  }
}

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a genre station.

 
Suggest Edits

/genre-stations/:station_id

To retrieve information of the genre station with station_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/genre-stations/station_id
GET /v1.1/genre-stations/9ax4APKMtg7NqOqhNp?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/genre-stations/TYq3EHFTl-1EOvJM5Y?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "id": "9ax4APKMtg7NqOqhNp",
  "category": "Hokkien",
  "name": "Classic Hokkien Duet",
  "tracks": {
    "data": [
      {
        "id": "Hatg1yFFE8K3YEuzH4",
        "name": "無人來作伴",
        "duration": 236773,
        "url": "https://www.kkbox.com/tw/tc/song/Lwqxf1pKO424W52M4W52M0PL-index.html",
        "track_number": 9,
        "explicitness": false,
        "available_territories": [
          "TW"
        ],
        "album": {
          "id": "9Z8fmhgn_BzuOzEEta",
          "name": "男性的堅持-精選集",
          "url": "https://www.kkbox.com/tw/tc/album/RJYE1yzo3dF2Dh0F7M9q0091-index.html",
          "explicitness": false,
          "available_territories": [
            "TW"
          ],
          "release_date": "2010-04-26",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/tw/1925750,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/tw/1925750,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/tw/1925750,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "5X4ebVHk-xgqdNMH5b",
            "name": "翁立友",
            "url": "https://www.kkbox.com/tw/tc/artist/vVCqxCo08XWxw9w0F09hP08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/39769,0v1/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/39769,0v1/fit/300x300.jpg"
              }
            ]
          }
        }
      },
      {
        "id": "Kq2tpviB3UapG1sNLm",
        "name": "心愛請保重",
        "duration": 334576,
        "url": "https://www.kkbox.com/tw/tc/song/S25EH7L06YK9nQJB1QJB10P4-index.html",
        "track_number": 1,
        "explicitness": false,
        "available_territories": [
          "TW"
        ],
        "album": {
          "id": "8pBN1E4svmYiPQ12SJ",
          "name": "心愛請保重",
          "url": "https://www.kkbox.com/tw/tc/album/UnjfyLMk8HwPn40F1E8.0091-index.html",
          "explicitness": false,
          "available_territories": [
            "TW"
          ],
          "release_date": "1999-08-04",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/tw/320037,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/tw/320037,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/tw/320037,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "GqW_sKigyaDAkjTMdC",
            "name": "林良歡+許志豪",
            "url": "https://www.kkbox.com/tw/tc/artist/RhHCf7Xb5hNFlBG0F0lEG08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/201616,0v2/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/201616,0v2/fit/300x300.jpg"
              }
            ]
          }
        }
      }
    ],
    "paging": {
      "offset": 0,
      "limit": 100,
      "previous": null,
      "next": null
    },
    "summary": {
      "total": 100
    }
  }
}

Path Params

station_id
string
required

The identifier of a genre station.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a genre station.

 
Suggest Edits

Mood Stations

 

The mood stations of the KKBOX service.

Suggest Edits

/mood-stations

List of mood stations.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/mood-stations
GET /v1.1/mood-stations?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/mood-stations?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/mood-stations?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/mood-stations?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/mood-stations?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/mood-stations?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/mood-stations?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "StGZp2ToWq92diPHS7",
      "name": "Work Out",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_616.png"
        }
      ]
    },
    {
      "id": "CqKi7kny7nlTW42w5M",
      "name": "Party Animal",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_617.png"
        }
      ]
    },
    {
      "id": "CmJ_Y5mRTWygkTXsYl",
      "name": "Relaxing",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_618.png"
        }
      ]
    },
    {
      "id": "TZZ4fMCHdJNYqHEf-p",
      "name": "Working Time",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_619.png"
        }
      ]
    },
    {
      "id": "4tmrBI125HMtMlO9OF",
      "name": "Romantic",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_620.png"
        }
      ]
    },
    {
      "id": "8oxjHzAAeM8PU8KCw5",
      "name": "Vacation",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_621.png"
        }
      ]
    },
    {
      "id": "HXvnvb5yEReQJAiNMB",
      "name": "Chill Out",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_622.png"
        }
      ]
    },
    {
      "id": "9anYIPKMtg7NqGbiy4",
      "name": "Tipsy Night",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_623.png"
        }
      ]
    },
    {
      "id": "-msVbZnpWLE4CpWBJo",
      "name": "Acoustic Pop",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_624.png"
        }
      ]
    },
    {
      "id": "OkN0EhmweNQdIEGkor",
      "name": "Hardcore",
      "images": [
        {
          "height": 300,
          "width": 300,
          "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_625.png"
        }
      ]
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 50,
    "previous": null,
    "next": null
  },
  "summary": {
    "total": 10
  }
}

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a mood station.

 
Suggest Edits

/mood-stations/:station_id

To retrieve information of the mood station with station_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/mood-stations/station_id
GET /v1.1/mood-stations/-msVbZnpWLE4CpWBJo?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/mood-stations/StGZp2ToWq92diPHS7?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/mood-stations/StGZp2ToWq92diPHS7?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/mood-stations/StGZp2ToWq92diPHS7?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/mood-stations/StGZp2ToWq92diPHS7?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/mood-stations/StGZp2ToWq92diPHS7?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/mood-stations/StGZp2ToWq92diPHS7?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "id": "-msVbZnpWLE4CpWBJo",
  "name": "Acoustic Pop",
  "images": [
    {
      "height": 300,
      "width": 300,
      "url": "https://a.kfs.io/banner/theme-channel/grey_center/channel_624.png"
    }
  ],
  "tracks": {
    "data": [
      {
        "id": "X_vP1g2OxGbE4W_ZX_",
        "name": "My Old Man",
        "duration": 227239,
        "url": "https://www.kkbox.com/tw/tc/song/utF008r8GXIE8sn-E8sn-0XL-index.html",
        "track_number": 6,
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "album": {
          "id": "-oz-uw1c2jy1yqD_W-",
          "name": "Welcome Home",
          "url": "https://www.kkbox.com/tw/tc/album/-LhtthFQXO6cB0F1X6D1009H-index.html",
          "explicitness": false,
          "available_territories": [
            "TW",
            "HK",
            "SG",
            "MY",
            "JP"
          ],
          "release_date": "2017-05-12",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/global/25453377,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/global/25453377,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/global/25453377,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "WtnyvdUWvn57W7ybDj",
            "name": "Zac Brown Band",
            "url": "https://www.kkbox.com/tw/tc/artist/jgq675QS4wfTv6C0F096008J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/37248,0v21/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/37248,0v21/fit/300x300.jpg"
              }
            ]
          }
        }
      },
      {
        "id": "OkiEzeWHwySdIfx6Cn",
        "name": "繼續",
        "duration": 236982,
        "url": "https://www.kkbox.com/tw/tc/song/FlwuVj504O6D2H-a6H-a60P4-index.html",
        "track_number": 6,
        "explicitness": false,
        "available_territories": [
          "TW"
        ],
        "album": {
          "id": "WnZObdD3UikGiIHCzY",
          "name": "從這裡到那裡",
          "url": "https://www.kkbox.com/tw/tc/album/Ozptj15BvzZmpM30Fh9F008l-index.html",
          "explicitness": false,
          "available_territories": [
            "TW"
          ],
          "release_date": "2011-03-31",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/album/tw/184911,0v1/fit/160x160.jpg"
            },
            {
              "height": 500,
              "width": 500,
              "url": "https://i.kfs.io/album/tw/184911,0v1/fit/500x500.jpg"
            },
            {
              "height": 1000,
              "width": 1000,
              "url": "https://i.kfs.io/album/tw/184911,0v1/fit/1000x1000.jpg"
            }
          ],
          "artist": {
            "id": "OlYY5KsPZGERMxx2ZV",
            "name": "宇珩",
            "url": "https://www.kkbox.com/tw/tc/artist/7Rd9GlEUHTMhzXk0F0FMA08J-index-1.html",
            "images": [
              {
                "height": 160,
                "width": 160,
                "url": "https://i.kfs.io/artist/global/62858,0v1/fit/160x160.jpg"
              },
              {
                "height": 300,
                "width": 300,
                "url": "https://i.kfs.io/artist/global/62858,0v1/fit/300x300.jpg"
              }
            ]
          }
        }
      }
    ],
    "paging": {
      "offset": 0,
      "limit": 100,
      "previous": null,
      "next": null
    },
    "summary": {
      "total": 100
    }
  }
}

Path Params

station_id
string
required

The identifier of a mood station.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a mood station.

 
 
Suggest Edits

/artists/:artist_id

To retrieve information of the artist with artist_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/artists/artist_id
GET /v1.1/artists/8q3_xzjl89Yakn_7GB?territory=TW HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/artists/foo?territory=foo")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/artists/foo?territory=foo",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/artists/foo?territory=foo", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/artists/foo?territory=foo",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/artists/foo?territory=foo"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/artists/foo?territory=foo"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/artists/foo?territory=foo' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "id": "8q3_xzjl89Yakn_7GB",
  "name": "滅火器 (Fire EX.)",
  "url": "https://www.kkbox.com/tw/tc/artist/ozHoLIy-jPvlc1P0F06Sb08J-index-1.html",
  "images": [
    {
      "height": 160,
      "width": 160,
      "url": "https://i.kfs.io/artist/global/26407,0v5/fit/160x160.jpg"
    },
    {
      "height": 300,
      "width": 300,
      "url": "https://i.kfs.io/artist/global/26407,0v5/fit/300x300.jpg"
    }
  ]
}

Path Params

artist_id
string
required

The identifier of an artist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of an artist.

 
Suggest Edits

/artists/:artist_id/albums

List of albums of an artist.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/artists/artist_id/albums
GET /v1.1/artists/CluDKLYxr1GFQqLSZt/albums?territory=TW&limit=5 HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/albums?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/artists/Cnv_K6i5Ft4y41SxLy/albums?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/artists/Cnv_K6i5Ft4y41SxLy/albums?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/albums?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/albums?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/albums?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "OrZNXB5eLG7iPlkRfm",
      "name": "The Art of The Ballad",
      "url": "https://www.kkbox.com/tw/tc/album/4nCmXeytdESd4Hu0F7uA008l-index.html",
      "explicitness": false,
      "available_territories": [],
      "release_date": "1970-01-01",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/tw/32394,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/tw/32394,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/tw/32394,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "CluDKLYxr1GFQqLSZt",
        "name": "Dexter Gordon",
        "url": "https://www.kkbox.com/tw/tc/artist/DbKJdlxk96b0RAy0F017308J-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/global/4547,0v551/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/global/4547,0v551/fit/300x300.jpg"
          }
        ]
      }
    },
    {
      "id": "4mPUAQFE2kVG4kRaM8",
      "name": "Sophisticated Giant",
      "url": "https://www.kkbox.com/tw/tc/album/fhVSzO-E41SO6xx0FE67008l-index.html",
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY"
      ],
      "release_date": "1997-08-26",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/album/tw/57735,0v1/fit/160x160.jpg"
        },
        {
          "height": 500,
          "width": 500,
          "url": "https://i.kfs.io/album/tw/57735,0v1/fit/500x500.jpg"
        },
        {
          "height": 1000,
          "width": 1000,
          "url": "https://i.kfs.io/album/tw/57735,0v1/fit/1000x1000.jpg"
        }
      ],
      "artist": {
        "id": "CluDKLYxr1GFQqLSZt",
        "name": "Dexter Gordon",
        "url": "https://www.kkbox.com/tw/tc/artist/DbKJdlxk96b0RAy0F017308J-index-1.html",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/artist/global/4547,0v551/fit/160x160.jpg"
          },
          {
            "height": 300,
            "width": 300,
            "url": "https://i.kfs.io/artist/global/4547,0v551/fit/300x300.jpg"
          }
        ]
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 2,
    "previous": null,
    "next": "https://api.kkbox.com/v1.1/artists/CluDKLYxr1GFQqLSZt/albums?limit=2&territory=TW&offset=2"
  },
  "summary": {
    "total": 801
  }
}

Path Params

artist_id
string
required

The identifier of an artist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of an artist.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

/artists/:artist_id/top-tracks

List of top tracks of an artist.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/artists/artist_id/top-tracks
GET /v1.1/artists/GmHEVs8n1D6m6pz6zC/top-tracks?territory=TW&limit=5 HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/top-tracks?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/artists/Cnv_K6i5Ft4y41SxLy/top-tracks?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/artists/Cnv_K6i5Ft4y41SxLy/top-tracks?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/top-tracks?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/top-tracks?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/artists/Cnv_K6i5Ft4y41SxLy/top-tracks?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "Pac1gYzqWKr81wzSsi",
      "name": "天空下",
      "duration": 210755,
      "url": "https://www.kkbox.com/tw/tc/song/44-00Hl.maHS8RlzS8Rlz0XL-index.html",
      "track_number": 1,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY",
        "JP"
      ],
      "album": {
        "id": "_-5I-tcxQDQcUrHUwo",
        "name": "天空下 (Under the Same Sky)",
        "url": "https://www.kkbox.com/tw/tc/album/rxnG8TIB1Pyfc0F19Bt9009H-index.html",
        "explicitness": false,
        "available_territories": [
          "TW",
          "HK",
          "SG",
          "MY",
          "JP"
        ],
        "release_date": "2016-10-17",
        "images": [
          {
            "height": 160,
            "width": 160,
            "url": "https://i.kfs.io/album/global/19185225,0v1/fit/160x160.jpg"
          },
          {
            "height": 500,
            "width": 500,
            "url": "https://i.kfs.io/album/global/19185225,0v1/fit/500x500.jpg"
          },
          {
            "height": 1000,
            "width": 1000,
            "url": "https://i.kfs.io/album/global/19185225,0v1/fit/1000x1000.jpg"
          }
        ],
        "artist": {
          "id": "GmHEVs8n1D6m6pz6zC",
          "name": "盧芸 (Rita)",
          "url": "https://www.kkbox.com/tw/tc/artist/ET7BOpmsnU-TAw0F0Pcw708K-index-1.html",
          "images": [
            {
              "height": 160,
              "width": 160,
              "url": "https://i.kfs.io/artist/global/6721287,0v2/fit/160x160.jpg"
            },
            {
              "height": 300,
              "width": 300,
              "url": "https://i.kfs.io/artist/global/6721287,0v2/fit/300x300.jpg"
            }
          ]
        }
      }
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 3,
    "previous": null,
    "next": null
  },
  "summary": {
    "total": 1
  }
}

Path Params

artist_id
string
required

The identifier of an artist.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of an artist.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

/albums/:album_id

To retrieve information of the album with album_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/albums/album_id
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/albums/KmRKnW5qmUrTnGRuxF?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/albums/KmRKnW5qmUrTnGRuxF?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "id": "KmRKnW5qmUrTnGRuxF",
  "name": "FLASH",
  "url": "https://www.kkbox.com/tw/tc/album/FFOEbmkriZ-HMo0FqNnk0091-index.html",
  "explicitness": false,
  "available_territories": [
    "TW",
    "HK",
    "SG",
    "MY"
  ],
  "release_date": "2016-03-16",
  "images": [
    {
      "height": 160,
      "width": 160,
      "url": "https://i.kfs.io/album/global/14253296,0v1/fit/160x160.jpg"
    },
    {
      "height": 500,
      "width": 500,
      "url": "https://i.kfs.io/album/global/14253296,0v1/fit/500x500.jpg"
    },
    {
      "height": 1000,
      "width": 1000,
      "url": "https://i.kfs.io/album/global/14253296,0v1/fit/1000x1000.jpg"
    }
  ],
  "artist": {
    "id": "Cnv_K6i5Ft4y41SxLy",
    "name": "Perfume",
    "url": "https://www.kkbox.com/tw/tc/artist/-58YcxY7FdfNn.O0F0mWT08J-index-1.html",
    "images": [
      {
        "height": 160,
        "width": 160,
        "url": "https://i.kfs.io/artist/global/206877,0v22/fit/160x160.jpg"
      },
      {
        "height": 300,
        "width": 300,
        "url": "https://i.kfs.io/artist/global/206877,0v22/fit/300x300.jpg"
      }
    ]
  }
}

Path Params

album_id
string
required

The identifier of an album.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of an album.

 
Suggest Edits

/albums/:album_id/tracks

List of tracks of an album.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/albums/album_id/tracks
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF/tracks?territory=TW&offset=0&limit=500' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF/tracks?territory=TW&offset=0&limit=500")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/albums/KmRKnW5qmUrTnGRuxF/tracks?territory=TW&offset=0&limit=500",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/albums/KmRKnW5qmUrTnGRuxF/tracks?territory=TW&offset=0&limit=500", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF/tracks?territory=TW&offset=0&limit=500",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/albums/KmRKnW5qmUrTnGRuxF/tracks?territory=TW&offset=0&limit=500"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": [
    {
      "id": "KpnEGVHEsGgkoB0MBk",
      "name": "FLASH",
      "duration": 276224,
      "url": "https://www.kkbox.com/tw/tc/song/F0A00TI1X.1gosrpgosrp0XL-index.html",
      "track_number": 1,
      "explicitness": false,
      "available_territories": [
        "TW",
        "HK",
        "SG",
        "MY"
      ]
    }
  ],
  "paging": {
    "offset": 0,
    "limit": 500,
    "previous": null,
    "next": null
  },
  "summary": {
    "total": 1
  }
}

Path Params

album_id
string
required

The identifier of an album.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of an album.

limit
int32

The number of items to return per page, not to exceed 500.

offset
int32

The offset index for first element.

 
Suggest Edits

/tracks/:track_id

To retrieve information of the song with track_id.

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/tracks/track_id
curl --request GET \
  --url 'https://api.kkbox.com/v1.1/tracks/4kxvr3wPWkaL9_y3o_?territory=TW' \
  --header 'accept: application/json' \
  --header 'authorization: Bearer YOUR ACCESS TOKEN HERE'
require 'uri'
require 'net/http'

url = URI("https://api.kkbox.com/v1.1/tracks/4kxvr3wPWkaL9_y3o_?territory=TW")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["accept"] = 'application/json'
request["authorization"] = 'Bearer YOUR ACCESS TOKEN HERE'

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "GET",
  "hostname": "api.kkbox.com",
  "port": null,
  "path": "/v1.1/tracks/4kxvr3wPWkaL9_y3o_?territory=TW",
  "headers": {
    "accept": "application/json",
    "authorization": "Bearer YOUR ACCESS TOKEN HERE"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();
import http.client

conn = http.client.HTTPSConnection("api.kkbox.com")

headers = {
    'accept': "application/json",
    'authorization': "Bearer YOUR ACCESS TOKEN HERE"
    }

conn.request("GET", "/v1.1/tracks/4kxvr3wPWkaL9_y3o_?territory=TW", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.kkbox.com/v1.1/tracks/4kxvr3wPWkaL9_y3o_?territory=TW",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization: Bearer YOUR ACCESS TOKEN HERE"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.kkbox.com/v1.1/tracks/4kxvr3wPWkaL9_y3o_?territory=TW"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("accept", "application/json")
    req.Header.Add("authorization", "Bearer YOUR ACCESS TOKEN HERE")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "id": "4kxvr3wPWkaL9_y3o_",
  "name": "島嶼天光",
  "duration": 260493,
  "url": "https://www.kkbox.com/tw/tc/song/My5LTon3mEKTZ98eB98eB0P4-index.html",
  "track_number": 1,
  "explicitness": false,
  "available_territories": [
    "TW",
    "HK",
    "SG",
    "MY",
    "JP"
  ],
  "album": {
    "id": "WpTPGzNLeutVFHcFq6",
    "name": "島嶼天光",
    "url": "https://www.kkbox.com/tw/tc/album/Y4g5iyr9pCLRtx0FE5pr0091-index.html",
    "explicitness": false,
    "available_territories": [
      "TW",
      "HK",
      "SG",
      "MY",
      "JP"
    ],
    "release_date": "2014-03-28",
    "images": [
      {
        "height": 160,
        "width": 160,
        "url": "https://i.kfs.io/album/tw/3693943,0v1/fit/160x160.jpg"
      },
      {
        "height": 500,
        "width": 500,
        "url": "https://i.kfs.io/album/tw/3693943,0v1/fit/500x500.jpg"
      },
      {
        "height": 1000,
        "width": 1000,
        "url": "https://i.kfs.io/album/tw/3693943,0v1/fit/1000x1000.jpg"
      }
    ],
    "artist": {
      "id": "8q3_xzjl89Yakn_7GB",
      "name": "滅火器 (Fire EX.)",
      "url": "https://www.kkbox.com/tw/tc/artist/ozHoLIy-jPvlc1P0F06Sb08J-index-1.html",
      "images": [
        {
          "height": 160,
          "width": 160,
          "url": "https://i.kfs.io/artist/global/26407,0v5/fit/160x160.jpg"
        },
        {
          "height": 300,
          "width": 300,
          "url": "https://i.kfs.io/artist/global/26407,0v5/fit/300x300.jpg"
        }
      ]
    }
  }
}
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "error": {
        "code": 0,
        "message": "Invalid Territory"
    }
}
{
  "error": {
    "message": "Invalid Authentication",
    "code": 0
  }
}

Path Params

track_id
string
required

The identifier of a track.

Query Params

territory
string
required

Territory code, i.e. TW, HK, SG, MY, JP, of a song.

 
Suggest Edits

/users/:user_id

Get user's profile

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://api.kkbox.com/v1.1/users/user_id
GET /v1.1/users/CoiM4s7qXvCTQBLstX HTTP/1.1
Authorization: Bearer my_access_token
Host: api.kkbox.com
A binary file was returned

Your OAuth2 token is incorrect or has expired