List video generation models via API: GET /v1/videos/models
GET /v1/videos/models lists every Sume video model with its resolutions, aspect ratios, durations, frame and reference types, audio flag, and pricing SKUs.

To list the video generation models on Sume, call GET /v1/videos/models with your API key. It returns a data array with one descriptor per model: its id, supported resolutions, aspect ratios, durations, frame and reference types, whether it makes audio or takes a seed, and its pricing SKUs.
The details below come from the model discovery section of Sume's Video generation docs and from the catalog code behind the endpoint, read on 2026-09-26. Submitting and polling a job is covered in An OpenRouter-compatible video API.
How do I call the video models endpoint?
Send a GET with the key you use for generation. Every /v1 endpoint needs a Sume API key except a short list of public routes, such as GET /v1/health and GET /v1/catalog, and this endpoint is not on that list. Authorization: Bearer and x-api-key both work, per the API reference; a missing or invalid key returns 401.
curl -s "https://api.sume.com/v1/videos/models" \
-H "Authorization: Bearer $SUME_API_KEY" \
| jq '.data[] | {id, supported_durations, supported_resolutions}'What does each field tell me?
The table lists the fields that differ by model, each with a post that compares that dimension across models. pricing_skus are billable rates at the provider's list price × 1.25, and usage is charged at a model's published rate plus a 5.5% agent fee by default. Each SKU key names its unit: per-1000-video-tokens, per-video-second (plus per-video-second-audio where audio has its own rate), or per-video-second-<resolution>.
| Field | What it lists | More |
|---|---|---|
id | The slug to send as model | Bare catalog ids, never org/slug |
supported_durations | Every accepted length, in whole seconds | Length limits |
supported_resolutions | Supported output resolutions | 4K video |
supported_aspect_ratios | Accepted aspect_ratio values | Vertical 9:16 |
supported_frame_images | Accepted frame_type values | First and last frames |
supported_input_references | Accepted input_references types | Reference to video |
generate_audio | Whether the model can make an audio track | Video with sound |
pricing_skus | Billable rates by SKU | API pricing |
Which fields are the same for every model?
created is the same on every row: the catalog's publication date, not a model release date. canonical_slug, the permanent model identifier, matches id. Three more fields are fixed in v1:
seedisfalsefor every model, so a request that sendsseedis refused.supported_sizesisnull, so sendresolutionplusaspect_ratioinstead ofsize.allowed_passthrough_parametersis empty, soprovider.optionsmust be omitted or empty.
How do I check a model before I call it?
Limits are not uniform across models, so read the descriptor for the id you plan to send and compare each value in your request with its list: duration, resolution, aspect_ratio, every frame_images[].frame_type, and every input_references[].type. Send generate_audio: true only when the descriptor's generate_audio is true.
const res = await fetch("https://api.sume.com/v1/videos/models", {
headers: { Authorization: `Bearer ${process.env.SUME_API_KEY}` },
});
const { data } = await res.json();
const model = data.find((m) => m.id === "wan-3.0");
const ok =
model !== undefined &&
model.supported_durations.includes(12) &&
model.supported_resolutions.includes("1080p") &&
model.supported_aspect_ratios.includes("16:9");
if (!ok) throw new Error("wan-3.0 does not accept this request");What happens if I skip the check?
The submit returns an error instead of a job. The video generation API 400 errors post covers each code; these three follow from the descriptors:
- A
modelthat is neither a catalog id nor an auto alias such assume/auto:404 model_not_found. - A value outside the model's lists:
400 unsupported_capability, withdetails.supportedholding the accepted values. size,seed, or a non-emptyprovider.options:400 unsupported_parameter.
Which models are listed today?
On 2026-09-26 the production catalog lists 10 video model ids: seedance-2.5, seedance-2-mini, seedance-2, seedance-2-fast, kling-3, wan-3.0, grok-imagine-video-1.5, minimax-h3, minimax-h3-max, gemini-omni-flash-1.1. The list can change, so read it at runtime instead of hard-coding it. sume/auto is not a row: it is a routing alias you can send as model, not a catalog family.
Where else can I read the video catalog?
GET /v1/videos/models is a projection of the Video Router catalog, so the same models appear in two other places:
GET /v1/video-router/modelsandGET /v1/video-router/models/{model_id}return each model'scapabilities,constraints, and provider listpricingwith its billable margin. The Video Router docs say to readcapabilitiesthere rather than assume one envelope. An unknown id is404 model_not_found.GET /v1/catalogis public and needs no key. It lists capabilities, endpoints, runtime readiness, models, and pricing metadata; see the Sume API catalog endpoint.
Sources
Related posts
Written by Sume