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

FormExampleNotes
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

FormExampleWhere it comes from
s365_<gid>s365_4869062A live or upcoming match on /matches/live, /matches/upcoming and the WebSocket.
s365_<year>_<gid>s365_2026_4764920The 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

FormExampleNotes
<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_wimbledonJunior 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.