Restricted access. Public API v2 is currently available only to allowlisted
organizations. Requests from workspaces that have not been enabled are rejected.
Contact your Reevo representative to have your organization added to the allowlist.
Rate Limits
Public API v2 is rate limited per organization. The limit is shared across every API key in your workspace, not tracked per key or per IP address.
The limit
By default, requests are limited to roughly 10 requests per second across the whole organization. Individual endpoints can carry their own tighter limit. Rate limiting is enabled by default. Exact limits are set by Reevo and can change, so treat the limit as a moving target and rely on the response headers rather than hardcoding a number.
The 429 response
When a request exceeds the limit, the API returns 429 with the standard error envelope:
{
"status_code": 429,
"error_type": "rate_limited",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"details": {
"blocking_tier": "org_global",
"retry_after_seconds": 1
}
}
details.blocking_tier is org_global when the organization-wide limit was hit, or org_endpoint when a specific endpoint’s limit was hit. details.retry_after_seconds tells you how long to wait.
Successful (2xx) responses and 429 responses carry headers describing your current budget. Other error responses (for example 400, 404, 422) do not carry these headers, so do not rely on them being present on every response. Read them to stay under the limit proactively.
| Header | Meaning |
|---|
RateLimit-Limit | Requests allowed in the current window. |
RateLimit-Remaining | Requests left in the current window. |
RateLimit-Reset | Seconds until the window resets. |
Retry-After | Seconds to wait before retrying. Sent on 429 responses. |
Handling limits
- Honor
Retry-After on a 429 before retrying. Do not retry immediately.
- Watch
RateLimit-Remaining and slow down before you hit zero.
- Use exponential backoff with jitter when you do get a
429, so concurrent clients do not retry in lockstep.
- Reduce concurrency and page through large result sets with
_query instead of firing many parallel reads.
See Errors and Validation for the full error envelope.