# Rate limits and capacity

Distinguish per-key limits from model, modality, and queue saturation.

Not every `429` means the same thing. Read the error `code`, `message`, `metadata`, and `Retry-After` header.

## Per-key request rate

A key can have a requests-per-minute policy. Exceeding it returns `429` and normally a short retry interval. Reduce request rate, use a client-side token bucket, or request a different policy.

## Per-key concurrency

A key can limit in-flight requests. The error metadata can include `concurrent_limit` and `error_code:"concurrent_limit_exceeded"`. Wait for an existing request to finish before retrying.

## Model and global capacity

When all usable slots are busy, the router returns `429` with sanitized capacity information. A queue can admit work briefly; expiration in that queue is also `429`, not a generation timeout. Do not infer internal topology from the capacity object.

## Modality capacity

Vision can have a separate capacity pool from text. Audio and speech workers can likewise saturate independently. `GET /v1/models` exposes current public capacity and modality splits where available. These live values are informational and can change immediately; they are not reservations or guarantees.

Temporary readiness changes and free-capacity changes are normal operational state, not documentation drift.
