curl --request GET \
--url https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"game": {
"id": "<string>",
"canonical_id": "<string>",
"external_ids": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"season": "<string>",
"status": "<string>",
"home_team_id": "<string>",
"away_team_id": "<string>",
"game_type": "<string>",
"schedule_date": "<string>",
"scheduled_start_utc": "<string>",
"venue_id": "<string>",
"attendance": 123,
"duration_minutes": 123,
"linescore": {
"home_score": 123,
"away_score": 123,
"period": 123,
"game_clock": "<string>",
"periods": [
{
"period": 123,
"home_score": 123,
"away_score": 123
}
]
},
"home_scoring_breakdown": {
"points_in_paint": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"fast_break_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"second_chance_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"bench_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
}
},
"away_scoring_breakdown": {
"points_in_paint": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"fast_break_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"second_chance_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"bench_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
}
},
"live": {
"status_code": "<string>",
"status_label": "<string>",
"period_ordinal": 123,
"updated_at": "2023-11-07T05:31:56Z",
"period_label": "<string>",
"score": {
"home": 123,
"away": 123
},
"clock": {
"is_running": true,
"minute": 123,
"second": 123,
"display": "<string>"
},
"state_revision": 123
}
},
"items": [
{}
],
"count": 123,
"limit": 123,
"complete": true,
"source_selection": {
"game_id": "<string>",
"source": "<string>",
"reason": "<string>",
"covered_periods": [
123
]
}
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Play-by-play
KBL-only route. Returns the canonical game document plus ordered
play records from the plays collection. For a listed official game
whose text cast KBL never published, the items are its Naver twin’s
relay restated in the official form (countdown clock, KBL code in
actionType), and source_selection (game_id, source, reason,
covered_periods) names the game they were read from.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
curl --request GET \
--url https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/kbl/games/{id}/play-by-play")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"game": {
"id": "<string>",
"canonical_id": "<string>",
"external_ids": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"season": "<string>",
"status": "<string>",
"home_team_id": "<string>",
"away_team_id": "<string>",
"game_type": "<string>",
"schedule_date": "<string>",
"scheduled_start_utc": "<string>",
"venue_id": "<string>",
"attendance": 123,
"duration_minutes": 123,
"linescore": {
"home_score": 123,
"away_score": 123,
"period": 123,
"game_clock": "<string>",
"periods": [
{
"period": 123,
"home_score": 123,
"away_score": 123
}
]
},
"home_scoring_breakdown": {
"points_in_paint": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"fast_break_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"second_chance_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"bench_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
}
},
"away_scoring_breakdown": {
"points_in_paint": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"fast_break_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"second_chance_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
},
"bench_points": {
"value": 123,
"availability": "<string>",
"calculation_mode": "<string>",
"source": "<string>"
}
},
"live": {
"status_code": "<string>",
"status_label": "<string>",
"period_ordinal": 123,
"updated_at": "2023-11-07T05:31:56Z",
"period_label": "<string>",
"score": {
"home": 123,
"away": 123
},
"clock": {
"is_running": true,
"minute": 123,
"second": 123,
"display": "<string>"
},
"state_revision": 123
}
},
"items": [
{}
],
"count": 123,
"limit": 123,
"complete": true,
"source_selection": {
"game_id": "<string>",
"source": "<string>",
"reason": "<string>",
"covered_periods": [
123
]
}
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Authorizations
Send a workspace API token in the Authorization: Bearer <token> header.
Path Parameters
Query Parameters
1 <= x <= 2000Response
Play-by-play payload.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
live, cache Response cache TTL; independent of source freshness. Omitted when zero.
Endpoint-specific availability context, including soccer roster coverage.