Esports data latency.
One SLA: under 2 seconds.
Quick answer: KashRock's live scoreboard SLA is 2 seconds on Builder+ — the same number on the homepage, the docs, and the pipeline health check.
What the live feed carries
Latency on KashRock is measured at the scoreboard: the time between an in-game frame landing and the player row reaching your client. Everything on the live board — games list, boxscore, frames, events, the WebSocket — is served off the same Redis write, so one SLA covers all of it.
- —Live player kills, deaths, and assists updated in under 2 seconds on Builder and Pro
- —Live scores, 15-second delay on Hobby REST — Sandbox has no live desk
- —Measured p50/p95 published per live game on /v7/meta
Live endpoints
Every live surface reads the same write — which is why one SLA number covers REST, WebSocket, and every sport on the board.
| Endpoint | What it returns | Key param |
|---|---|---|
| GET /v7/{sport}/live | Every game currently on the live board | sport |
| GET /v7/{sport}/live/{game_id}/boxscore | Per-player K/D/A plus map, round, and clock | game_id (kr_match_id) |
| GET /v7/{sport}/live/{game_id}/frame | Round phase, economy, and board state | game_id |
| GET /v7/{sport}/live/{game_id}/events | KILL, ROUND_WIN, BOMB_PLANT, BOMB_DEFUSE, ROUND_START | game_id |
| WS /v7/live/ws | Push updates under 2 seconds after Redis write — Builder and Pro only | subscribe by sport or kr_match_id |
| GET /v7/meta | Measured p50/p95 latency per live game | none |
A real live boxscore
The payload your latency budget actually buys: a mid-map boxscore with ten player rows of live K/D/A. This capture is round 19 of Vitality vs magic on Mirage.
{
"sport": "cs2",
"game_id": "kr_cs2_vitality-vs-magic-ru-17-09-2026",
"boxscore": {
"map_name": "Mirage",
"map_number": 1,
"round": 19,
"blue": {
"kills": 82,
"map_score": 13,
"series_score": 1
},
"red": {
"kills": 52,
"map_score": 6,
"series_score": 0
},
"players": [
{
"player_id": "kr_pl_5ea13ced730e",
"nickname": "ropz",
"side": "blue",
"kills": 23,
"deaths": 10,
"assists": 3,
"headshots": 12,
"adr": 114.19999694824219
},
{
"player_id": "kr_pl_a9020751a3a8",
"nickname": "apEX",
"side": "blue",
"kills": 22,
"deaths": 11,
"assists": 7,
"headshots": 10,
"adr": 133.1999969482422
},
{
"player_id": "kr_pl_fd87dbd9d1c1",
"nickname": "flameZ",
"side": "blue",
"kills": 16,
"deaths": 13,
"assists": 8,
"headshots": 7,
"adr": 89.5
},
{
"player_id": "kr_pl_4764e4b8d73a",
"nickname": "ZywOo",
"side": "blue",
"kills": 11,
"deaths": 9,
"assists": 7,
"headshots": 3,
"adr": 57.400001525878906
},
{
"player_id": "kr_pl_36c966f11204",
"nickname": "mezii",
"side": "blue",
"kills": 10,
"deaths": 9,
"assists": 5,
"headshots": 8,
"adr": 54.5
},
{
"player_id": "kr_pl_2cc82eb14944",
"nickname": "MaSvAl",
"side": "red",
"kills": 17,
"deaths": 15,
"assists": 1,
"headshots": 13,
"adr": 87.9000015258789
},
{
"player_id": "kr_pl_5e5e69089419",
"nickname": "sFade8",
"side": "red",
"kills": 11,
"deaths": 17,
"assists": 4,
"headshots": 6,
"adr": 67.0999984741211
},
{
"player_id": "kr_pl_64ea67e35230",
"nickname": "eksiver",
"side": "red",
"kills": 10,
"deaths": 16,
"assists": 0,
"headshots": 2,
"adr": 45.20000076293945
},
{
"player_id": "kr_pl_218807e67435",
"nickname": "mo0n",
"side": "red",
"kills": 9,
"deaths": 15,
"assists": 6,
"headshots": 4,
"adr": 51.099998474121094
},
{
"player_id": "kr_pl_630e7229e428",
"nickname": "tENZY",
"side": "red",
"kills": 5,
"deaths": 19,
"assists": 7,
"headshots": 5,
"adr": 48.900001525878906
}
]
}
}Vitality vs magic, map 1 Mirage, 17 Sep 2026. Same KashRock ids and KDA fields as live REST.
Which sports publish live boards
Live K/D/A comes from in-game feeds on tournament matches. Where a title has no feed wired, the board stays empty — KashRock does not invent stats.
| Title | Live status | What the board carries |
|---|---|---|
| CS2 | Live | Kills, deaths, assists, headshots, ADR per map |
| Valorant | Live | K/D/A per map on tournament games |
| League of Legends | Live | K/D/A per map on tournament games |
| Dota 2 | Live | K/D/A per map on tournament games |
| Rainbow Six | Live | K/D/A per map on tournament games |
| Call of Duty | Live | K/D/A per map on tournament games |
| Deadlock | Live | K/D/A per map on tournament games |
| Mobile Legends | Waiting on feed | Live boards stay empty until a feed is wired |
How the latency SLA is enforced
The SLA is enforced by measurement, not aspiration. Each live game reports p50 and p95 from the source's frame timestamp to KashRock's WebSocket publish on GET /v7/meta. The 2-second number on this page, the docs, and the homepage is the same constant — there is one SLA, stated once, everywhere.
Practical rule: Latency you can measure beats latency you are promised. /live/health is the page of record.
Speed by plan
Live speed is a plan feature, not a different pipeline. Every tier reads the same Redis boards — cheaper plans are served a genuinely older snapshot instead of a relabeled real-time read.
| Plan | Price | Live speed | Monthly requests |
|---|---|---|---|
| Sandbox | $0 | No live desk — CS2 props and match discovery | 1,500 credits / UTC day |
| Hobby | $29.99 | Live scores, 15-second delay on REST | 300,000 requests / month |
| Builder | $99 | Live player kills, deaths, and assists updated in under 2 seconds + WebSocket push | 4,320,000 requests / month |
| Pro | $199 | Live player kills, deaths, and assists updated in under 2 seconds + WebSocket push | 10,800,000 requests / month |
| Quant | $299 | Live player kills, deaths, and assists updated in under 2 seconds + WebSocket push | 21,600,000 requests / month |
The delay on Hobby is a real older snapshot — not a real-time read relabeled to look cheaper. Sandbox has no live desk.
Start in minutes
- —Create a Hobby key on Pricing — live REST starts here (live scores, 15-second delay). Sandbox is CS2 eval only, no live desk
- —List what is live:
GET /v7/{sport}/liveand copy thekr_match_idoff a game - —Pull the board:
GET /v7/{sport}/live?include=boxscore - —Upgrade to Builder when you need real-time (no delay) or WebSocket push — Hobby is rejected at the WS handshake
If you need a normalized feed instead of another UI wrapper, the esports api exposes live boards, schedules, and history on one schema — with the IDs and outcome patterns that keep backtests and grading honest. Start free on Sandbox, or see published pricing.