Live in-game
Mid-map K/D/A, alive state, round clock. Redis-backed telemetry — not the finished-match boxscore path. Builder plan. MCP: get_live_boxscore.
List live games
GET/v6/esports/{sport}/live/games
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | cs2, valorant, lol, dota2, cod, r6, … |
cURLGET
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/live/games"
200 · live
{
"sport": "cs2",
"total": 1,
"games": [
{
"game_id": "2397756",
"match_id": "2397756",
"blue_code": "Voca",
"red_code": "Liquid"
}
]
}Live boxscore
GET/v6/esports/{sport}/live/{game_id}/boxscore
| Param | Type | Required | Description |
|---|---|---|---|
| sport | path | Yes | Same sport slugs as matches. |
| game_id | path | Yes | From /live/games. |
cURLGET
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v6/esports/cs2/live/2397756/boxscore"
200 · live
{
"sport": "cs2",
"game_id": "2397756",
"boxscore": {
"map_name": "Anubis",
"round": 16,
"round_phase": "bomb",
"round_clock": "0:07",
"blue": {
"map_score": 10,
"kills": 69
},
"red": {
"map_score": 5,
"kills": 44
},
"players": [
{
"nickname": "Jorko",
"side": "blue",
"kills": 17,
"deaths": 7,
"assists": 2,
"alive": true
},
{
"nickname": "dare",
"side": "red",
"kills": 10,
"deaths": 14,
"assists": 2,
"alive": true
}
]
}
}Frame & events
Also: /{sport}/live/{game_id}/frames, /{sport}/live/{game_id}/events.
Finished series stats stay on /{sport}/matches/{slug}/boxscore (MCP get_boxscore).
WebSocket wire
Push updates under 2s after Redis write. Builder+. Auth via ?api_key= or Bearer on handshake.
GETWS /v6/esports/live/ws
{"op":"subscribe","sport":"cs2","game_id":"2397756"}
{"op":"subscribe","sport":"cs2","game_id":"*"}
{"op":"ping"}Server sends snapshot, then update / event /games_list ticks.