ClientCasa
API

Rate Limits

Per-key request limits and how to back off gracefully.

The v1 API rate-limits each API key independently. Every response carries the current state of your budget in headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp (seconds) when the window resets

When you exceed the limit, the API returns 429 rate_limited and sets Retry-After: <seconds>. Wait at least that long before retrying.

Current limits

CredentialLimitWindow
API key1000 requestsper hour
OAuth access token1000 requestsper hour

If your integration genuinely needs more, contact support — these are starting limits.

Back-off strategy

Exponential back-off with jitter on 429 and 5xx responses:

async function withBackoff(req, max = 5) {
  for (let attempt = 0; attempt < max; attempt++) {
    const res = await req()
    if (res.status !== 429 && res.status < 500) return res
    const retryAfter = Number(res.headers.get('retry-after')) || 2 ** attempt
    const jitter = Math.random() * 0.5
    await new Promise((r) => setTimeout(r, (retryAfter + jitter) * 1000))
  }
  throw new Error('Max retries exceeded')
}

On this page