Get Live State
curl --request GET \
--url https://api.predexon.com/v2/sports/live/{game_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.predexon.com/v2/sports/live/{game_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.predexon.com/v2/sports/live/{game_id}', 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.predexon.com/v2/sports/live/{game_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.predexon.com/v2/sports/live/{game_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.predexon.com/v2/sports/live/{game_id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.predexon.com/v2/sports/live/{game_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"game_id": "mlb-ari-pit-2026-05-07",
"league": "mlb",
"sport": "baseball",
"game_date": "2026-05-07",
"title": "Arizona Diamondbacks vs Pittsburgh Pirates",
"home_team": null,
"away_team": null,
"participants": [
{
"code": "ari",
"name": "Arizona Diamondbacks"
},
{
"code": "pit",
"name": "Pittsburgh Pirates"
}
],
"status": "open",
"status_text": null,
"live": false,
"ended": false,
"period": null,
"clock": null,
"score": {
"home": null,
"away": null,
"display": null
},
"winner": null,
"ended_at": null,
"last_play": null,
"significant_events": [],
"reliability": {
"state": "no_data",
"source_count": 0,
"sources": [],
"conflict": false,
"stale": true
},
"sources": [],
"updated_at": null
}Sports Discovery API
Get Live State
Get one live score and game-state snapshot by sports game_id
GET
/
v2
/
sports
/
live
/
{game_id}
Get Live State
curl --request GET \
--url https://api.predexon.com/v2/sports/live/{game_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.predexon.com/v2/sports/live/{game_id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.predexon.com/v2/sports/live/{game_id}', 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.predexon.com/v2/sports/live/{game_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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.predexon.com/v2/sports/live/{game_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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.predexon.com/v2/sports/live/{game_id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.predexon.com/v2/sports/live/{game_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"game_id": "mlb-ari-pit-2026-05-07",
"league": "mlb",
"sport": "baseball",
"game_date": "2026-05-07",
"title": "Arizona Diamondbacks vs Pittsburgh Pirates",
"home_team": null,
"away_team": null,
"participants": [
{
"code": "ari",
"name": "Arizona Diamondbacks"
},
{
"code": "pit",
"name": "Pittsburgh Pirates"
}
],
"status": "open",
"status_text": null,
"live": false,
"ended": false,
"period": null,
"clock": null,
"score": {
"home": null,
"away": null,
"display": null
},
"winner": null,
"ended_at": null,
"last_play": null,
"significant_events": [],
"reliability": {
"state": "no_data",
"source_count": 0,
"sources": [],
"conflict": false,
"stale": true
},
"sources": [],
"updated_at": null
}Overview
Returns one live game-state snapshot for a broad sportsgame_id.
Use this endpoint after discovering games from GET /v2/sports/games or market listings from GET /v2/sports/markets. Live state keys off game_id, not event_id, because many tradable markets can belong to the same real-world game.
For source reliability semantics, see Sports Live State. For the websocket contract, see Sports Live WebSocket.
Path Parameters
| Param | Type | Description |
|---|---|---|
game_id | string | Broad real-world sports game ID. |
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
include_sources | boolean | true | Include source-level snapshots under sources[]. |
Event List
The response includessignificant_events[], a normalized list of key incidents when available. This can include score changes, cards, substitutions, period events, game start/end, or source-supported other events.
Incident availability depends on source and sport support. Kalshi soccer milestones commonly include goals, cards, substitutions, period events, and game-end events. Kalshi basketball can include made shots/free throws and period boundaries. Baseball play-by-play may be available for some games, but typed key incidents are less consistent. Polymarket primarily provides score, period, status, clock, and game-level state. If no key incidents are available for the game, significant_events is returned as [].
Example
GET /v2/sports/live/mlb-ari-pit-2026-05-07
{
"game_id": "mlb-ari-pit-2026-05-07",
"league": "mlb",
"sport": "baseball",
"game_date": "2026-05-07",
"title": "Arizona Diamondbacks vs Pittsburgh Pirates",
"home_team": null,
"away_team": null,
"participants": [
{ "code": "ari", "name": "Arizona Diamondbacks" },
{ "code": "pit", "name": "Pittsburgh Pirates" }
],
"status": "open",
"status_text": null,
"live": false,
"ended": false,
"period": null,
"clock": null,
"score": {
"home": null,
"away": null,
"display": null
},
"winner": null,
"last_play": null,
"significant_events": [],
"reliability": {
"state": "no_data",
"source_count": 0,
"sources": [],
"conflict": false,
"stale": true
},
"sources": [],
"updated_at": null
}
Reliability
| Field | Description |
|---|---|
state | Aggregate source state, such as no_data, single_source, confirmed, conflict, or stale. |
sources | Direct source names used for the aggregate, such as polymarket or kalshi. |
source_count | Number of source snapshots used for the aggregate state. |
conflict | Whether sources disagree on material fields like score, status, or winner. |
stale | Whether the latest source data is stale or absent. |
Authorizations
Data key provided by Predexon. The trading key used by the Order Router on trade.predexon.com is a separate credential.
Path Parameters
Canonical sports game ID.
Query Parameters
Include source-level live state snapshots.
Response
Successful response
