Skip to main content
This is how an application discovers, at boot, which model ids its key can call and what binds them. Never hard-code a list you guessed.

Request

Response

The numeric values above are an example. Read them from your own response, because they move with capacity. The fields are additive. A workspace deployment omits hosted pricing and cache facts rather than inheriting them from a model with the same id.

The four limit fields exist so you never learn a limit from a 429

They are read from the code that enforces them, so a published limit and an applied limit cannot drift apart. All four are additive to and disjoint from the fields the OpenAI Model object declares, so a client typed against the OpenAI SDK keeps parsing this response and ignores what it does not recognize.

Absent means undeclared, never zero and never unlimited

A field appears only where the limit it names is actually enforced for that model. A model that has not reported a served window carries no context_window rather than borrowing another model’s number.

Bytes can bind before tokens

max_request_bytes is a byte ceiling, not a token ceiling, and the two bind independently. For a very long prompt the byte ceiling is often the one that binds first, whatever the context window says.

Prices and cache behavior

Hosted model prices are returned here for discovery and repeated on each model’s page in the Model Library. The page also carries the human-readable cache eviction and retention statement, served precision when verified, capabilities, and the recommended output budget.

Available and paused

Model availabilityGET /v1/modelsavailable”availability”: “available”200requests are served and billedListed with its id, prices on its page.paused”availability”: “paused”503hosted_model_pausedNothing is charged. Retry-After capped at 60s.pausereturnA paused model is not a missing model: the id stays valid and stays listed, with paused_untilcarrying the scheduled return. Poll and retry; never drop the id from your configuration.
Model availabilityGET /v1/modelsavailable”availability”: “available”200requests are served and billedListed with its id, prices on its page.paused”availability”: “paused”503hosted_model_pausedNothing is charged. Retry-After capped at 60s.pausereturnA paused model is not a missing model: the id stays valid and stays listed, with paused_untilcarrying the scheduled return. Poll and retry; never drop the id from your configuration.
A paused model keeps its place in the list. It is a real configured model that is temporarily not serving, so poll this endpoint or retry the call itself to detect it coming back. The id does not change across a pause.

Retrieve one model

Returns a single object with the same fields and no list wrapper. An id your key cannot reach returns 404 model_not_found. URL-encode any id containing a slash.

Which models appear

For a normal workspace key the list combines the public hosted models with the verified workspace deployments that key can reach. Models with the same identity are de-duplicated. A key pinned to one deployment sees only what that scope reaches and does not receive the general hosted list.

Authentication and rate limits

The endpoint needs a workspace API key, uses that key’s requests-per-minute limit, and returns X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and X-RateLimit-Tier. Listing models reserves no inference credit, but it is still an authenticated request against your per-minute budget, so do not call it in a hot loop.
Use the returned id exactly. Do not substitute a model’s internal served-model identifier.

Chat completions

Send one of these ids as the model field.

Authentication

The key that decides which ids you see.

Rate limits

The three layers that can refuse you.