# Rate limits

Limits are applied per key using a token bucket. Tier numbers are set when a key is issued and shown in the key confirmation; higher limits are available on request for production integrations.

Every response carries:

| Header | Meaning |
| --- | --- |
| `X-RateLimit-Limit` | Requests allowed in the current window |
| `X-RateLimit-Remaining` | Requests left |
| `X-RateLimit-Reset` | Unix time when the bucket refills |

On `429`, wait for `Retry-After` seconds and retry with backoff.

Good practice: cache static data (collection metadata, traits), use batch endpoints, filter server-side, and subscribe to events rather than polling where an event stream is available.
