One flat object for on-air graphics (ULTRA)
Added 2026-09-24, from a broadcaster's request. ONE flat JSON object for one match, built so a graphics template can bind each field to a fixed path.
Three properties make it different from GET /matches/{matchId}, and each exists because a graphics pipeline breaks without it. The object is FLAT — no nested score object, no arrays of arrays. Every key is PRESENT on every read: a value we do not hold is null, never missing, because a missing key breaks a template binding. And the score is already in DISPLAY form — p1_points reads "40" or "AD", set_line is one string such as "5-7 2-0", and each set has its own column — so nothing has to be formatted downstream.
It is a PROJECTION of what the public API already publishes: the match object, its embedded score and the model probability, plus the break-, set- and match-point flags derived by the same classifiers the scoring pipeline uses. Nothing here is a new fact and nothing is guessed.
BUILT FOR 1 Hz. Every response carries a strong ETag and Cache-Control: no-cache, max-age=1; send If-None-Match and an unchanged state costs a 304 with no body. ULTRA's burst window is 600 requests a minute, so ten single-match pollers at 1 Hz fit on one key. Detect a new state on sequence, not on served_at, which changes on every read.
The key may be sent as Authorization: Bearer <key>, as X-API-Key, or as ?token=<key> for tools that cannot set a header.
Request
- Base URL: https://api.livetennisapi.com/api/public/v1
- URL: https://api.livetennisapi.com/api/public/v1/broadcast/match/{matchId}
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Path parameters
The match id. Every match route shares ONE id space, so the same value works everywhere matchId appears.
Get it from any match list, where it is the id field of each match object: GET /matches?status=live (in progress), GET /matches?status=upcoming or GET /fixtures (scheduled), GET /matches?status=completed or GET /history/matches (finished).
Ids are stable for the life of a match, so one captured before it starts still resolves after it finishes.
Response
The broadcast object for this match
Changes
No recorded changes to this operation across all 1 revision of this API.