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