Slate-wide events feed — every match's events in one call, oldest first, cursor by id (PRO)
Added 2026-09-13. The rows of GET /matches/{matchId}/events for EVERY match in one request, so a poller watching the whole live slate spends one request per tick rather than one per match. after_id returns rows with id greater than the one passed, ascending, and meta.next_cursor names the last id served (null on a short page = caught up); since (UTC instant) is the first-call lower bound; with neither the newest page is served, still ascending. type narrows to a comma-separated list of event types or the family name stoppages (stoppage_, pause_, medical_timeout_, trainer_called, toilet_break_*). Rows carry id and match_id next to the per-match fields. Measured 2026-09-13: a scorer-stated stoppage reaches the feed a median 8 s (p90 13 s) after the scorer's own instant; the WebSocket stoppages signal pushes the same row as it is written.
Request
- Base URL: https://api.livetennisapi.com/api/public/v1
- URL: https://api.livetennisapi.com/api/public/v1/events
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Query parameters
Comma-separated event types (see Event.type), or stoppages for the whole stoppage family.
Serve rows with id greater than this, ascending. Take it from meta.next_cursor or the last row's id.
First-call lower bound, a UTC instant. Rows stamped after it, ascending.
Response
Events across the slate, ascending id
Changes
No recorded changes to this operation across all 1 revision of this API.