API Reference
Rate Limits
Per-tier rate limits, 429 response shape, and backoff strategy.
Limits by tier
| Tier | Requests/minute | Requests/day |
|---|---|---|
| Starter | 10 | 200 |
| Pro | 30 | 500 |
| Pro+ | 40 | 750 |
| Enterprise | 60 | 2000 |
Polling GET /jobs/{job_id} counts against your rate limit. Poll no faster than once every 2 seconds.
429 response
When you exceed a rate limit, the API returns HTTP 429:
{
"ok": false,
"error": "Rate limit exceeded. Please slow down.",
"code": "RATE_LIMIT_EXCEEDED"
}
Backoff strategy
On a 429, wait before retrying. Use exponential backoff with jitter:
import time
import random
def request_with_backoff(fn, max_retries=4):
for attempt in range(max_retries):
resp = fn()
if resp.status_code != 429:
return resp
wait = (2 ** attempt) + random.uniform(0, 1)
time.sleep(wait)
raise RuntimeError("Rate limit: max retries exceeded")
Monthly spend limits
Separate from rate limits, each tier has a monthly LLM spend allowance. When your allowance is exhausted, write operations return HTTP 402. Top up from the account page or upgrade your plan.
What’s next
- Errors – full error code reference
- Fair usage – what triggers suspension