input.quality string.
When it applies
Only models that offer more than one tier exposeinput.quality. For every
other model the field is not accepted. To see the accepted values for a specific
model, call GET /v3/models/{model} (or GET /v3/models/{model}/openapi.json)
and read the quality enum on that model’s input schema.
Today the merged public model ids and their published levels are:
GET /v3/models is the source of truth — always trust the enum published there
over any static list.
How to submit
Passinput.quality alongside the rest of your inputs:
Validation errors
- A missing
input.qualityon a model that requires one returns400 INVALID_ARGUMENTlisting the accepted values. - An unknown value returns
400 INVALID_ARGUMENTwith the same value list. - Sending
qualityto a model that has no quality levels also returns400 INVALID_ARGUMENT.
Retired level-specific model ids
The old level-specific slugs (for exampleveo-3-fast, gpt-image-2-medium,
kling-v3-pro-t2v) no longer resolve. Every v3 surface that took a model id —
submit, estimate, model detail, and per-model job listing — returns 404 with
a message pointing at the public id and the quality value to send instead:
input.quality.
Reading which tier ran
BothGET /v3/jobs/{job_id} (ResultResponse) and GET /v3/jobs
(JobSummary) now carry a quality field, and webhook payloads include it as
well. It reports the tier the job actually ran at, and is omitted for models
that do not offer quality levels — so you can log or branch on the tier without
re-parsing the request you submitted.