bash python php javascript

auth/code

Issuing a verification code (POST)

The user authentication process proceeds in the order of: 1) Authentication request > 2) Verification code issuance > 3) Token issuance > 4) Authentication complete.

Verification code issuance can be requested in two ways: GET or POST.

(Refer to the section below for GET.)

When requesting via POST, the required parameters are client_id, auth_type, and certification_number (SOOP mobile app > My Info > Certification Number). Upon return, the verification code is issued in the JSON field named code.


Requires authentication

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/auth/code" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'client_id=ae1d3e4XXXXXXX&auth_type=api&certification_number=111111'
import requests
import json

url = 'https://openapi.sooplive.co.kr/auth/code'
data = {
    "client_id": "ae1d3e4XXXXXXX",
    "auth_type": "api",
    "certification_number": 111111
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/auth/code',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'client_id' => 'ae1d3e4XXXXXXX',
            'auth_type' => 'api',
            'certification_number' => 111111,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/auth/code"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "client_id": "ae1d3e4XXXXXXX",
    "auth_type": "api",
    "certification_number": 111111
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "code": "34197c7e4XXXXXXXX"
}

HTTP Request

POST auth/code

Body Parameters

Parameter Type Status Description
client_id string required This is the client ID.(It can be checked in Developers > My Account.)
auth_type string optional This is the required type when calling via POST.(Fixed to "api".)
certification_number integer optional This is the 6-digit authentication number that replaces login when calling via POST. (It can be checked in the mobile app.)

Response Parameters

Parameter Type Description
code string This is the verification code required for token issuance.

Issuing a verification code (GET)

The user authentication process proceeds in the order of: 1) Authentication request > 2) Verification code issuance > 3) Token issuance > 4) Authentication complete.

Verification code issuance can be requested in two ways: GET or POST.

When requesting via GET, a pre-configured Redirect URI is required. (You can check/modify it in Developers > My Account Management.)

The request parameter is client_id.

If the user is not logged in, they are redirected to the login page. After login, the verification code is issued via the code variable in the Redirect URI.


Requires authentication

Example request:

curl -X GET \
    -G "https://openapi.sooplive.co.kr/auth/code?client_id=ae1d3e4XXXXXXX" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*"
import requests

url = 'https://openapi.sooplive.co.kr/auth/code'
params = {
  'client_id': 'ae1d3e4XXXXXXX'
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://openapi.sooplive.co.kr/auth/code',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'query' => [
            'client_id' => 'ae1d3e4XXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/auth/code"
);

