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, 30-60 second delay on the free tier — real data, delayed on purpose
- —Live scores, 5-second delay on Hobby REST
- —Measured p50/p95 published per live game on /v6/esports/live/health
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 /v6/esports/{sport}/live/games | Every game currently on the live board | sport |
| GET /v6/esports/{sport}/live/{game_id}/boxscore | Per-player K/D/A plus map, round, and clock | game_id (kr_match_id) |
| GET /v6/esports/{sport}/live/{game_id}/frame | Round phase, economy, and board state | game_id |
| GET /v6/esports/{sport}/live/{game_id}/events | KILL, ROUND_WIN, BOMB_PLANT, BOMB_DEFUSE, ROUND_START | game_id |
| WS /v6/esports/live/ws | Push updates under 2 seconds after Redis write — Builder and Pro only | subscribe by sport or kr_match_id |
| GET /v6/esports/live/health | 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 /v6/esports/live/health. 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 | Live scores, 30-60 second delay on REST | 500 requests / UTC day |
| Hobby | $29 | Live scores, 5-second delay on REST | 2,160,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 |
The delay on Sandbox and Hobby is a real older snapshot — not a real-time read relabeled to look free.
Start in minutes
- —Create a free Sandbox key on Pricing — $0, no card, 500 requests every UTC day
- —List what is live:
GET /v6/esports/{sport}/live/gamesand copy thekr_match_idoff a game - —Pull the board:
GET /v6/esports/{sport}/live/{game_id}/boxscore - —Upgrade to Builder when you need real-time (no delay) or WebSocket push — Sandbox and Hobby are 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.