Live Tennis API · docs · version 1.13.4

Tennis API authentication, quota and status

How do you authenticate, and how do you see what quota is left? Send your key as X-API-Key on every request. GET /usage returns your own consumption against your plan's quota and works on every tier including FREE, so a client can check its own headroom before a burst. GET /health is the unauthenticated liveness probe.

2 endpoints on this page. Base URL https://api.livetennisapi.com/api/public/v1; authenticate with the X-API-Key header. Plans involved: FREE, —. A free key needs no card.

GET /health

Liveness probe (no auth)

Plan required: · operationId: healthCheck

Responses

GET /health — responses
StatusMeaning
200OK

Response fields

GET /health — response fields
FieldTypeDescription
statusstring
versionstring

Example

curl https://api.livetennisapi.com/api/public/v1/health

GET /usage

Your own usage vs quota (FREE — any tier)

Plan required: FREE · operationId: getUsage

Durable daily usage for the calling key: tier, limits, today's calls (current to the second) and a 30-day history. The per-minute window is on the X-RateLimit-* headers of every response, not here. Calls to this endpoint are quota-exempt — checking your usage never consumes it.

Responses

GET /usage — responses
StatusMeaning
200Usage summary
401Missing, unknown, or disabled credentials
429Rate limit exceeded (Retry-After header present). Three body shapes, told apart by error and scope: the per-MINUTE limit (rate_limited, with upgrade_url, tier and price naming the next tier up); the per-DAY quota (rate_limited with scope: "day", limit_per_day, and resets_at — the absolute ISO instant the daily window resets); and abuse_throttled with retry_at_epoch — a 24-hour block applied to clients that keep hammering far past their cap, which a well-behaved retry loop never sees. Fix the loop rather than retrying through it.

Response fields

GET /usage — response fields
FieldTypeDescription
principalstringOpaque ref to your own key
tierstring (free, basic, pro, ultra)
base_tierstringSubscription tier; equals tier unless a temporary grant is active
tier_expires_atstring or nullWhen a temporary tier grant reverts, else null
channelstring
limitsobject
todayobject
historyarray of objectLast 30 days, oldest first
as_ofstring

Example

curl https://api.livetennisapi.com/api/public/v1/usage \
  -H "Authorization: Bearer twjp_..."