Live Tennis API DocsGet a free key
Explore the documentation

Live Tennis API · docs · version 1.13.77

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 49 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
limits.per_minuteinteger or null
limits.per_dayinteger or null
todayobject
today.callsinteger
today.errorsinteger
today.remaining_dayinteger or nullRequests still SERVABLE today: the day allowance less SERVED calls (calls - errors). Refused requests never spend the allowance, so this does not fall when a 429, 403 or 404 is returned. Null when the tier carries no day cap.
historyarray of objectLast 30 days, oldest first
history[].daystring
history[].callsinteger
history[].errorsinteger
as_ofstring

Example

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