OpenFill is in development. Inference is off, but is tested end to end, and will switch on at launch. All data currently on the site is for live testing: it will be erased at launch.

Skip to content
openfill

Rate limits

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.

LimitValueWhen you reach it
Inference requests per minute, per API key1,200429 rate_limit_error with Retry-After.
Batch submissions per minute, per account1,200429 rate_limit_error with Retry-After.
Order, batch, account and usage operations per minute, per account2,400429 rate_limit_error with Retry-After.
File uploads, reads and deletes per minute, per account1,200429 rate_limit_error with Retry-After.
Public requests per minute, per address600429 rate_limit_error with Retry-After.
Open market streams, per address5429, and the stream is refused. Close one to open another.
Queued orders, per account2,000429 rate_limit_error. Counted across every model. Batch lines have a cap of their own in this table.
Request body8 MB413.
Downloads per hour, per account: results, batch files and request logs together4 GB429 rate_limit_error with Retry-After. One download may finish past the line; the next waits.
Active API keys, per account50403 when making another. Revoke one first.
Order timeout10 seconds to 30 daysA 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 window10 secondsA locked request that has not started by then expires, with status expired and 429 capacity_unavailable. Nothing is charged.
Batches running at once, per account5429 rate_limit_error on the next create, with Retry-After.
Queued batch orders, per account5,000The batch stays in validating and fans out the rest as lines finish. Never an error.
Requests per batch input file10,000The batch fails validation, with the count in its error.
Batch input file size50 MB413 on upload.
Data storage, longest period30 days400 on the setting. A per-request retention_days is clamped to the account setting.
Data storage, total size100 GBThe oldest stored bodies are deleted to make room. Never an error.
Shortest time batch output is kept1 dayA floor rather than a limit: batch output is kept at least this long whatever your storage setting.
Top-up$10 to $10,000400 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.

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 [email protected] with your workload and the limit concerned. Each request is reviewed individually.