curl --request GET \
--url https://api.sportquanta.com/v1/kbo/games/{id}/play-by-play \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/kbo/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/kbo/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/kbo/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/kbo/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/kbo/games/{id}/play-by-play")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/kbo/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": 123,
"game_type": "<string>",
"status": "<string>",
"schedule_date": "<string>",
"scheduled_start_utc": "<string>",
"first_pitch_utc": "<string>",
"home_team_id": "<string>",
"away_team_id": "<string>",
"venue_id": "<string>",
"game_number": 123,
"doubleheader": "<string>",
"probable_pitchers": {
"home": {
"player_id": "<string>"
},
"away": {
"player_id": "<string>"
}
},
"weather": {
"temp_f": 123,
"feels_like_f": 123,
"dew_point_f": 123,
"conditions": "<string>",
"weather_code": 123,
"wind_mph": 123,
"wind_dir": "<string>",
"wind_deg": 123,
"humidity_pct": 123,
"precip_prob_pct": 123,
"cloud_pct": 123,
"pressure_hpa": 123
},
"attendance": 123,
"linescore": {
"home_runs": 123,
"away_runs": 123,
"inning": 123,
"is_top_inning": true,
"innings": [
{
"num": 123,
"home_runs": 123,
"away_runs": 123,
"home_hits": 123,
"away_hits": 123,
"home_errors": 123,
"away_errors": 123
}
]
},
"decisions": {
"winner_id": "<string>",
"loser_id": "<string>",
"save_id": "<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
}
},
"pitches": [
{}
],
"plays": [
{}
]
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Play-by-play
KBO-only route. Returns the canonical game document plus pitch and play rows, with batter and pitcher names hydrated from player docs.
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/kbo/games/{id}/play-by-play \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/kbo/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/kbo/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/kbo/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/kbo/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/kbo/games/{id}/play-by-play")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/kbo/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": 123,
"game_type": "<string>",
"status": "<string>",
"schedule_date": "<string>",
"scheduled_start_utc": "<string>",
"first_pitch_utc": "<string>",
"home_team_id": "<string>",
"away_team_id": "<string>",
"venue_id": "<string>",
"game_number": 123,
"doubleheader": "<string>",
"probable_pitchers": {
"home": {
"player_id": "<string>"
},
"away": {
"player_id": "<string>"
}
},
"weather": {
"temp_f": 123,
"feels_like_f": 123,
"dew_point_f": 123,
"conditions": "<string>",
"weather_code": 123,
"wind_mph": 123,
"wind_dir": "<string>",
"wind_deg": 123,
"humidity_pct": 123,
"precip_prob_pct": 123,
"cloud_pct": 123,
"pressure_hpa": 123
},
"attendance": 123,
"linescore": {
"home_runs": 123,
"away_runs": 123,
"inning": 123,
"is_top_inning": true,
"innings": [
{
"num": 123,
"home_runs": 123,
"away_runs": 123,
"home_hits": 123,
"away_hits": 123,
"home_errors": 123,
"away_errors": 123
}
]
},
"decisions": {
"winner_id": "<string>",
"loser_id": "<string>",
"save_id": "<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
}
},
"pitches": [
{}
],
"plays": [
{}
]
},
"_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
Response
Play-by-play payload.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Temperature in Fahrenheit.
Apparent temperature in Fahrenheit.
Dew point in Fahrenheit.
Wind speed in miles per hour.
Wind bearing in degrees.
Relative humidity percentage.
Precipitation probability percentage.
Cloud cover percentage.
Surface pressure in hectopascals.
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.