-Live Tennis API · docs · version 1.13.77
+Live Tennis API · docs · version 1.13.78
Live tennis scores API
How do you read live tennis scores from the API? Poll GET /matches?status=live for the slate, then GET /matches/{matchId}/score for the lowest-latency read of one match. Both are on the FREE plan. Scores carry sets, games, points and the server; /events and /points give the same match as a stream of changes rather than a snapshot, so a client can catch up without re-reading state.
11 endpoints on this page. Base URL
diff --git a/docs/openapi.json b/docs/openapi.json
index eb1af03..d3e577b 100644
--- a/docs/openapi.json
+++ b/docs/openapi.json
@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "Live Tennis API",
- "version": "1.13.77",
+ "version": "1.13.78",
"contact": {
"name": "Live Tennis API",
"url": "https://livetennisapi.com"
@@ -7505,7 +7505,7 @@
},
"MatchStatisticsMeasured": {
"type": "object",
- "description": "Measured counting statistics for one player. These are COUNTED during the match, not derived from the point record — which is why they can include aces and double faults, and the derived fields above cannot. They are MATCH TOTALS only — one whole-match rollup per player; there are no per-set measured statistics.\nEVERY FIELD IS OPTIONAL AND AN ABSENT FIELD IS OMITTED, never zero-filled — absent means NOT MEASURED, and a present 0 is a real measured zero. Do not assume a fixed shape; read the keys you are given. Measured over 24,552 stored payloads (2026-07-31), coverage falls into three tiers:\nTIER 1 — present on 98.6-100% of payloads, on every tour including ITF: aces, double faults, points won, service and return points won, break points won, service games won, longest point and game runs, return points.\nTIER 2 — present on essentially all ATP, WTA and Challenger matches and on NO ITF singles match: the first and second serve split, break points saved, tiebreaks won, games won, service games played.\nTIER 3 — the winners / unforced-errors / forced-errors family, in total and by shot type. Historically delivered on ~43% of ATP singles, ~24% of WTA singles and ~47% of tour doubles, and on NONE of Challenger, ITF or juniors — those zeros are hard, not sampling noise. This group has NOT BEEN AVAILABLE at all since 2026-07-12 (measured 2026-08-17: 0 of 4,513 August payloads carry it, live ATP Masters included), so expect it absent on current matches until it returns.\nA `_of` suffix is the denominator of its base field and a `_pct` suffix is the percentage, recomputed from the two counts rather than read as a rounded figure.",
+ "description": "Measured counting statistics for one player. These are COUNTED during the match, not derived from the point record — which is why they can include aces and double faults, and the derived fields above cannot. They are MATCH TOTALS only — one whole-match rollup per player; there are no per-set measured statistics.\nEVERY FIELD IS OPTIONAL AND AN ABSENT FIELD IS OMITTED, never zero-filled — absent means NOT MEASURED, and a present 0 is a real measured zero. Do not assume a fixed shape; read the keys you are given. Measured over 24,552 stored payloads (2026-07-31), coverage falls into three tiers:\nTIER 1 — present on 98.6-100% of payloads, on every tour including ITF: aces, double faults, points won, service and return points won, break points won, service games won, longest point and game runs, return points.\nTIER 2 — present on essentially all ATP, WTA and Challenger matches and on NO ITF singles match: the first and second serve split, break points saved, tiebreaks won, games won, service games played.\nTIER 3 — the winners / unforced-errors / forced-errors family, in total and by shot type. Present where the statistics source counts it: the 2026 Grand Slam main draws (Wimbledon and the US Open near complete; the Australian Open and Roland Garros filling as the completed-match statistics fetch walks back) and the odd regular-tour match (two at Basel 2026). On NONE of Challenger, ITF or juniors, and on almost no regular-tour match since 2026-07-12. Nothing is promised for a future event: the family appears when the source states it. A family the source filled with zeros is withheld (2026-10-29): a side that won 20 points or more with every by-shot winner and error at 0 is not measured, and the whole family is omitted, totals included.\nA `_of` suffix is the denominator of its base field and a `_pct` suffix is the percentage, recomputed from the two counts rather than read as a rounded figure.",
"properties": {
"aces": {
"type": [
diff --git a/docs/players-and-tournaments.html b/docs/players-and-tournaments.html
index d9c4329..26e799e 100644
--- a/docs/players-and-tournaments.html
+++ b/docs/players-and-tournaments.html
@@ -202,7 +202,7 @@
-Live Tennis API · docs · version 1.13.77
+Live Tennis API · docs · version 1.13.78
Tennis players, tournaments and rankings API
How do you look up a player, a tournament or a ranking? GET /players searches by name and GET /players/{playerId} returns one player's bio, current ranking and cached statistics — both FREE. GET /players/{playerId}/stats (PRO) is the player's win/loss record over our completed matches, split by surface, level and season, with ULTRA adding summed serve and return statistics. GET /tournaments is the catalogue that Match.tournament_id joins against, so a match can be resolved to its event without a second lookup. GET /rankings serves rank-ordered listings on PRO. The per-player as-of records, including the Elo tape, are ULTRA.
8 endpoints on this page. Base URL
diff --git a/docs/point-by-point-history.html b/docs/point-by-point-history.html
index 4947905..c18eff9 100644
--- a/docs/point-by-point-history.html
+++ b/docs/point-by-point-history.html
@@ -202,7 +202,7 @@
-Live Tennis API · docs · version 1.13.77
+Live Tennis API · docs · version 1.13.78
Point-by-point tennis data API
Which endpoints return point-by-point tennis data, and how complete is it? GET /history/matches/{matchId} returns the tape for one completed match: the ordered score states we hold for it. The model's win probability sits on the rows that were observed live, and coverage is declared per match. GET /history/matches lists completed matches with their tape coverage, and GET /history/coverage is the measured completeness rollup per tour and draw bucket — a number we publish rather than estimate, with its own as_of. GET /history/packages serves the same data as pre-built monthly bulk files.
8 endpoints on this page. Base URL
diff --git a/docs/push-feed-and-webhooks.html b/docs/push-feed-and-webhooks.html
index d4ef447..e53df41 100644
--- a/docs/push-feed-and-webhooks.html
+++ b/docs/push-feed-and-webhooks.html
@@ -202,7 +202,7 @@
-Live Tennis API · docs · version 1.13.77
+Live Tennis API · docs · version 1.13.78
Tennis WebSocket feed and webhooks
How do you receive tennis data as it happens instead of polling? Two ways, both ULTRA. GET /ws-token mints a short-lived token for the high-fan-out push feed, which streams score and point changes as they are written. POST /webhooks registers an outbound HTTP callback for the same events; GET /webhooks lists your registrations and never returns the signing secret. Webhooks require a direct key, not a marketplace one.
4 endpoints on this page. Base URL
diff --git a/docs/reference.html b/docs/reference.html
index 829dd04..e6b25f1 100644
--- a/docs/reference.html
+++ b/docs/reference.html
@@ -207,7 +207,7 @@