Beta
Guides / Rate limits

Rate limits

Request budgets per key and per IP.

Two independent budgets protect the API — one per key, one per IP for anonymous traffic.

Keyed limits

LimitValueScope
Minimum interval1 request / 3 secondsper key
Hourly budget500 requests / hourper key

A call that violates either returns 429 with an exact Retry-After header (whole seconds):

{
"error": { "code": "rate_limit.interval", "message": "Too soon after the previous request" },
"request_id": "5f0c…"
}
  • rate_limit.interval — second admitted call inside the 3-second window.
  • rate_limit.hourly_budget — the 500/hour budget is exhausted.

Rejected requests don't count. A 429 never consumes budget — the interval and hourly counters only advance on admitted calls. Back off by Retry-After and retry.

Anonymous limits

Requests without a key (the keyless Summarize lane) are limited to 30 requests / minute / IP — 429 rate_limit.ip_per_min beyond that.

The keyless summarize lane additionally carries the free tier's own daily caps (429 rate_limit.free_tier_daily), surfaced with the same Retry-After header.

Practical guidance

  • One key per integration means one budget per integration — parallel integrations don't share the 3-second interval.
  • The interval is strict: a well-behaved client tops out at 20 requests/minute, far below the 500/hour cap. The hourly budget only binds for burst-then-sustained patterns.
  • Chat sends have their own daily message cap on top (429 rate_limit.daily_messages) — see Chat.