Live Tennis API DocsGet a free key
Explore the documentation

Live Tennis API · docs · version 1.13.60

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.

The endpoints

Each one below lists its plan tier, every parameter, the response shape and an example. They are the same entries as in the full reference, which carries all 48 operations of the API on one page.

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_..."