Skip to content

Rate Limiting

The API enforces rate limits to ensure fair usage and platform stability. Limits are applied per API key for authenticated requests and per IP address for unauthenticated requests.

Authenticated endpoints are rate-limited by API key ID:

LayerStandard TierElevated Tier
Global (all endpoints)100 req/min500 req/min
Write endpoints (POST, PATCH, DELETE)30 req/min150 req/min
Billing endpoints10 req/min30 req/min

All new API keys start at the standard tier. To request elevated limits, contact us from your API Keys dashboard page — an admin will review and grant access.

EndpointKey ByLimit
Registration (/api/v1/auth/register)IP address5 req/15min
RegistrationEmail (in request body)3 req/hour
Public endpoints (/api/v1/public/*)IP address60 req/min

Every response includes rate limit headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1709312400
HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window
X-RateLimit-RemainingRemaining requests in the current window
X-RateLimit-ResetUnix timestamp (seconds) when the window resets
Retry-AfterSeconds to wait before retrying (only on 429 responses)

When you exceed the rate limit:

HTTP/1.1 429 Too Many Requests
Retry-After: 30
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1709312400
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30 seconds."
},
"meta": {
"requestId": "req_abc123",
"timestamp": "2026-03-02T12:00:00Z"
}
}
  1. Respect Retry-After — wait the specified number of seconds before retrying
  2. Use exponential backoff — if you continue hitting limits, increase wait times
  3. Monitor remaining quota — check X-RateLimit-Remaining and slow down proactively
  4. Batch where possible — reduce request count by fetching larger pages (up to limit=100)
  5. Cache responses — avoid re-fetching data that hasn’t changed