Getting started
Rate limits
One sliding-window limiter per key. Friendly headers on every response. Clear 429 when you're over.
Free preview limits
During the public preview every self-serve key is capped at:
- 60 requests per minute — sliding window, not a hard top of minute reset.
- 10,000 requests per month — counted over the calendar month in UTC.
Both endpoints under /api/v1/* count toward the same limit.
Response headers
Every /api/v1/* response carries:
Headers
X-RateLimit-Limit: 60 X-RateLimit-Remaining: 47 X-RateLimit-Reset: 1779020201 X-Api-Key-Tier: free
X-RateLimit-Reset is a Unix timestamp in seconds. Subtract Date.now() / 1000 to get seconds until the window resets.
When you're over
We respond with 429 and include a Retry-After header in seconds. The body is JSON:
429 body
{
"error": "rate_limited",
"resetAt": 1779020261
}The limiter uses Upstash Redis in production. In local dev it falls back to an in-memory window, which means limits don't survive process restarts.
Need more?
Higher limits (millions of requests, custom monthly quotas, SLA) are issued out-of-band while paid plans are paused. Email support@oxar.app with what you're building and we'll set you up.