let params = {
    "client_id": "ae1d3e4XXXXXXX",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

fetch(url, {
    method: "GET",
    headers: headers,
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

https://sooplive.co.kr?code=34197c7e4XXXXXXXX

HTTP Request

GET auth/code

Query Parameters

Parameter Status Description
client_id required This is the client ID.(It can be checked in Developers > My Account.)

Response Parameters

Parameter Type Description
code string This is the verification code required for token issuance.

auth/token

Token issuance / re-issuance

After verification code issuance, the returned code value is used to issue or reissue a token (an encrypted unique value containing user information).

If the token has expired, re-issuance requires calling the previous refresh_token (re-authentication token) from the prior token issuance.

The code used for token issuance is one-time only and cannot be reused.

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/auth/token" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'grant_type=authorization_code&client_id=ae1d3e4XXXXXXX&client_secret=dafgc12fvXXXXXXX&redirect_uri=https://sooplive.co.kr&code=cfacf4bXXXXXXX&refresh_token=78d3acb626dXXXXXXX'
import requests
import json

url = 'https://openapi.sooplive.co.kr/auth/token'
data = {
    "grant_type": "authorization_code",
    "client_id": "ae1d3e4XXXXXXX",
    "client_secret": "dafgc12fvXXXXXXX",
    "redirect_uri": "https://sooplive.co.kr",
    "code": "cfacf4bXXXXXXX",
    "refresh_token": "78d3acb626dXXXXXXX"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/auth/token',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'grant_type' => 'authorization_code',
            'client_id' => 'ae1d3e4XXXXXXX',
            'client_secret' => 'dafgc12fvXXXXXXX',
            'redirect_uri' => 'https://sooplive.co.kr',
            'code' => 'cfacf4bXXXXXXX',
            'refresh_token' => '78d3acb626dXXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/auth/token"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "grant_type": "authorization_code",
    "client_id": "ae1d3e4XXXXXXX",
    "client_secret": "dafgc12fvXXXXXXX",
    "redirect_uri": "https://sooplive.co.kr",
    "code": "cfacf4bXXXXXXX",
    "refresh_token": "78d3acb626dXXXXXXX"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "access_token": "a3b2d88XXXXXXXX",
    "expires_in": 28800,
    "token_type": "Bearer",
    "scope": null,
    "refresh_token": "a924bfXXXXXXXX"
}

HTTP Request

POST auth/token

Body Parameters

Parameter Type Status Description
grant_type string required This is the code issuance type.
**For token issuance, grant_type must be authorization_code. For token re-issuance, it must be refresh_token.
client_id string required This is the client ID.(It can be checked in Developers > My Account.)
client_secret string required This is the client secret key.(It can be checked in Developers > My Account.)
redirect_uri string optional This is the callback URL.(It can be checked in Developers > My Account.)
It must be URL-encoded.
code string required This is the verification code from auth/code, and is only used at the time of issuance.
refresh_token string required This is the refresh token held at the time of token issuance (the refresh_token returned during token issuance).
Used only for re-issuance.

Response Parameters

Parameter Type Description
access_token string Token(This is a unique encrypted value containing user information.)
expires_in integer This is the token expiration time.(Unit: seconds)
token_type string This is the token type.(“Bearer” Fixed)
scope string This is the open API scope available for this token. Each client application has different permissions.
refresh_token string This is the re-authentication token required when reissuing a token.

broad/rtmp

Basic broadcast streaming setup

To stream a broadcast, a custom RTMP (external device) connection is required.

The RTMP URL and stream key for SOOP streaming are provided.

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/broad/rtmp" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'platform_type=SOOP&access_token=ae1d3e4XXXXXXX'
import requests
import json

url = 'https://openapi.sooplive.co.kr/broad/rtmp'
data = {
    "platform_type": "SOOP",
    "access_token": "ae1d3e4XXXXXXX"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/broad/rtmp',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'platform_type' => 'SOOP',
            'access_token' => 'ae1d3e4XXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/broad/rtmp"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "platform_type": "SOOP",
    "access_token": "ae1d3e4XXXXXXX"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "result": 1,
    "msg": "Success",
    "data": {
        "rtmp": "rtmp://stream.sooplive.co.kr/app/",
        "key": "afid-1234567",
        "data": {
            "title": "nickname`s SOOP stream",
            "category": "00000000",
            "language": "ko_KR",
            "allowed_view_cnt": 100000,
            "is_password": 0,
            "broad_hidden": 0,
            "broad_grade": 0,
            "hashtags": "",
            "broad_ending_msg": "",
            "is_wait": 0,
            "waiting_time": 10,
            "water_mark": 1,
            "broad_tune_out": 1,
            "paid_promotion": 0
        }
    }
}

HTTP Request

POST broad/rtmp

Body Parameters

Parameter Type Status Description
platform_type string required This is the partner company name.
access_token string required This is the token value.

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.
data array This is an array containing RTMP information.
rtmp string This is the RTMP URL.
key string This is the stream key.
info array This is an array containing RTMP user registration information.
title string This is the broadcast title.
category string This is the broadcast category number.
language string This is the broadcast language.
allowed_view_cnt integer This sets the maximum number of viewers allowed during broadcast.
is_password integer This is the broadcast password setting option.(0:Not set, 1:Set)
broad_hidden integer This sets whether the broadcast is hidden in the list.(0:Visible, 1:Hidden)
broad_grade integer This is the broadcast rating.(19:Age-restricted broadcast, 0:General broadcast)
hashtags string These are the hashtags provided during broadcast.
broad_ending_msg string This is the automatic greeting message displayed at the end of the broadcast.
is_wait string This is the standby mode setting.(0:Disabled, 1:Set)
waiting_time integer This is the standby duration.
water_mark integer This is the 19-indicator/lock icon position.
(1:Top left, 2:Top center, 3:Top right, 4:Bottom left, 5:Bottom center, 6:Bottom right)
broad_tune_out integer This determines whether to display the expedition/visitation notice during broadcast.(0:Exploration allowed, 1:Exploration denied)
paid_promotion integer This determines whether paid advertising is included in the broadcast.(0:Not included, 1:Included)

broad/info/update

Broadcast streaming information update

You can change broadcast-related settings such as title, category, attributes (password, list visibility, rating), viewer capacity, hashtags, and end-of-broadcast greeting.

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/broad/info/update" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'access_token=ae1d3e4XXXXXXX&title=nickname`s SOOP Stream&category=40066&language=ipsum&allowed_view_cnt=100000&broad_pwd_chk=1&broad_pwd=pass12&broad_hidden=0&broad_tune_out=0&paid_promotion=0&broad_grade=0&hashtags=게임, 배틀그라운드, 배그&broad_ending_msg=see you again~!&is_wait=1&waiting_time=10&water_mark=1'
import requests
import json

url = 'https://openapi.sooplive.co.kr/broad/info/update'
data = {
    "access_token": "ae1d3e4XXXXXXX",
    "title": "nickname`s SOOP Stream",
    "category": 40066,
    "language": "ipsum",
    "allowed_view_cnt": 100000,
    "broad_pwd_chk": 1,
    "broad_pwd": "pass12",
    "broad_hidden": 0,
    "broad_tune_out": 0,
    "paid_promotion": 0,
    "broad_grade": 0,
    "hashtags": "게임, 배틀그라운드, 배그",
    "broad_ending_msg": "see you again~!",
    "is_wait": "1",
    "waiting_time": 10,
    "water_mark": "1"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/broad/info/update',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'access_token' => 'ae1d3e4XXXXXXX',
            'title' => 'nickname`s SOOP Stream',
            'category' => 40066,
            'language' => 'ipsum',
            'allowed_view_cnt' => 100000,
            'broad_pwd_chk' => 1,
            'broad_pwd' => 'pass12',
            'broad_hidden' => 0,
            'broad_tune_out' => 0,
            'paid_promotion' => 0,
            'broad_grade' => 0,
            'hashtags' => '게임, 배틀그라운드, 배그',
            'broad_ending_msg' => 'see you again~!',
            'is_wait' => '1',
            'waiting_time' => 10,
            'water_mark' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/broad/info/update"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "access_token": "ae1d3e4XXXXXXX",
    "title": "nickname`s SOOP Stream",
    "category": 40066,
    "language": "ipsum",
    "allowed_view_cnt": 100000,
    "broad_pwd_chk": 1,
    "broad_pwd": "pass12",
    "broad_hidden": 0,
    "broad_tune_out": 0,
    "paid_promotion": 0,
    "broad_grade": 0,
    "hashtags": "게임, 배틀그라운드, 배그",
    "broad_ending_msg": "see you again~!",
    "is_wait": "1",
    "waiting_time": 10,
    "water_mark": "1"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "result": 1,
    "msg": "Broadcast information change processed successfully."
}

Example response (200):

{
    "result": -1320,
    "msg": "The broadcast standby time setting is incorrect.(515)"
}

HTTP Request

POST broad/info/update

Body Parameters

Parameter Type Status Description
access_token string required This is the token value.
title string optional This is the broadcast title.
*Up to 75 characters can be entered.
category integer optional This is the broadcast category number.
*For the category list, refer to the “Category List” section at the bottom of this guide.
language string optional Broadcast Language
allowed_view_cnt integer optional This sets the maximum number of viewers allowed during broadcast.
*By default, the maximum number of viewers is 100,000, and the limit can be increased by raising account grade or using items.
broad_pwd_chk integer optional This sets whether the broadcast requires a password.(0:Disabled, 1:Set)
broad_pwd string optional This is the broadcast password.
*The password must be a combination of letters and numbers, and must be at least 6 characters long.
broad_hidden integer optional This sets whether the broadcast is hidden in the list.(0:Visible, 1:Hidden)
broad_tune_out integer optional This determines whether to display the expedition/visitation notice during broadcast.(0:Exploration allowed, 1:Exploration denied)
*Exploration denied means a UI indicator expressing refusal to allow unauthorized redistribution of the broadcast.
paid_promotion integer optional This determines whether paid advertising is included in the broadcast.(0:Not included, 1:Included)
*유료 광고 포함 표시란, 스트리머와 브랜드는 유료광고 또는 협찬이 포함되는 콘텐츠의 경우 대가 관계를 표시할 법적 의무가 있습니다.시청 환경 및 다시보기 영상 내 ‘유료광고 포함’ 메시지가 노출됩니다.
broad_grade integer optional This is the broadcast rating.(19:Age-restricted broadcast, 0:General broadcast)
*Age-restricted broadcasts cannot be viewed by users under 19.
hashtags string optional These are the hashtags provided during broadcast.
*Up to 5 hashtags can be entered. Special characters are not allowed. Multiple entries must be separated by spaces or commas.
broad_ending_msg string optional This is the automatic greeting message displayed at the end of the broadcast.
*Up to 40 characters can be entered.
is_wait string optional This is the standby mode setting.(0:Disabled, 1:Set)
*Broadcast standby mode switches the stream into standby if the broadcast ends abnormally.
waiting_time integer optional This is the standby duration.
*It can be set from a minimum of 1 minute up to 10 minutes, in 1-minute increments.
water_mark string optional This is the 19-indicator/lock icon position.
(1:Top left, 2:Top center, 3:Top right, 4:Bottom left, 5:Bottom center, 6:Bottom right)

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.

broad/rtmp/reset

Broadcast stream key change

If you change the stream key during a broadcast, the current broadcast ends and a new stream key is issued.

However, if the stream key is changed during standby mode, a new key is issued immediately but broadcasting can only resume after the standby time ends.

The stream key acts like a password for broadcasting. If exposed, others could stream using that key, so caution is required.

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/broad/rtmp/reset" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'access_token=ae1d3e4XXXXXXX'
import requests
import json

url = 'https://openapi.sooplive.co.kr/broad/rtmp/reset'
data = {
    "access_token": "ae1d3e4XXXXXXX"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/broad/rtmp/reset',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'access_token' => 'ae1d3e4XXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/broad/rtmp/reset"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "access_token": "ae1d3e4XXXXXXX"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "result": 1,
    "msg": "Success",
    "stream_key": "afid-1234567"
}

HTTP Request

POST broad/rtmp/reset

Body Parameters

Parameter Type Status Description
access_token string required This is the token value.

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.
stream_key string This is the reissued stream key.

broad/list

Broadcast list configuration

Depending on the call type, the list of currently live broadcasts is provided in JSON format. You can retrieve either the full list or category-specific lists.

To retrieve category-specific broadcasts, use select_key: "cate" and the corresponding select_value matching the "cate_no" from the category list API.

If select_value is empty, the full broadcast list is provided.

Each page returns 60 broadcasts.

Using the broadcast list information, users can navigate to the SOOP viewing page (http://play.sooplive.co.kr/{user_id}/{broad_no}),

or to the embedded player (http://play.sooplive.co.kr/{user_id}/{broad_no}/embed).

*Embedded player means inserting the SOOP player inside an application.

Example request:

curl -X GET \
    -G "https://openapi.sooplive.co.kr/broad/list?client_id=ae1d3e4XXXXXXX&select_key=cate&select_value=00130000+%3Cbr+%2F%3E&order_type=view_cnt&page_no=1&callback=callback" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*"
import requests

url = 'https://openapi.sooplive.co.kr/broad/list'
params = {
  'client_id': 'ae1d3e4XXXXXXX',
  'select_key': 'cate',
  'select_value': '00130000 <br />',
  'order_type': 'view_cnt',
  'page_no': '1',
  'callback': 'callback'
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://openapi.sooplive.co.kr/broad/list',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'query' => [
            'client_id' => 'ae1d3e4XXXXXXX',
            'select_key' => 'cate',
            'select_value' => '00130000 <br />',
            'order_type' => 'view_cnt',
            'page_no' => '1',
            'callback' => 'callback',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/broad/list"
);

let params = {
    "client_id": "ae1d3e4XXXXXXX",
    "select_key": "cate",
    "select_value": "00130000 <br />",
    "order_type": "view_cnt",
    "page_no": "1",
    "callback": "callback",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

fetch(url, {
    method: "GET",
    headers: headers,
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

callback({
    "total_cnt": 6,
    "page_no" : 1,
    "page_block" : 60,
    "broad":
    [
         {
              "broad_title": "[생]꿀잼님의 SOOP 방송",
              "visit_broad_type": "1",
              "is_password": "1",
              "broad_cate_no": "00130000",
              "broad_no": "2232",
              "user_id": "soop1234",
              "user_nick": "꿀잼",
              "profile_img": "//profile.img.sooplive.co.kr/LOGO/af/soop1234/soop1234.jpg?dummy=123456789",
              "broad_thumb": "//liveimg.sooplive.co.kr/m/2232",
              "broad_start": "2020-01-15 15:26:31",
              "broad_grade": "0",
              "broad_bps": "2000",
              "broad_resolution": "1280x720",
              "paid_promotion : 0,
              "total_view_cnt": "2232"
         },
         {
              "broad_title": "[생]꿀잼님의 SOOP 방송",
              "visit_broad_type": "1",
              "is_password": "0",
              "broad_cate_no": "00130000",
              "broad_no": "2232",
              "user_id": "soop123",
              "user_nick": "꿀잼",
              "profile_img": "//profile.img.sooplive.co.kr/LOGO/af/soop123/soop123.jpg?dummy=123456789",
              "broad_thumb": "//liveimg.sooplive.co.kr/m/2232",
              "broad_start": "2020-01-15 15:26:31",
              "broad_grade": "19",
              "broad_bps": "2000",
              "broad_resolution": "1280x720",
              "paid_promotion: 1
              "total_view_cnt": "2456"
         }
    ],
    "time": 1586326329
  });

Example response (200):

callback({
    "total_cnt": 1,
    "page_no": 1,
    "broad": {
        "ko_KR": "Korean",
        "th_TH": "Thai",
        "en_US": "English",
        "zh_CN": "Chinese",
        "es_ES": "Spanish",
        "pt_PT": "Portuguese",
        "ja_JP": "Japanese",
        "de_DE": "German",
        "hi_IN": "Hindi",
        "id_ID": "Indonesian",
        "ms_MY": "Malay",
        "ru_RU": "Russian",
        "fr_FR": "French",
        "ar_SA": "Arabic",
        "tl_PH": "Filipino",
        "vi_VN": "Vietnamese",
        "etc": "Other"
    },
    "time": 1764573194
});

HTTP Request

GET broad/list

Query Parameters

Parameter Status Description
client_id required This is the client ID.(It can be checked in Developers > My Account.)
select_key optional This is the list call type.(cate: category call - Default, lang: broadcast language call)
select_value optional If select_key is "cate", this is the broadcast category number. If empty, the full list is provided.
*Entering a parent category number will include its child categories.
order_type optional This is the list sorting order.
* view_cnt:By viewer count(Default)
* broad_start:Latest broadcasts
page_no optional This is the page number.
callback optional This is the callback.
When using JSONP, it can be used.

Response Parameters

Parameter Type Description
total_cnt integer This is the total number of broadcasts.
page_no integer This is the current page number.
page_block integer This is the number of broadcasts per page.
broad array This is the broadcast information list.
time integer This is the broadcast list generation time.(Unix timestamp)
broad_title string This is the broadcast title.
visit_broad_type string This determines whether to display the expedition/visitation notice during broadcast.(0:Exploration allowed, 1:Exploration denied)
*Exploration denied means a UI indicator expressing refusal to allow unauthorized redistribution of the broadcast.
is_password string This indicates whether the broadcast is password-protected.(1:Password-protected broadcast, 0:Unprotected broadcast)
*The password must be a combination of letters and numbers, and must be at least 6 characters long.
broad_cate_no string This is the broadcast category number.
*For the category list, refer to the “Category List” section at the bottom of this guide.
broad_no string This is the broadcast number.
user_id string This is the streamer’s ID.
user_nick string This is the streamer’s nickname.
profile_img string This is the streamer’s profile image.
broad_thumb string This is the broadcast thumbnail.
*Broadcast thumbnails are 480×270 JPG images. This must be considered when designing UI.
broad_start string This is the broadcast start time.
broad_grade string This is the broadcast rating.(19:Age-restricted broadcast, 0:General broadcast)
*Age-restricted broadcasts cannot be viewed by users under 19.
broad_bps string This is the broadcast bitrate.
*Measured in kbps, up to 8000 kbps.
broad_resolution string This is the broadcast resolution.
*Examples include 1280×720 / 1920×1080.
total_view_cnt string This is the total number of viewers.
paid_promotion integer This determines whether paid advertising is included in the broadcast.(0:Not included, 1:Included)
*Paid advertising inclusion indicates that streamers and brands have a legal obligation to disclose compensation relationships when paid advertisements or sponsorships are included. The “Includes Paid Promotion” message will be displayed in viewing and VOD environments.

aqua/component/get

Digital Assistant, Component

This is a link to integrate the Digital Assistant component. You can integrate the Digital Assistant component.

To change the style and settings, please save after making changes on the :url page., ["url" => "'https://dashboard.sooplive.co.kr/overlay'"]

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/aqua/component/get" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'access_token=ae1d3e4XXXXXXX&platform_type=pc&component_type=chat'
import requests
import json

url = 'https://openapi.sooplive.co.kr/aqua/component/get'
data = {
    "access_token": "ae1d3e4XXXXXXX",
    "platform_type": "pc",
    "component_type": "chat"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/aqua/component/get',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'access_token' => 'ae1d3e4XXXXXXX',
            'platform_type' => 'pc',
            'component_type' => 'chat',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/aqua/component/get"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "access_token": "ae1d3e4XXXXXXX",
    "platform_type": "pc",
    "component_type": "chat"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "result": 1,
    "msg": "성공",
    "data": {
        "component_url": "https://aqua.sooplive.co.kr/component.php?szKey=.A32.7bbT56vyHMxxxxxxx"
    }
}

HTTP Request

POST aqua/component/get

Body Parameters

Parameter Type Status Description
access_token string required This is the token value.
platform_type string optional This is the Digital Assistant platform type.(pc/mobile)
component_type string optional This is the Digital Assistant component type.(chat:Chat/notice:Notification/goal:Goal Graph)

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.
data array This is an array containing component information.
component_url string This is the Digital Assistant component URL.

filter/{type}

Broadcast filtering registration/modification(POST)

Register streamers, categories, or keywords you want to filter in the broadcast list. You can also retrieve and modify previously registered data.

Example) filter/streamer, filter/category, filter/keyword

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/filter/streamer" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'client_id=ae1d3e4XXXXXXX&client_secret=dafgc12fvXXXXXXX&black_id=soop&cate_no=00300000&keyword=사설&reason=저작권 관련 필터링'
import requests
import json

url = 'https://openapi.sooplive.co.kr/filter/streamer'
data = {
    "client_id": "ae1d3e4XXXXXXX",
    "client_secret": "dafgc12fvXXXXXXX",
    "black_id": "soop",
    "cate_no": "00300000",
    "keyword": "사설",
    "reason": "저작권 관련 필터링"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/filter/streamer',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'client_id' => 'ae1d3e4XXXXXXX',
            'client_secret' => 'dafgc12fvXXXXXXX',
            'black_id' => 'soop',
            'cate_no' => '00300000',
            'keyword' => '사설',
            'reason' => '저작권 관련 필터링',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/filter/streamer"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "client_id": "ae1d3e4XXXXXXX",
    "client_secret": "dafgc12fvXXXXXXX",
    "black_id": "soop",
    "cate_no": "00300000",
    "keyword": "사설",
    "reason": "저작권 관련 필터링"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "result": 1,
    "msg": "Register Complete"
}

HTTP Request

POST filter/{type}

URL Parameters

Parameter Status Description
type required This is the filtering type.
(streamer: Streamer(Default), category: Category, keyword: Keyword)

Body Parameters

Parameter Type Status Description
client_id string required This is the client ID.It can be checked in Developers > My Account.)
client_secret string required This is the client secret key.(It can be checked in Developers > My Account.)
black_id string required This is the filtered streamer ID.
(When type is streamer)
cate_no string required This is the filtered category number.
(When type is category)
keyword string required Filtered Keyword
*Korean, English, numbers, and special characters are allowed up to 20 characters. Emojis are not allowed.
(When type is keyword)
reason string required This is the registration reason.

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.

Broadcast filtering deletion(DELETE)

Deletes streamers/categories/keywords registered as filtering targets. Streamers/categories/keywords filtered by SOOP cannot be deleted.

예시) filter/streamer, filter/category, filter/keyword

Example request:

curl -X DELETE \
    "https://openapi.sooplive.co.kr/filter/streamer" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'client_id=ae1d3e4XXXXXXX&client_secret=dafgc12fvXXXXXXX&black_id=soop&cate_no=00300000&keyword=사설'
import requests

url = 'https://openapi.sooplive.co.kr/filter/streamer'
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('DELETE', url, headers=headers)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://openapi.sooplive.co.kr/filter/streamer',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'client_id' => 'ae1d3e4XXXXXXX',
            'client_secret' => 'dafgc12fvXXXXXXX',
            'black_id' => 'soop',
            'cate_no' => '00300000',
            'keyword' => '사설',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/filter/streamer"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "client_id": "ae1d3e4XXXXXXX",
    "client_secret": "dafgc12fvXXXXXXX",
    "black_id": "soop",
    "cate_no": "00300000",
    "keyword": "사설"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "DELETE",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "result": 1,
    "msg": "Deletion complete"
}

HTTP Request

DELETE filter/{type}

URL Parameters

Parameter Status Description
type required This is the filtering type.
(streamer: Streamer(Default), category: Category, keyword: Keyword)

Body Parameters

Parameter Type Status Description
client_id string required This is the client ID.(It can be checked in Developers > My Account.)
client_secret string required This is the client secret key.(It can be checked in Developers > My Account.)
black_id string required This is the filtered streamer ID.
(When type is streamer)
cate_no string required This is the filtered category number.
(When type is category)
keyword string required Filtered Keyword (Character limit: Around 20 characters)
(When type is keyword)

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.

Broadcast filtering list(GET)

This is the list of streamers/categories/keywords registered as filtering targets. SOOP-registered entries may be included.

예시) filter/streamer, filter/category, filter/keyword

Example request:

curl -X GET \
    -G "https://openapi.sooplive.co.kr/filter/streamer?client_id=ae1d3e4XXXXXXX&client_secret=dafgc12fvXXXXXXX" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*"
import requests

url = 'https://openapi.sooplive.co.kr/filter/streamer'
params = {
  'client_id': 'ae1d3e4XXXXXXX',
  'client_secret': 'dafgc12fvXXXXXXX'
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://openapi.sooplive.co.kr/filter/streamer',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'query' => [
            'client_id' => 'ae1d3e4XXXXXXX',
            'client_secret' => 'dafgc12fvXXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/filter/streamer"
);

let params = {
    "client_id": "ae1d3e4XXXXXXX",
    "client_secret": "dafgc12fvXXXXXXX",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

fetch(url, {
    method: "GET",
    headers: headers,
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "filter_list": [
        {
            "black_id": "soop1",
            "reason": "토토 방송 근절",
            "type": 2
        },
        {
            "black_id": "soop2",
            "reason": "불법 방송 근절",
            "type": 1
        }
    ]
}

Example response (200):

{
    "filter_list": [
        {
            "cate_name": "LOL",
            "cate_no": "00040019",
            "reason": "저작권 관련 보호 요청",
            "type": 2
        },
        {
            "cate_name": "배틀그라운드",
            "cate_no": "00040066",
            "reason": "게임사 요청",
            "type": 1
        }
    ]
}

Example response (200):

{
    "filter_list": [
        {
            "keyword": "토토",
            "reason": "토토 방송 근절",
            "type": 2
        },
        {
            "keyword": "도박",
            "reason": "사설 도박 방송 근절",
            "type": 1
        }
    ]
}

HTTP Request

GET filter/{type}

URL Parameters

Parameter Status Description
type required This is the filtering type.
(streamer: Streamer(Default), category: Category, keyword: Keyword)

Query Parameters

Parameter Status Description
client_id required This is the client ID.(It can be checked in Developers > My Account.)
client_secret required This is the client secret key.(It can be checked in Developers > My Account.)

Response Parameters

Parameter Type Description
filter_list array Filtering List
black_id string Filtered Streamer ID ( When type is streamer )
cate_name string Filtered Category Name ( When type is streamer )
cate_no string This is the filtered category number. ( When type is streamer )
keyword string Filtered Keyword ( When type is keyword )
reason string This is the registration reason.
type integer This is the registration type.(1: Registered by :target, ['target' => '본인'], 2: Registered by :target, ['target' => 'SOOP'])

broad/category/list

Category list

Provides a JSON list of selectable categories for live broadcasts. If a locale value is provided, localized category lists can be requested.

If locale is omitted, the Korean category list is provided by default.

If a category has children, the child array is included.

Example request:

curl -X GET \
    -G "https://openapi.sooplive.co.kr/broad/category/list?client_id=ae1d3e4XXXXXXX&locale=ko_KR" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*"
import requests

url = 'https://openapi.sooplive.co.kr/broad/category/list'
params = {
  'client_id': 'ae1d3e4XXXXXXX',
  'locale': 'ko_KR'
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://openapi.sooplive.co.kr/broad/category/list',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'query' => [
            'client_id' => 'ae1d3e4XXXXXXX',
            'locale' => 'ko_KR',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/broad/category/list"
);

let params = {
    "client_id": "ae1d3e4XXXXXXX",
    "locale": "ko_KR",
};
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

fetch(url, {
    method: "GET",
    headers: headers,
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "broad_category": [
        {
            "cate_name": "토크/캠방",
            "cate_no": "00130000",
            "child": []
        },
        {
            "cate_name": "먹방/쿡방",
            "cate_no": "00330000",
            "child": []
        },
        {
            "cate_name": "게임",
            "cate_no": "00040000",
            "child": [
                {
                    "cate_name": "LOL",
                    "cate_no": "00040019"
                },
                {
                    "cate_name": "TFT",
                    "cate_no": "00040075"
                },
                {
                    "cate_name": "레전드 오브 룬테라",
                    "cate_no": "00040103"
                },
                {
                    "cate_name": "배틀그라운드",
                    "cate_no": "00040066"
                }
            ]
        }
    ]
}

HTTP Request

GET broad/category/list

Query Parameters

Parameter Status Description
client_id required This is the client ID.(It can be checked in Developers > My Account.)
locale optional This is the language type for loading categories.
ko_KR : Korean
en_US : English
zh_CN : Chinese (Simplified)
zh_TW : Chinese (Traditional)
th_TH : Thai

Response Parameters

Parameter Type Description
broad_category array This is the category information list.
cate_name string This is the category name.
cate_no string This is the category number.
child array This is the child category.

oembed/embedinfo

Attaching VOD to Bulletin Boards

Provides data converted into an embed Tag as JSON type, enabling VOD URLs to be posted externally.

You can specify the size of the embed player to be added to the post by setting the width and height values.

(The aspect ratio is automatically set to 16:9 based on the width.)

If width and height values are not set, the default size (640x360) is provided.

Example request:

curl -X GET \
    -G "https://openapi.sooplive.co.kr/oembed/embedinfo" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'vod_url=https://vod.sooplive.co.kr/player/71021072&width=640&height=360'
curl -X POST \
    "https://openapi.sooplive.co.kr/oembed/embedinfo" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'vod_url=https://vod.sooplive.co.kr/player/71021072&width=640&height=360'
import requests

url = 'https://openapi.sooplive.co.kr/oembed/embedinfo'
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('GET', url, headers=headers)
response.json()
import requests
import json

url = 'https://openapi.sooplive.co.kr/oembed/embedinfo'
data = {
    "vod_url": "https://vod.sooplive.co.kr/player/71021072",
    "width": 640,
    "height": 360
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://openapi.sooplive.co.kr/oembed/embedinfo',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'vod_url' => 'https://vod.sooplive.co.kr/player/71021072',
            'width' => 640,
            'height' => 360,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/oembed/embedinfo"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "vod_url": "https://vod.sooplive.co.kr/player/71021072",
    "width": 640,
    "height": 360
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "GET",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

{
    "version": "1.0",
    "type": "video",
    "provider_name": "SOOP",
    "provider_url": "https://www.sooplive.co.kr",
    "width": 720,
    "height": 480,
    "title": "[DK vs GEN] 4세트 / 2021 LCK 스프링 결승전",
    "author_name": "LoL_공식",
    "author_url": "https://www.sooplive.co.kr/station/aflol",
    "html": ""
}

HTTP Request

GET oembed/embedinfo

POST oembed/embedinfo

Body Parameters

Parameter Type Status Description
vod_url string required VOD URL.
Example)
https://vod.sooplive.co.kr/player/71021072
https://vod.sooplive.co.kr/ST/71021072
https://v.afree.ca/ST/71021072
width integer optional The width value for the embed player to be set.
height integer optional The height value for the embed player to be set.

Response Parameters

Parameter Type Description
version integer The SOOP API version.
type string The embed video type.
provider_name string The API provider.
*The provider is SOOP.
provider_url string The API provider's main URL.
*SOOP's main URL.
width integer The width value for the embed player.
height integer The height value for the embed player.
title string The title of the VOD.
author_name string The nickname of the user who uploaded the Uploaded VOD.
author_url string The channel address of the user who uploaded the Uploaded VOD.
* A channel is a user home space on SOOP where users can manage their VODs, posts, LIVE streams, etc.
html string(iframe_tag) Data converted into an embedded Tag.

member/stationinfo

Broadcast station information lookup

Retrieves the basic information of a user’s broadcast station.

Example request:

curl -X POST \
    "https://openapi.sooplive.co.kr/user/stationinfo" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Accept: */*" \
    -d 'access_token=ae1d3e4XXXXXXX'
import requests
import json

url = 'https://openapi.sooplive.co.kr/user/stationinfo'
data = {
    "access_token": "ae1d3e4XXXXXXX"
}
headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Accept': '*/*'
}
response = requests.request('POST', url, headers=headers, params=params)
response.json()

$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://openapi.sooplive.co.kr/user/stationinfo',
    [
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Accept' => '*/*',
        ],
        'json' => [
            'access_token' => 'ae1d3e4XXXXXXX',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://openapi.sooplive.co.kr/user/stationinfo"
);

let headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "*/*",
};

let body = {
    "access_token": "ae1d3e4XXXXXXX"
}

let formBody = [];
for (var property in details) {
let encodedKey = encodeURIComponent(property);
let encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");

fetch(url, {
    method: "POST",
    headers: headers,
    body: formBody
}).then(response => response.json()).then(json => console.log(json));

Example response (200):

null

HTTP Request

POST user/stationinfo

Body Parameters

Parameter Type Status Description
access_token string required This is the token value.

Response Parameters

Parameter Type Description
result integer This is the result code.(1:Success, Negative:Error)
msg string This is the result message.
data array This is the array containing the broadcast station information.
user_nick string This is the user nickname.
station_name string This is the broadcast station name.
profile_image string This is the profile image path.
lately_broad_date datetime This is the most recent broadcast date.
favorite_cnt integer Number of loyal viewers.