v1.3.0 — the tape, statistics, rankings, rally & charting, push feed
Full typed coverage of the 2026-08 API surface, on both clients.
Added
- Point-by-point tape —
get_match_tape(match_id, sequence=)(BASIC, or any History plan); works on live matches.TapeRow=Score+point_winner(clean rows only); per-set tiebreak finals intiebreaks; typedTapeMetacoverage. - In-play statistics —
get_match_statistics()(ULTRA): derived vs measured families, per-family freshness; measured fields omitted when absent, never zero-filled. - Point-in-time rankings —
list_rankings(): full published table for one system (PRO) or per-player as-of records viaplayer=(ULTRA).RankingRecordcarriesprevious_rank,rank_movement,rating. - Rally construction & charting (ULTRA) —
list_rally_matches/get_rally_match/get_match_rally(404not_charteddistinguishable),get_charting_player/get_charting_match. - Bulk packages —
list_history_packages(kind=, year=)/get_history_package()(PRO; non-tape kinds andyear=are ULTRA). - Push feed —
get_ws_token()(ULTRA):ws_url,match_channel(id),slate_channel(slate:all). - Usage —
get_usage(), quota-exempt. - Errors —
AbuseThrottled(aRateLimited;.retry_at_epoch, never auto-retried) and daily-cap 429s surfacing.scope/.limit_per_day/.resets_at(parsed; not auto-retried). Parameter-awarerequired_tieron 403s.
Changed
- WebSocket score frames carry the ULTRA model fields (
win_probability_p1,danger) exactly as REST does. - README: current quota grid (FREE 100/day), full endpoint/tier table, five-tour coverage (ATP, WTA, Challenger, ITF and juniors).
Fully backwards compatible.