Skip to content

Rate limits

Two limits apply, both counted at the gateway:

Limit Default Scope Error code
Requests per minute 600 Per API key rate_limit_exceeded
Concurrent in-flight requests 20 Per organisation (all keys together) concurrency_limit_exceeded

A streaming request counts as in flight until its last byte is sent or the connection closes. There is no token-per-minute limit; spend is bounded by your balance. GET /v1/models and GET /v1/models/{id} are not rate limited (and not balance-checked), so listing what’s available never counts against either limit.

When a limit is hit you get HTTP 429 with an error.type of rate_limit_error and a Retry-After header in seconds. The two limits compute it differently:

  • rate_limit_exceeded counts requests in a fixed calendar-minute window, not a rolling one. Retry-After is the seconds left until that minute ends, so it can be anywhere from 1 to 60.
  • concurrency_limit_exceeded always carries Retry-After: 1 — retry almost immediately once one of your in-flight requests finishes.

The OpenAI SDKs honour Retry-After and retry twice by default; for high-volume batch jobs, add your own client-side throttle so you stay under 600 per minute instead of relying on retries.

siema_ai does not send X-RateLimit-* headers in V1.

Email support@siema-ai.pl with your organisation name and the peak requests per minute and concurrency you need. Limits are set per organisation and take effect without a new key.