Moving from v2 to v3

The response shape is unchanged. v3 keeps the v2 JSON contract on purpose, so an existing integration does not need rewriting — in most cases only the base URL changes.

The one change most callers need

- https://api.sportsrc.org/v2/
+ https://api.sportsrc.org/v3/

Field names, nesting and the status vocabulary are identical. Your parser, your types and your UI keep working.

Removed in v3

Four v2 endpoints are gone. Three of them have no replacement, and it is better to say so than to leave you discovering it in production.

channels Removed

Channel listing for a match.

Instead: Use detail. Its sources array carries a finished embedUrl per source, so there is nothing left to assemble.

shotmap Removed

Shot coordinates and expected goals.

Instead: No replacement. The upstream provider behind v3 does not expose shot-level coordinates.

graph Removed

Momentum graph points over the match.

Instead: No replacement, for the same reason.

highlights Removed

Video highlight clips.

Instead: No replacement. has_highlights still travels with each match, so a UI built on it keeps working and simply never turns the flag on.

Why: v3 runs on a different upstream provider, and shot coordinates, momentum points and highlight clips are not part of what it publishes. Pretending otherwise with empty arrays would be worse than removing them.

Added in v3

team_stats New

Season-long form and statistics for both teams: fixtures won, goals, clean sheets, penalties, cards and preferred line-ups.

New fields on existing responses

All additive. Nothing was renamed or removed, so ignoring them is safe.

Field On What it tells you
has_stream match Whether a playable source exists. Per match, and it changes around kick-off.
has_stats match Whether line-ups, statistics and incidents exist for this match.
has_standings league Whether the competition has a table at all.
has_odds league Whether odds are offered for the competition.
timer match Display clock while in play, e.g. 67’.
period_start match Unix time the current period began, for a clock you run yourself.
agg_score match Aggregate score over two legs, where it applies.

The four has_* flags are the ones worth adopting first — they let you decide which tabs to render before you spend a request finding out. How to use them.

Also worth checking

A migration you can do in an afternoon

  1. 1. Point your base URL at https://api.sportsrc.org/v3/ in a staging build.
  2. 2. Grep your code for channels, shotmap, graph and highlights. Those are the only calls that will fail.
  3. 3. Swap channels for detail and read sources[].embedUrl; remove or hide the other three features.
  4. 4. Run both versions side by side for a day and diff the output for the same fixtures.
  5. 5. Adopt the has_* flags once you are live. Optional, but it removes the empty tabs.

Open the v3 reference Ask on Telegram

v2 stays online. Existing keys keep working, so nothing forces you to move on a deadline.