Models
The models the AI ops run on — what model may name on a job or a preset step, with each model's price, its categories and how big an image it is handed
1 endpoint under /api/v1/ai-models. What every call shares is on the REST overview, and what they are for — with the calls for every SDK, the CLI and MCP — on Ops & models → Models. * marks a required field.
List AI models
GET /api/v1/ai-models
Every model an AI op can run on, across the providers behind this API. A model runs an op when its categories include the op's modelCategory (GET /api/v1/ops); naming any other model is 400 invalid_param, with the models that fit in details.allowed. Leave model out and the op's defaultModel runs.
Each entry carries its price per image after markup (image_price_range) beside the provider's own list price (provider_price, provider_price_range), the parameters it takes, and max_input_edge / max_input_images — how big an input it is handed and how many images one call takes (what bounds a preset's reference images). The exact price of one request is the dry run.
USE THIS WHEN:
- Choosing a
modelfor an AI op, or checking one before a submit - Checking what a model costs, or how many reference images it takes
DO NOT USE WHEN:
- You want each op's default model and its price →
GET /api/v1/ops, which carries them
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| mode | query | string | ai_image (the default): the models the image ops run · analyze: the models the analyze op sells, priced per imageone of ai_image · analyze |
Returns 200 — data is ModelDTO[]
The models of that mode
Errors
| Status | Code and when |
|---|---|
| 400 |
|
Objects
Each described once; a linked type is another object on this page.
ModelDTO
A model an AI op can run on, with its price and what it accepts
| Field | Type | Description |
|---|---|---|
| categories | string[] | What the model is sold for. It runs an op when this includes the op's modelCategory (GET /api/v1/ops)e.g. ["image_generate","image_edit"] |
| completion_price | string | Price per 1M output tokens in USDe.g. "15.00" |
| context_length | integer (int32) | Maximum context window supported by the model (tokens)e.g. 128000 |
| created | integer (int64) | Unix timestamp when the model metadata was last updatede.g. 1711500000 |
| description | string | Short description of the model's capabilitiese.g. "Large multimodal model with fast responses." |
| id | string | The model's id — what model names on a job or a preset stepe.g. "fal-ai/bria/background/remove" |
| image_price_range | string | Our price per image in USD — the provider's list price plus our markup — as one figure, or min - max across sizes, qualities or scale factorse.g. "$0.009 - $0.133" |
| image_required | boolean | Whether an input image is required (true), optional (false), or not supported (null)e.g. true |
| input_modalities | string[] | Input modalities supported by the modele.g. ["text","image"] |
| max_input_edge | integer (int32) | The longest edge, in pixels, of an input image this model is handed: a larger input is turned upright, scaled down to it and re-encoded as WebP with no metadata before the provider sees it. For a model billed per megapixel it is also what the quoted price assumes. Absent for a model that takes no image.e.g. 2048 |
| max_input_images | integer (int32) | Maximum number of input images accepted. null = no image input, 1 = single image, >1 = multi-imagee.g. 1 |
| mode | string | Model mode: ai_image, or analyze for the models the analyze op sellse.g. "ai_image" |
| name | string | Human readable model namee.g. "OpenAI GPT-4o" |
| output_modalities | string[] | Output modalities supported by the modele.g. ["text","image"] |
| parameters | any | The parameters the model takes in a job's parameters: a list of {key, label, type, defaultValue}, with options or min / max where the value is bounded |
| prompt_price | string | Price per 1M input tokens in USDe.g. "5.00" |
| provider_price | string | The provider's list price per image in USD, before our markup — the cheapest end when the price has a range. Every model carries one, so our multiple of it can be checked.e.g. "0.039" |
| provider_price_range | string | The provider's list price range in USD across the same span as image_price_range. Present only for models whose provider price depends on a parameter.e.g. "$0.12 - $0.48" |
| series | string | Provider family derived from the model id prefixe.g. "Openai" |
| support_structured_output | boolean | Whether the model supports JSON schema structured outpute.g. true |
| supported_parameters | any | Supported optional parameters and their constraints (may be object or array) |