Default limit
300 requests per minute, per organization.
organizationId — every credential (API key or Clerk session) belonging to the same organization shares the same 300-requests-per-minute budget. Requests that don’t resolve to an organization (which should not normally happen for authenticated /v1/* routes) are keyed by IP address instead.
Both the request ceiling and the time window are configurable per deployment via environment variables:
| Env var | Default | Meaning |
|---|---|---|
RATE_LIMIT_MAX | 300 | Maximum requests allowed per window, per organization. |
RATE_LIMIT_WINDOW | 1 minute | The rolling time window the limit applies over. |
Public paths are not rate-limited
/health, /openapi.json, /openapi.yaml, /docs (and /docs/*), and /webhooks/* are exempt from rate limiting — the same allow-list used for public, unauthenticated routes.
Response headers
Every response from a rate-limited route carries headers describing your current budget:| Header | Meaning |
|---|---|
x-ratelimit-limit | The configured maximum requests per window (RATE_LIMIT_MAX). |
x-ratelimit-remaining | Requests remaining in the current window. |
x-ratelimit-reset | Seconds until the current window resets. |
Exceeding the limit — 429
Once your organization exceeds RATE_LIMIT_MAX requests within RATE_LIMIT_WINDOW, ReconLayer responds with 429 Too Many Requests and adds a retry-after header (in seconds) indicating when the window resets:
429 Too Many Requests
Handling 429s
Read retry-after
Use the
retry-after header (seconds) to decide how long to wait before your next request — don’t guess or use a fixed backoff that ignores it.Back off and retry
For idempotent writes, retry with the same
Idempotency-Key and request body after the indicated delay — see Idempotency.Spread bursty workloads
If you’re paginating through a large list (e.g. an export or bulk reconciliation sweep), add a small delay between pages rather than firing requests as fast as possible. See Pagination.
Example: backoff loop
Next steps
- Errors — the full error catalog, including other
4xx/5xxstatuses. - Idempotency — safely retrying write requests after a
429or5xx. - Authentication — how the organization that rate limits are keyed on is resolved.
