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/meta returns 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: false with 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.

cURLGET
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 is false, read reason and hint rather than treating the empty result as a failure.
  • Blocks you ask for with include= arrive nested. On matches and live they sit per row, at matches[i].include.<name>. On players and teams they sit on the envelope, at include.<name>.
  • A requested block with no data is always present and says why. It is never silently absent.
  • Every route accepts fields if you want a narrower body.

Props And Lines

V6V7
GET /v6/esports/{sport}/propsGET /v7/{sport}/props?board=dfs
GET /v6/esports/{sport}/player-propsGET /v7/{sport}/props
GET /v6/esports/{sport}/gapsGET /v7/{sport}/props?view=gaps
GET /v6/esports/{sport}/linesGET /v7/{sport}/lines

Matches

V6V7
GET /v6/esports/{sport}/matchesGET /v7/{sport}/matches
GET /v6/esports/{sport}/fixturesGET /v7/{sport}/matches
GET /v6/esports/{sport}/upcomingGET /v7/{sport}/matches
GET /v6/esports/{sport}/completed/matchesGET /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/searchGET /v7/{sport}/matches?q=
GET /v6/esports/{sport}/teams/{team}/matchesGET /v7/{sport}/matches?team=
GET /v6/esports/{sport}/matches/{slug}/boxscoreGET /v7/{sport}/matches?include=boxscore
GET /v6/esports/{sport}/matches/{slug}/betting-linesGET /v7/{sport}/matches?include=lines

Live

V6V7
GET /v6/esports/{sport}/live/gamesGET /v7/{sport}/live
GET /v6/esports/{sport}/live/{game}/boxscoreGET /v7/{sport}/live?include=boxscore
GET /v6/esports/{sport}/live/{game}/eventsGET /v7/{sport}/live?include=events
GET /v6/esports/{sport}/live/{game}/oddsGET /v7/{sport}/live?include=odds
GET /v6/esports/{sport}/live/{game}/odds/historyGET /v7/{sport}/live?include=odds_history
GET /v6/esports/{sport}/streamsGET /v7/{sport}/live?include=streams

Players, Teams And Results

V6V7
GET /v6/esports/{sport}/playersGET /v7/{sport}/players
GET /v6/esports/{sport}/players/searchGET /v7/{sport}/players?q=
GET /v6/esports/{sport}/players/{player}GET /v7/{sport}/players?id=
GET /v6/esports/{sport}/players/{player}/statsGET /v7/{sport}/players?include=stats
GET /v6/esports/{sport}/players/{player}/gamelogsGET /v7/{sport}/players?include=gamelogs
GET /v6/esports/{sport}/rankingsGET /v7/{sport}/players?sort=rank
GET /v6/esports/{sport}/mediaGET /v7/{sport}/players?id=
GET /v6/esports/{sport}/teamsGET /v7/{sport}/teams
GET /v6/esports/{sport}/teams/h2hGET /v7/{sport}/teams?include=h2h
GET /v6/esports/{sport}/resultsGET /v7/{sport}/results

Meta And History

V6V7
GET /v6/booksGET /v7/meta?include=books
GET /v6/meGET /v7/meta?include=plan
GET /v6/public/changelogGET /v7/meta?include=changelog
GET /v6/esports/{sport}/tournamentsGET /v7/meta?include=tournaments
GET /v6/esports/history/contractGET /v7/{sport}/history?kind=contract
GET /v6/esports/{sport}/matches/{slug}/lines/historyGET /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/ws

Still answers, but /v7/live/ws is the main route — same contract, same auth.

GET /v6/esports/{sport}/live/{game}/frames

The raw frame is V6 only. The typed live board is live?include=boxscore.

GET /v6/esports/{sport}/live/{game}/state-at

The state at a point in time has no V7 equivalent yet.

GET /v6/esports/{sport}/defense-vs-role

Joins V7 once a live response types it. Call it on V6 until then.

GET /v6/esports/{sport}/matches/{slug}/prep, /veto, /tournament-maps, /player-board

The 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.