Moving To V7
This page maps each V6 route onto the V7 call that answers the same question, for whenever you decide to move.
There is no deadline, and nothing to do today. The V6 routes keep serving the same response shapes, indefinitely. Move a call when moving it buys you something — usually fewer round trips — and leave the rest alone.
Why Move A Call
- One call instead of several. Where V6 needs a match lookup and then a boxscore, V7 nests the boxscore in the match row through
include=. - A routes table you can read at runtime.
/v7/metareturns every endpoint with its parameters and the plan it needs, so an agent does not have to hard-code paths. - Honest misses. A V7 body that has no data says
available: falsewith a reason and a plain-English hint naming the next step. - New work lands there first. New markets, sports and books arrive on V7.
Start Here
Call /v7/meta once with your existing key. The routes array it returns is the authoritative list of what you can call and on which plan — including anything added since this page was written.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://kashrock.up.railway.app/v7/meta"
Your IDs Still Work
V6 and V7 share one identifier namespace, so there is no id migration and no mapping table to keep. A kr_match_id, kr_pl_*, kr_tm_* or kr_prop_* you stored from a V6 response resolves on V7 unchanged, including ids that have since been merged or redirected. A bare numeric id is rejected on both.
What Changes In The Response
- Every V7 body carries
available. When it isfalse, readreasonandhintrather than treating the empty result as a failure. - Blocks you ask for with
include=arrive nested. On matches and live they sit per row, atmatches[i].include.<name>. On players and teams they sit on the envelope, atinclude.<name>. - A requested block with no data is always present and says why. It is never silently absent.
- Every route accepts
fieldsif you want a narrower body.
Props And Lines
| V6 | V7 |
|---|---|
GET /v6/esports/{sport}/props | GET /v7/{sport}/props?board=dfs |
GET /v6/esports/{sport}/player-props | GET /v7/{sport}/props |
GET /v6/esports/{sport}/gaps | GET /v7/{sport}/props?view=gaps |
GET /v6/esports/{sport}/lines | GET /v7/{sport}/lines |
Matches
| V6 | V7 |
|---|---|
GET /v6/esports/{sport}/matches | GET /v7/{sport}/matches |
GET /v6/esports/{sport}/fixtures | GET /v7/{sport}/matches |
GET /v6/esports/{sport}/upcoming | GET /v7/{sport}/matches |
GET /v6/esports/{sport}/completed/matches | GET /v7/{sport}/matches?status=finished |
GET /v6/esports/{sport}/matches/date/{date} | GET /v7/{sport}/matches?date= |
GET /v6/esports/{sport}/matches/id/{kr_match_id} | GET /v7/{sport}/matches?ids= |
GET /v6/esports/{sport}/matches/search | GET /v7/{sport}/matches?q= |
GET /v6/esports/{sport}/teams/{team}/matches | GET /v7/{sport}/matches?team= |
GET /v6/esports/{sport}/matches/{slug}/boxscore | GET /v7/{sport}/matches?include=boxscore |
GET /v6/esports/{sport}/matches/{slug}/betting-lines | GET /v7/{sport}/matches?include=lines |
Live
| V6 | V7 |
|---|---|
GET /v6/esports/{sport}/live/games | GET /v7/{sport}/live |
GET /v6/esports/{sport}/live/{game}/boxscore | GET /v7/{sport}/live?include=boxscore |
GET /v6/esports/{sport}/live/{game}/events | GET /v7/{sport}/live?include=events |
GET /v6/esports/{sport}/live/{game}/odds | GET /v7/{sport}/live?include=odds |
GET /v6/esports/{sport}/live/{game}/odds/history | GET /v7/{sport}/live?include=odds_history |
GET /v6/esports/{sport}/streams | GET /v7/{sport}/live?include=streams |
Players, Teams And Results
| V6 | V7 |
|---|---|
GET /v6/esports/{sport}/players | GET /v7/{sport}/players |
GET /v6/esports/{sport}/players/search | GET /v7/{sport}/players?q= |
GET /v6/esports/{sport}/players/{player} | GET /v7/{sport}/players?id= |
GET /v6/esports/{sport}/players/{player}/stats | GET /v7/{sport}/players?include=stats |
GET /v6/esports/{sport}/players/{player}/gamelogs | GET /v7/{sport}/players?include=gamelogs |
GET /v6/esports/{sport}/rankings | GET /v7/{sport}/players?sort=rank |
GET /v6/esports/{sport}/media | GET /v7/{sport}/players?id= |
GET /v6/esports/{sport}/teams | GET /v7/{sport}/teams |
GET /v6/esports/{sport}/teams/h2h | GET /v7/{sport}/teams?include=h2h |
GET /v6/esports/{sport}/results | GET /v7/{sport}/results |
Meta And History
| V6 | V7 |
|---|---|
GET /v6/books | GET /v7/meta?include=books |
GET /v6/me | GET /v7/meta?include=plan |
GET /v6/public/changelog | GET /v7/meta?include=changelog |
GET /v6/esports/{sport}/tournaments | GET /v7/meta?include=tournaments |
GET /v6/esports/history/contract | GET /v7/{sport}/history?kind=contract |
GET /v6/esports/{sport}/matches/{slug}/lines/history | GET /v7/{sport}/history?kind=lines |
Call These On V6
A few routes have no V7 equivalent, or have one that is not ready to answer yet. V6 is the right place for them, not a fallback.
WEBSOCKET /v6/esports/live/wsStill answers, but /v7/live/ws is the main route — same contract, same auth.
GET /v6/esports/{sport}/live/{game}/framesThe raw frame is V6 only. The typed live board is live?include=boxscore.
GET /v6/esports/{sport}/live/{game}/state-atThe state at a point in time has no V7 equivalent yet.
GET /v6/esports/{sport}/defense-vs-roleJoins V7 once a live response types it. Call it on V6 until then.
GET /v6/esports/{sport}/matches/{slug}/prep, /veto, /tournament-maps, /player-boardThe V7 include blocks for these are built by a worker that cannot keep their keys warm yet, so they usually answer available: false. The V6 routes build on demand and are the ones to call today.
If You Use The MCP
The twelve v7_* tools are listed first and are the default. The older tool names still work and still call V6, and each one names the v7_* tool to prefer for new work. Four tools have no V7 equivalent and stay as they are: login, explain_error, get_live_frame and get_defense_vs_role. See the MCP Docs.
