Skip to content

Rate limits

Each API key has a sustained requests-per-second limit derived from your plan (Free 1 req/s → Max 60 req/s — see Pricing). Limits are enforced with a token bucket: bursts up to your per-minute capacity are allowed, then requests are smoothed to the sustained rate.

{ "error": "rate_limited", "retry_after_ms": 850 }
  • HTTP 429, error: "rate_limited".
  • retry_after_ms tells you the minimum time to wait before retrying.
  • The x-ratelimit-remaining header on every response reports how many requests remain this minute.

Beyond the per-second rate, there’s a cap on in-flight requests. If you fire many requests at once you may see:

  • 409 request_in_progress — an identical idempotent request is already running.
  • 503 too_many_concurrent_requests — too many concurrent requests in flight; back off and retry.
  • Respect retry_after_ms; otherwise use exponential backoff with jitter.
  • Keep a client-side concurrency cap matched to your plan’s rate.
  • The official SDKs retry 429/503 automatically.