IDs
Ids are strings. Store them as given; never build one yourself, because a match or tournament can carry an id from more than one source.
Players
| Form | Example | Notes |
|---|---|---|
| atp_<number> | atp_206173 (Jannik Sinner) | ATP players, the stable id for the whole history. |
| wta_<number> | wta_… | WTA players. |
| atp_itf_<n>, wta_itf_<n> | atp_itf_… | Players first seen in an ITF World Tennis Tour draw. |
Look an id up from a name with GET /tennis/players/search?q=sinner, or fetch up to 50 at once with /tennis/players/batch.
Matches
| Form | Example | Where it comes from |
|---|---|---|
| s365_<gid> | s365_4869062 | A live or upcoming match on /matches/live, /matches/upcoming and the WebSocket. |
| s365_<year>_<gid> | s365_2026_4764920 | The same match once played and archived (2026 Wimbledon final). |
| atp_<year>_<tourney>_<n> | atp_2025_540_… | Matches imported from the historical archive. |
GET /tennis/matches/{id}/status accepts any of these forms and answers one status (scheduled, live, completed) with is_final, so you never have to know which stage a match is in before asking. GET /tennis/matches/{id}/tournament-link resolves any match id to its tournament.
Tournaments
| Form | Example | Notes |
|---|---|---|
| <tour>_<year>_<code> | atp_2026_540 (Wimbledon 2026) | One edition of a tournament. The code is constant across years: 540 is Wimbledon, 560 the US Open, 520 Roland Garros. |
| fs_<tour>_<year>_<slug> | fs_atp_2026_wimbledon | Junior and ITF events added from the ITF/junior feed. |
Search tournaments by name with /tennis/tournaments?q=wimbledon (the main event is listed first), or list a season with /tennis/tournaments/calendar?year=2026.