Developers

Changelog

Every change to the public contract, dated, field by field — before and after. A breaking change is always announced here first.

View as Markdown
2026-11-04

Manager and referee photos

Managers and referees carry a photo on our CDN, like players. One new field, always present and nullable, on every manager and referee object; nothing else changes, nor does the WebSocket protocol.

WhatBeforeNow
ManagerRef.image (Fixture.homeManager / awayManager, TeamDetail.manager, H2H managerDuel)absentstring | null — the photo on cdn.sportsapi.app; null when the source has none or it is not uploaded yet
Referee.image (Fixture.referee)absentstring | null — as ManagerRef.image
ManagerProfile.image, RefereeProfile.image (/v2/managers/{id}, /v2/referees/{id})absentstring | null — as ManagerRef.image
SearchResult.image on manager and referee hitsalways nullthe photo, as ManagerRef.image
2026-11-04breaking

Search finds fixtures and venues; player hits carry their team

GET /v2/search returns two new hit types — fixture and venue — and three new fields on every hit. SearchType is a closed enum, so a client that rejects unknown values must accept the two new ones; the existing fields and hit types do not change.

WhatBeforeNow
SearchResult.type (SearchType)team | player | league | manager | referee | series | racethe same + fixture (a match: /v2/fixtures/{id}) + venue (a stadium / arena; no endpoint of its own — the id is the one Fixture.venue and TeamDetail.venue carry)
SearchResult.teamabsentTeamRef | null — a player hit’s current team; null on every other type and for a player without one
SearchResult.fixtureabsentSearchFixture | null — { home, away (TeamRef | null), league (LeagueRef | null), startTime, status (StatusType | null) } on a fixture hit; null on every other type
SearchResult.venueabsentVenue | null — { id, name, city, country, capacity } on a venue hit; null on every other type
SearchResult.sporta sport slug or nullthe same; always null on a venue hit (a venue is not tied to one sport)
2026-11-02

AI commentary names SportsAPI AI (three values change)

The AI commentary is now named after us, not the language model provider behind it. Only these values change; the shapes, the text and the WebSocket protocol do not.

WhatBeforeNow
CommentaryEntry.model (REST and the commentary WebSocket frame)the underlying provider model id"sportsapi-ai"
GET /v2/fixtures/{id}/commentary meta.generatedBythe provider name"sportsapi-ai"
2026-11-01

v2 baseline

The starting point: the v2 contract as documented on this page — REST, WebSocket protocol 4, webhooks, season exports and widgets. Earlier pre-launch changes are not listed; every change from here on is, field by field.