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. |