Skip to main content

How it works

Public index and catalog routes that use the public limiter allow 60 requests per minute per IP address.
The public limiter runs before optional API-key authentication, so sending a key does not replace this limit with a per-key tier. Requests from origins configured as trusted by Ornn bypass the public limiter; this is deployment configuration, not a general client entitlement. See Authentication for which endpoints are public.

Chat

POST /api/chat is the exception, because each call spends model tokens rather than serving a stored row. It allows 20 messages per minute per key, not per IP — so rotating addresses does not widen it, and a key is metered as one caller wherever it calls from. Its 429 body states the 20-message allowance and carries the same Retry-After header.

When you exceed the limit

After the enforced allowance is exhausted, the limiter returns HTTP 429 Too Many Requests with a JSON body stating the allowance it enforced — 60 requests per minute for the public limiter. Use the response’s Retry-After header to determine how many seconds to wait before retrying.
Back off when you receive a 429; repeated public polling should be cached client-side or moved to a server-side cache.

Avoiding rate limits

  • Cache values you read repeatedly. The GPU index only updates hourly, so there’s no benefit to polling faster than that.
  • Batch where possible. For example, GET /api/daily-index/all returns every GPU in one request instead of one call per model.