# Rate limits

> The Markdown form of https://openfill.ai/docs/rate-limits. The index of every docs page is https://openfill.ai/llms.txt, and every page in one file is https://openfill.ai/llms-full.txt.

Every limit GET /v1/rate-limits publishes, with the value it enforces today and what you get when you reach it. The figures on this page are read from the gateway as it renders.

No `x-ratelimit` header is sent with a response. Reaching a request-rate or queue ceiling answers `429`; request-rate limits include `Retry-After`, while the open-stream cap does not.

## The rate limits and caps

Each limit applies to traffic sharing your account, key or address. Clients behind the same address share its public allowance. A price-locked request can still be turned away for capacity inside its window; that is the market rather than a limit, and the next section says so.

| Limit | Value | When you reach it |
| --- | --- | --- |
| Inference requests per minute, per API key | 1,200 | `429 rate_limit_error` with `Retry-After`. |
| Batch submissions per minute, per account | 1,200 | `429 rate_limit_error` with `Retry-After`. |
| Order, batch, account and usage operations per minute, per account | 2,400 | `429 rate_limit_error` with `Retry-After`. |
| File uploads, reads and deletes per minute, per account | 1,200 | `429 rate_limit_error` with `Retry-After`. |
| Public requests per minute, per address | 600 | `429 rate_limit_error` with `Retry-After`. |
| Open market streams, per address | 5 | `429`, and the stream is refused. Close one to open another. |
| Queued orders, per account | 2,000 | `429 rate_limit_error`. Counted across every model. Batch lines have a cap of their own in this table. |
| Request body | 8 MB | `413`. |
| Downloads per hour, per account: results, batch files and request logs together | 4 GB | `429 rate_limit_error` with `Retry-After`. One download may finish past the line; the next waits. |
| Active API keys, per account | 50 | `403` when making another. Revoke one first. |
| Order timeout | 10 seconds to 30 days | A `max_wait` from one second up to the floor is raised to the floor, and one above the configured ceiling is lowered to it. The request schema accepts at most 2592000; larger values, zero and fractions are refused with `400`. The account setting is refused with `400` outside the range. |
| Price lock execute window | 10 seconds | A locked request that has not started by then expires, with status expired and `429 capacity_unavailable`. Nothing is charged. |
| Batches running at once, per account | 5 | `429 rate_limit_error` on the next create, with `Retry-After`. |
| Queued batch orders, per account | 5,000 | The batch stays in validating and fans out the rest as lines finish. Never an error. |
| Requests per batch input file | 10,000 | The batch fails validation, with the count in its error. |
| Batch input file size | 50 MB | `413` on upload. |
| Data storage, longest period | 30 days | `400` on the setting. A per-request `retention_days` is clamped to the account setting. |
| Data storage, total size | 100 GB | The oldest stored bodies are deleted to make room. Never an error. |
| Shortest time batch output is kept | 1 day | A floor rather than a limit: batch output is kept at least this long whatever your storage setting. |
| Top-up | $10 to $10,000 | `400` on the top-up form. |

## What is a rate limit and what is the market

A request that waits because the level is above its price limit has hit no rate limit. It is in the book, ranked by its price limit, and it runs when the fleet has room for it, even if the published level is still above its price. It waits until your timeout, and pays the lower of the level and its price limit when it runs. The rows above are the constants; the wait is the product.

Two refusals look like limits and are the market instead: `402` when your balance cannot cover a request at the current level, and `429 capacity_unavailable` when a price-locked request misses its window. On a fixed-price model the same two answer for its prices and its capacity: `402` when your balance cannot cover the request at those prices, and `429 capacity_unavailable` when no slot comes free before its timeout. Neither is charged, and both are on [errors and retries](https://openfill.ai/docs/errors).

Request budgets start full and refill continuously at the published rate. A burst can spend the available tokens; Retry-After reports when another token is expected. Inference includes Messages token counting. Account operations also include repricing, deleting results and changing account defaults.

## Reading them from code

`GET /v1/rate-limits` needs no key and answers with every figure above, so a client can pace itself instead of learning a ceiling from a `429`.

```bash
curl https://api.openfill.ai/v1/rate-limits
```

To request a higher limit, email [support@openfill.ai](mailto:support@openfill.ai) with your workload and the limit concerned. Each request is reviewed individually.

Previous: [Price lock](https://openfill.ai/docs/price-lock). Next: [Orders](https://openfill.ai/docs/orders).
