Developers

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.

5 min readSume
All posts

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>.

Fields that differ by model, from Video generation, read 2026-09-26. Call GET /v1/videos/models to confirm each model's current values.
FieldWhat it listsMore
idThe slug to send as modelBare catalog ids, never org/slug
supported_durationsEvery accepted length, in whole secondsLength limits
supported_resolutionsSupported output resolutions4K video
supported_aspect_ratiosAccepted aspect_ratio valuesVertical 9:16
supported_frame_imagesAccepted frame_type valuesFirst and last frames
supported_input_referencesAccepted input_references typesReference to video
generate_audioWhether the model can make an audio trackVideo with sound
pricing_skusBillable rates by SKUAPI 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:

  • seed is false for every model, so a request that sends seed is refused.
  • supported_sizes is null, so send resolution plus aspect_ratio instead of size.
  • allowed_passthrough_parameters is empty, so provider.options must 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 model that is neither a catalog id nor an auto alias such as sume/auto: 404 model_not_found.
  • A value outside the model's lists: 400 unsupported_capability, with details.supported holding the accepted values.
  • size, seed, or a non-empty provider.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/models and GET /v1/video-router/models/{model_id} return each model's capabilities, constraints, and provider list pricing with its billable margin. The Video Router docs say to read capabilities there rather than assume one envelope. An unknown id is 404 model_not_found.
  • GET /v1/catalog is 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