List Models
Retrieve the curated model catalog with capabilities and credit costs.
GET /v2/models
Returns the curated model catalog: every generation model available through the API, with its human-readable label, capabilities (aspect ratios, durations, resolutions, image input support) and credit cost range.
This endpoint is public — no authentication required. Use it to discover valid model values programmatically, build model pickers, or keep pricing displays in sync without hardcoding.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
modality | string | — | Filter by modality: "image", "video", or "music" |
Response
{
"models": [
{
"id": "flux-2-pro",
"modality": "image",
"family": "flux",
"label": "Flux 2 Pro",
"description": "Latest Flux model, balanced quality and price.",
"costMin": 6,
"costMax": 14,
"pricingMode": "flat",
"aspectRatios": ["1:1", "3:4", "4:3", "9:16", "16:9"],
"resolutions": ["0.5MP", "1MP", "2MP", "4MP"],
"supportsImageInput": true,
"avgCompletionMs": 15000
},
{
"id": "kling-3.0",
"modality": "video",
"family": "kling",
"label": "Kling 3.0",
"description": "Latest Kling — per-second pricing, optional audio.",
"costMin": 29,
"costMax": 72,
"pricingMode": "per-second",
"aspectRatios": ["1:1", "9:16", "16:9"],
"durations": [3, 5, 8, 10, 15],
"supportsAudio": true,
"supportsImageInput": true,
"avgCompletionMs": 150000
}
]
}Response fields
| Field | Type | Description |
|---|---|---|
id | string | Model identifier — use this as the model value in generation requests |
modality | string | "image", "video", or "music" |
family | string | Provider/family slug, useful for grouping (e.g. "flux", "kling") |
label | string | Human-readable display name |
description | string | Short description of the model's strengths |
costMin | number | Minimum credit cost across the model's variants |
costMax | number | Maximum credit cost across the model's variants |
pricingMode | string | "flat", "per-second", or "per-output" — for "per-second" models, costMin/costMax are per-second rates (multiply by duration) |
aspectRatios | string[] | Allowed aspect ratios in W:H format (omitted when not applicable, e.g. music) |
durations | number[] | Allowed clip durations in seconds (video/music only) |
resolutions | string[] | Allowed output resolutions (e.g. "1MP", "1080p") |
supportsAudio | boolean | Model can produce audio (video) or vocals (music) |
supportsImageInput | boolean | Model accepts a reference or start image |
avgCompletionMs | number | Average completion time in milliseconds |
Entries may include additional fields (such as controls) that power the Apiframe Studio UI. These are not part of the stable API contract and may change without notice — rely on the fields documented above.
For exact per-variant pricing (e.g. cost per resolution tier), see Pricing.
Code examples
# No API key required
curl "https://api.apiframe.ai/v2/models?modality=video"import requests
response = requests.get(
"https://api.apiframe.ai/v2/models",
params={"modality": "video"},
)
for model in response.json()["models"]:
print(f"{model['id']} — {model['costMin']}-{model['costMax']} credits ({model['pricingMode']})")const response = await fetch("https://api.apiframe.ai/v2/models?modality=video");
const { models } = await response.json();
console.log(models.map((m) => m.id));Try it
/v2/models?modality=imageTry it