Changelog
What's new
New endpoints, new fields and behavior changes.
SDKs in five languages New
- JavaScript / TypeScript, Python, Dart, Swift, Kotlin: REST calls, realtime subscription, automatic reconnect with catch-up and de-duplication after a reconnect
- Native live animation components for Flutter, iOS and Android
- Delivered as source for now; install steps and examples are in the docs under "SDKs and client libraries"
Live animation widget: one-line embed with an App Key New
- A public key starting with pk_: it only loads the widget, cannot call data endpoints and must have a domain allow-list
- Embed with an iframe or a script; optional daily view cap, concurrent viewer cap and signed mode
- Create, disable and rotate keys in the console, and see views and refusals
Realtime fixes and security hardening New
- Realtime push: messages written at the moment the service starts are no longer skipped; the animation stage shows the live score
- The realtime guide now covers reconnecting, catching up and de-duplication, and what to watch for in a heartbeat with several subscription rules
- Console write requests are accepted only from the portal's own pages; security response headers on the portal, the API and the back office
- Two-step verification: ten wrong codes for one account within 15 minutes block further attempts for that period; when an organization requires it for everyone, members without it are signed out at once
- Putting the key in the URL (?key=) is discouraged: it still works, but the key ends up in browser history and proxy logs
Response field changes (breaking; integrators please check) New
- Renamed: tm_id is now coach_id in /api/v1/coaches and /api/v1/coaches/detail; the compatibility code field in /api/v1/dict is now compat_code
- Replaced by platform ids: match_source_id is now gmid in the 14 match endpoints; team_source_id is now gtid in /api/v1/team/persons, /api/v1/team/persons/detail and /api/v1/teams/squads/history
- No longer returned: one third-party site id field each in the coach, referee, team and venue endpoints; the storage address and mirror time fields of /api/v1/logos (the image address is in url); raw_ref in the schedule endpoints; raw in player season statistics; source_player_id in player salaries
- The endpoint catalogue /catalog keeps only what an integration needs, and its list of endpoints not provided is now keyed not_provided; /openapi.json drops internal extension properties
- The field table in each endpoint's documentation shows the current fields
Live animation widget: 2.5D and 3D views
- One set of layouts (standard / wide / compact / mobile portrait) for either the 2.5D animation or the 3D pitch
- 12 data modules, including text commentary and lineups; 3D kits use each team's real colors
- Your server exchanges a short-lived token tied to the embedding page's domain; configure and preview live in the console
- New endpoints: POST /api/v1/widget/token, GET /api/v1/widget/options, /configs, /stats
API docs generated from real production responses
- Every endpoint's field tree and sample response come from a real request
- New integration guide for the live animation widget
Realtime push docs
- Setup guides and a live connection tester for WebSocket (ticket exchange, subscribe commands), SSE and MQTT
Highlight video URLs
- /api/v1/matches/video returns a playback URL issued by this platform, valid for 10 minutes
Text commentary now merged from multiple sources
- Commentary is generated live from events merged across sources, and REST, the compatibility API and MCP all return the same result
All logos now served by this platform
- Every team, competition and player logo URL in every endpoint points to this platform
Filter by team and player
- Player, coach and team season-stat endpoints can filter by this platform's team id (gtid)
More accurate scores and events
- Score arrays are always 7 integers; merging sources now drops duplicate goals, duplicate cards and disallowed goals