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.

get/events

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

typestring

Comma-separated event types (see Event.type), or stoppages for the whole stoppage family.

after_idinteger

Serve rows with id greater than this, ascending. Take it from meta.next_cursor or the last row's id.

sincestring date-time

First-call lower bound, a UTC instant. Rows stamped after it, ascending.

limitinteger

Response

Events across the slate, ascending id

Changes

No recorded changes to this operation across all 1 revision of this API.