### GET /fixtures Source: https://docs.livetennisapi.com/openapi.yaml Retrieves upcoming scheduled fixtures, earliest first. Available on the FREE tier. Returns fixtures with start time and player ids where resolved. ```APIDOC ## GET /fixtures ### Description Retrieves upcoming scheduled fixtures, earliest first. Available on the FREE tier. Returns fixtures with start time and player ids where resolved. ### Method GET ### Endpoint /fixtures ### Parameters #### Query Parameters - **tour** (string) - Optional - Filter by tour. - **draw** (string) - Optional - Filter by draw. - **limit** (integer) - Optional - Limit the number of results. - **offset** (integer) - Optional - Offset for pagination. ### Response #### Success Response (200) - **data** (array) - List of Fixture objects. - **meta** (object) - List metadata. #### Response Example { "data": [], "meta": {} } ### Error Responses - **401** - Unauthorized - **429** - Rate Limited ``` -------------------------------- ### GET /markets Source: https://docs.livetennisapi.com/openapi.yaml Lists the match-winner market(s) for a given match. Requires the match_id query parameter and a PRO subscription. ```APIDOC ## GET /markets ### Description Lists the match-winner market(s) for a given match. Requires the match_id query parameter and a PRO subscription. ### Method GET ### Endpoint /markets ### Parameters #### Query Parameters - **match_id** (integer) - Required - The ID of the match. ### Response #### Success Response (200) - **data** (array of Market) - The list of markets. - **meta** (object) - Contains match_id and count. - **match_id** (integer) - The match ID. - **count** (integer) - Number of markets returned. #### Response Example { "data": [ { "id": "string", "match_id": 0, "name": "string", "status": "string", "prices": [] } ], "meta": { "match_id": 0, "count": 1 } } ### Error Responses - **400** - Bad Request - **401** - Unauthorized - **403** - Upgrade Required - **429** - Rate Limited ``` -------------------------------- ### GET /ws-token Source: https://docs.livetennisapi.com/ Mints a token for the separate push feed, used for high fan-out scenarios. ```APIDOC ## GET /ws-token ### Description Mints a token for the separate push feed, used for high fan-out scenarios. ### Method GET ### Endpoint /ws-token ### Response #### Success Response (200) - **token** (string) - The WebSocket token. #### Response Example { "token": "string" } ``` -------------------------------- ### GET /h2h Source: https://docs.livetennisapi.com/ Retrieves head-to-head data between players. Requires any active History plan, including Starter. ```APIDOC ## GET /h2h ### Description Retrieves head-to-head data between players. Requires any active History plan, including Starter. ### Method GET ### Endpoint /h2h ### Response #### Success Response (200) - **data** (object) - Head-to-head data. - **meta** (object) - Metadata about the response. #### Response Example { "data": {}, "meta": {} } ``` -------------------------------- ### GET /matches/{matchId} Source: https://docs.livetennisapi.com/openapi.yaml Fetches full match detail. The `market` embed is available at PRO level, and the `analysis` embed at ULTRA level. ```APIDOC ## GET /matches/{matchId} ### Description Fetches full match detail. The `market` embed is available at PRO level, and the `analysis` embed at ULTRA level. ### Method GET ### Endpoint /matches/{matchId} ### Parameters #### Path Parameters - **matchId** (string) - Required - The unique identifier of the match. ### Response #### Success Response (200) - **MatchDetail** - Match with score; `market` embed at PRO+, `analysis` embed at ULTRA. #### Response Example { "id": "match-123", "status": "live", "score": "6-4 3-2", "market": {}, "analysis": {} } ### Error Responses - **401** - Unauthorized - **403** - Upgrade Required - **404** - Not Found - **410** - Match Gone - **429** - Rate Limited ``` -------------------------------- ### GET /history/archive/* Source: https://docs.livetennisapi.com/ Accesses the results archive (1968-2022) endpoints. Requires any active History plan, including Starter. ```APIDOC ## GET /history/archive/* ### Description Accesses the results archive (1968-2022) endpoints. Requires any active History plan, including Starter. ### Method GET ### Endpoint /history/archive/* ### Response #### Success Response (200) - **data** (array) - List of archive records. - **meta** (object) - Metadata about the response. #### Response Example { "data": [], "meta": {} } ``` -------------------------------- ### GET /history/packages Source: https://docs.livetennisapi.com/openapi.yaml Lists pre-built monthly bulk history packages. Requires PRO on the live API, or Historical Data API Pro plan and up, or a one-off package access pass. ```APIDOC ## GET /history/packages ### Description Lists pre-built monthly bulk history packages. Requires PRO on the live API, or Historical Data API Pro plan and up, or a one-off package access pass. ### Method GET ### Endpoint /history/packages ### Parameters #### Query Parameters - **kind** (string) - Optional - Package family. Enum: [tape, rankings, rally, archive, elo, archive_tape]. Default: tape. - **year** (string) - Optional - Year archive listing - every published month of the year (History Business, a 1-year package, or ULTRA). Pattern: ^\d{4}$. ### Response #### Success Response (200) - **data** (array of HistoryPackage) - Ready packages, newest period first. - **meta** (object) - Contains count (integer) and year (string, echoed only when ?year= was supplied). #### Error Responses - **400** - Bad Request - **401** - Unauthorized - **403** - Upgrade Required - **429** - Rate Limited ``` -------------------------------- ### GET /matches Source: https://docs.livetennisapi.com/openapi.yaml Lists matches by lifecycle status. The FREE tier provides live and upcoming matches; completed matches require a BASIC subscription and are part of the paid History product. ```APIDOC ## GET /matches ### Description List matches by lifecycle status. `status=live` and `status=upcoming` are the FREE current-state picture. `status=completed` pages historical results and is part of the paid History product – it requires BASIC. ### Method GET ### Endpoint /matches ### Parameters #### Query Parameters - **status** (string) - Required - Lifecycle status: live, upcoming, or completed. ### Response #### Success Response (200) - **data** (array) - List of match objects. Each match object includes an `id` field used as matchId across routes. - **meta** (object) - Pagination or metadata. #### Response Example { "data": [ { "id": "match-id-123" } ], "meta": {} } ``` -------------------------------- ### GET /rankings Source: https://docs.livetennisapi.com/openapi.yaml Returns rankings and Elo data. In PRO mode, returns rank-ordered listing; in ULTRA mode, returns per-player as-of records. The as-of Elo tape is ULTRA in both modes. ```APIDOC ## GET /rankings ### Description Returns rankings and Elo data. In PRO mode, returns rank-ordered listing; in ULTRA mode, returns per-player as-of records. The as-of Elo tape is ULTRA in both modes. ### Method GET ### Endpoint /rankings ### Parameters #### Query Parameters - **as_of** (date) - Optional - The effective date for point-in-time rankings. Returns the newest record effective on or before this date. ### Response #### Success Response (200) - **rankings** (array) - List of ranking records per system. #### Response Example { "rankings": [] } ### Error Responses - **401** - Unauthorized - **429** - Rate Limited ``` -------------------------------- ### GET /health Source: https://docs.livetennisapi.com/ Liveness probe endpoint that checks if the API is running. No authentication is required to call this endpoint. ```APIDOC ## GET /health ### Description Liveness probe endpoint to verify the API service is operational. No authentication is required. ### Method GET ### Endpoint https://api.livetennisapi.com/api/public/v1/health ### Parameters No parameters. ### Request Example No request body. ### Response #### Success Response (200) - No response fields documented. #### Response Example No response example provided. ``` -------------------------------- ### GET /tournaments/{tournamentId} Source: https://docs.livetennisapi.com/openapi.yaml Fetches a single tournament by its stable ID, which is the tournament_id carried on match objects. ```APIDOC ## GET /tournaments/{tournamentId} ### Description Fetches a single tournament by its stable ID, which is the tournament_id carried on match objects. ### Method GET ### Endpoint /tournaments/{tournamentId} ### Parameters #### Path Parameters - **tournamentId** (string) - Required - The tournament_id carried on match objects. ### Response #### Success Response (200) - **Tournament** - The tournament object. #### Error Responses - **401** - Unauthorized - **404** - Not Found ``` -------------------------------- ### GET /matches/{matchId}/events Source: https://docs.livetennisapi.com/openapi.yaml Lists match events, newest first. Requires PRO access. ```APIDOC ## GET /matches/{matchId}/events ### Description Lists match events, newest first. Requires PRO access. ### Method GET ### Endpoint /matches/{matchId}/events ### Parameters #### Path Parameters - **matchId** (string) - Required - The unique identifier of the match. #### Query Parameters - **limit** (integer) - Optional - Maximum number of events to return. - **offset** (integer) - Optional - Number of events to skip. ### Response #### Success Response (200) - **data** (array of Event) - Events. #### Response Example { "data": [ { "type": "point", "timestamp": "2023-01-01T12:00:00Z", "description": "Ace" } ] } ### Error Responses - **401** - Unauthorized - **403** - Upgrade Required - **404** - Not Found - **429** - Rate Limited ``` -------------------------------- ### GET /history/coverage Source: https://docs.livetennisapi.com/openapi.yaml Retrieves a prebuilt snapshot of match completeness statistics, rebuilt nightly. The response includes an as_of date and ledger_max_computed_at, with buckets by tour group and event type. ```APIDOC ## GET /history/coverage ### Description Retrieves a prebuilt rollup of match completeness statistics, rebuilt nightly. The artifact is never computed at read time and is dated by its own as_of field. ### Method GET ### Endpoint /history/coverage ### Response #### Success Response (200) - **CoverageRollup** - The rollup artifact, dated by its own as_of. #### Response Example (No example provided in source) ### Error Responses - **401** - Unauthorized - **403** - UpgradeRequired - **429** - RateLimited - **503** - coverage_unavailable - The artifact has not been built yet or is unreadable. Retry after the nightly build. ``` -------------------------------- ### GET /usage Source: https://docs.livetennisapi.com/openapi.yaml Returns your own usage vs quota for the calling API key. Available on any tier. Provides tier, limits, today's calls, and 30-day history. ```APIDOC ## GET /usage ### Description Returns your own usage vs quota for the calling API key. Available on any tier. Provides tier, limits, today's calls, and 30-day history. ### Method GET ### Endpoint /usage ### Parameters None ### Response #### Success Response (200) - **usage** (object) - Usage summary including tier, limits, today's calls, and 30-day history. #### Response Example { "tier": "free", "limits": {}, "today": 0, "history": [] } ### Error Responses - **401** - Unauthorized - **429** - Rate Limited ``` -------------------------------- ### GET /players Source: https://docs.livetennisapi.com/openapi.yaml Searches for players by name. Returns a list of players with ranking information, but no stats object in the list response. ```APIDOC ## GET /players ### Description Searches for players by name. Returns a list of players with ranking information, but no stats object in the list response. ### Method GET ### Endpoint /players ### Parameters #### Query Parameters - **search** (string) - Optional - Search term for player name. - **limit** (integer) - Optional - Maximum number of results. - **offset** (integer) - Optional - Number of results to skip. ### Response #### Success Response (200) - **data** (array of Player) - List of players. - **meta** (ListMeta) - Pagination metadata. #### Error Responses - **401** - Unauthorized - **429** - Rate Limited ``` -------------------------------- ### GET /history/packages/{period} Source: https://docs.livetennisapi.com/openapi.yaml Retrieves a single monthly package manifest or the bulk file itself. Without format returns the manifest; with format=jsonl or format=csv streams the file as an attachment. ```APIDOC ## GET /history/packages/{period} ### Description Retrieves a single monthly package manifest or the bulk file itself. Without format returns the manifest; with format=jsonl or format=csv streams the file as an attachment. ### Method GET ### Endpoint /history/packages/{period} ### Parameters #### Path Parameters - **period** (string) - Required - Calendar month, YYYY-MM - except for yearly kinds (rally, archive, elo, archive_tape), where it is the bare year YYYY. Pattern: ^\d{4}(-\d{2})?$. #### Query Parameters - **kind** (string) - Optional - Package family. Enum: [tape, rankings, rally, archive, elo, archive_tape]. Default: tape. ### Response #### Success Response (200) - **Package manifest** - File set, counts, sha256 (when no format specified). - **Bulk file** - JSONL or CSV attachment (when format=jsonl or format=csv). #### Error Responses - **400** - Bad Request - **401** - Unauthorized - **403** - Upgrade Required - **404** - Not Found (when the month has not been built yet) - **429** - Rate Limited ``` -------------------------------- ### GET /rally/matches Source: https://docs.livetennisapi.com/openapi.yaml Lists charted matches with per-match parse-quality counts. Supports pagination via limit and offset parameters. ```APIDOC ## GET /rally/matches ### Description Lists charted matches with per-match parse-quality counts. ### Method GET ### Endpoint /rally/matches ### Parameters #### Query Parameters - **gender** (string) - Optional - Gender filter, enum: M, W - **limit** (integer) - Optional - Pagination limit - **offset** (integer) - Optional - Pagination offset ### Response #### Success Response (200) - **data** (array) - List of RallyMatch objects - **meta** (ListMeta) - Pagination metadata #### Error Responses - **400** - Bad Request - **401** - Unauthorized - **403** - Upgrade Required - **429** - Rate Limited ``` -------------------------------- ### GET /matches - Query Parameters Source: https://docs.livetennisapi.com/openapi.yaml Lists the query parameters for the /matches endpoint, including pagination, date filters, tour, draw, player, tournament, and change-feed options. ```APIDOC ## GET /matches ### Description Retrieves a list of tennis matches with optional filtering by date, tour, draw, player, tournament, and change-feed cursor. ### Method GET ### Endpoint /matches ### Parameters #### Path Parameters - **id** (integer) - Required - Match identifier (path parameter) #### Query Parameters - **limit** (integer) - Optional - Maximum number of results. Default: 50, minimum: 1, maximum: 200. - **offset** (integer) - Optional - Number of results to skip. Default: 0, minimum: 0. - **from** (string) - Optional - Earliest play date, YYYY-MM-DD or ISO-8601 UTC datetime. A bare date covers that whole day. An unparseable value is a 400. - **to** (string) - Optional - Latest play date, same formats as from. A bare date includes everything played that day. from after to is a 400. - **tour** (string) - Optional - Restrict results to one tour. Enum: atp, wta, challenger, itf, juniors. Each value covers its singles and doubles draws. Omit for all tours. An unrecognised value is a 400. - **draw** (string) - Optional - Draw filter. Enum: singles, doubles. Composes with tour. A row whose draw is null matches neither value. An unknown value is a 400 bad_draw. - **player** (array of integers) - Optional - Filter to matches where this player id is EITHER participant. Repeatable (max 50 ids); multiple values return the deduplicated union. An unknown id returns an empty list; a non-integer value is a 400 bad_request. - **tournament_id** (string) - Optional - Filter to one tournament. Exact match on the stable numeric id. Pattern: ^[0-9]{1,20}$. Unknown-but-numeric ids return an empty list; a non-numeric value is a 400 bad_tournament_id. - **updated_since** (string) - Optional - CHANGE FEED. A UTC date (YYYY-MM-DD) or ISO-8601 datetime. Returns rows whose updated_at is at or after it, oldest first, with meta.next_cursor and meta.watermark. Cannot be combined with from/to (400 bad_updated_since). ### Response #### Success Response (200) - **meta** (object) - Contains pagination and change-feed metadata, including next_cursor and watermark. - **data** (array) - List of match objects. #### Response Example { "meta": { "count": 50, "next_cursor": "...", "watermark": "2026-08-18T12:00:00Z" }, "data": [ { "id": 123, "tournament_id": "1217", "draw": "singles", "updated_at": "2026-08-18T12:00:00Z" } ] } ### Error Handling - **400 bad_request** - Invalid player parameter (non-integer). - **400 bad_draw** - Unknown draw value. - **400 bad_tournament_id** - Non-numeric tournament_id. - **400 bad_updated_since** - updated_since combined with from/to. - **400** - Unparseable from/to values, or from after to. ``` -------------------------------- ### GET /webhooks Source: https://docs.livetennisapi.com/openapi.yaml Lists all webhooks for the authenticated key. Available for ULTRA and direct keys only. The secret is never included in the response. ```APIDOC ## GET /webhooks ### Description Lists all webhooks for the authenticated key. Available for ULTRA and direct keys only. The secret is never included in the response. ### Method GET ### Endpoint /webhooks ### Parameters None ### Response #### Success Response (200) - **data** (array of Webhook) - List of webhooks - **meta.count** (integer) - Number of webhooks #### Response Example { "data": [ { "id": 1, "url": "https://example.com/webhook", "events": ["score"], "enabled": true } ], "meta": { "count": 1 } } #### Error Responses - **401** - Unauthorized - **403** - Upgrade Required - **429** - Rate Limited ``` -------------------------------- ### WebSocket /ws Source: https://docs.livetennisapi.com/ Native WebSocket live feed for real-time scores and point events. Subscribe with topics and optional signals. ```APIDOC ## WebSocket /ws ### Description Native WebSocket live feed for real-time scores and point events. Subscribe with topics and optional signals. ### Method WebSocket ### Endpoint /ws ### Parameters #### Request Body - **topics** (array of strings) - Required - Topics to subscribe to, e.g., 'live-scores' or 'match:'. - **signals** (array of strings) - Optional - Additional signals to receive, e.g., 'break_point' or 'points'. ### Request Example { "topics": ["live-scores"], "signals": ["break_point"] } ### Response #### Success Response (200) - **subscribed** (frame) - Acknowledgment of subscription, echoes active signals. - **score** (frame) - Pushed on every score change, includes win_probability_p1 and danger. - **ping** (frame) - Heartbeat roughly every 15 seconds. - **break_point** (frame) - Pushed when break_point signal is active. - **break_point_result** (frame) - Pushed when break_point signal is active. - **point** (frame) - Pushed when points signal is active, one per persisted point. #### Response Example { "type": "subscribed", "topics": ["live-scores"], "signals": ["break_point"] } ``` -------------------------------- ### GET /history/{package} Source: https://docs.livetennisapi.com/openapi.yaml Downloads a history package manifest or bulk data file (JSONL, CSV, or corrections) for a specified package. Requires appropriate subscription tier based on package family. ```APIDOC ## GET /history/{package} ### Description Downloads a history package manifest or bulk data file (JSONL, CSV, or corrections) for a specified package. Requires appropriate subscription tier based on package family. ### Method GET ### Endpoint /history/{package} ### Parameters #### Path Parameters - **package** (string) - Required - The package identifier (e.g., rankings, rally, elo, archive, archive_tape). #### Query Parameters - **format** (string) - Optional - Omit for JSON manifest; set to 'jsonl', 'csv', or 'corrections' to download the file. ### Response #### Success Response (200) - **manifest** (object) - The JSON manifest when no format is specified. - **file** (binary) - The bulk file as attachment when format is specified (NDJSON, CSV, or corrections CSV). - **gzip** (binary) - Gzipped file served as application/gzip. #### Response Example { "manifest": {}, "file": "binary data" } ### Error Responses - **400** - Bad Request - **401** - Unauthorized - **403** - Upgrade Required - **404** - Not Found - **429** - Rate Limited ```