Skip to content

Rate limits

Generous limits for automation, strict limits for anonymous traffic.

Limits#

SurfaceLimit
API keys600 requests per minute per key
/public/*20 requests per minute per IP
Trader endpointsGenerous per session limits sized for a live interview

Headers#

Responses include RateLimit-Remaining. When it reaches zero, the next request answers 429 with code rate_limited.

http
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
RateLimit-Remaining: 0

Backing off#

typescript
async function withRetry(req: () => Promise<Response>, attempts = 5) {
  for (let i = 0; i < attempts; i++) {
    const res = await req();
    if (res.status !== 429 && res.status < 500) return res;
    await new Promise((r) => setTimeout(r, 2 ** i * 500 + Math.random() * 250));
  }
  throw new Error("Rubi API unavailable after retries");
}