Skip to content

OmnAPI Rate Limits

The default public limit is 2000 requests per 60 seconds for the applicable limit scope, such as the API key, account, or client IP.

The 429 response carries the active limit that fired. You can always retry after Retry-After seconds.

When the limit fires, the response is 429 with body:

{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 42 seconds."
}
}

Every response (success or rate-limited) carries:

HeaderMeaning
X-RateLimit-LimitThe active limit for this scope
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait (only on 429)
async function call() {
for (let attempt = 0; attempt < 5; attempt++) {
const r = await fetch(url, { headers: { "x-api-key": key } });
if (r.status !== 429) return r.json();
const wait = Number(r.headers.get("Retry-After") ?? 1);
await new Promise((res) => setTimeout(res, wait * 1000));
}
throw new Error("Rate limit retry budget exhausted");
}

Contact support if your production load needs a higher allowance.