List Sume video model limits with curl, jq and column in one table

curl GET /v1/videos/models into jq and column to see each model's duration range, resolutions and audio flag in one table. Documented limits for six models.

5 min readSume
All posts

The quickest way to see what each Sume video model accepts is one pipeline: curl GET /v1/videos/models, jq to pick id, the shortest and longest supported duration, the resolutions and the audio flag, and column to align the output. The limits differ a lot, from 2 to 30 seconds depending on the model, so a request that works for one model returns a 400 on another.

What the docs say

The table is what the Sume docs state for six video models. The endpoint is the source of truth, because the catalog can change; the table is for planning.

Duration and resolution limits stated in the Sume docs (read 2026-10-09)
ModelSecondsResolutions
seedance-2.54-30480p, 720p, 1080p
seedance-24-15480p, 720p, 1080p
wan-3.02-30480p, 720p, 1080p (prices exist for all three)
minimax-h35-15480p, 768p (768p is native, not 720p)
minimax-h3-max5-15480p, 768p, 1080p
gemini-omni-flash-1.13-10360p, 720p, 1080p, 4K; 16:9 or 9:16; audio always on

The pipeline

jq builds one tab-separated row per model. The duration cell is min-max of supported_durations, which are whole seconds; the resolution cell joins supported_resolutions with slashes; the last cell prints generate_audio as text. column -t -s with a literal tab aligns the columns. Add supported_aspect_ratios if you work with vertical output.

-fsS makes curl fail on an HTTP error and still print one line of reason. set -euo pipefail stops the script on any failure in the pipe, so a 401 does not produce an empty table that looks like an empty catalog.

#!/usr/bin/env bash
set -euo pipefail
curl -fsS https://api.sume.com/v1/videos/models -H "Authorization: Bearer $SUME_API_KEY" |
  jq -r '.data[] | [.id, "\(.supported_durations | min)-\(.supported_durations | max) s",
         (.supported_resolutions | join("/")), (.generate_audio | tostring)] | @tsv' |
  column -t -s "$(printf '\t')"

Reading the output

supported_durations is a list, not only a range. Take min and max for a quick look, but test membership before you send a duration, as the cheapest-model script in this series does. Likewise, supported_frame_images and supported_input_references say which image and reference types a model takes, and seed is false everywhere in v1.

Some models, such as higgsfield-genjutsu, are in the catalog only when their provider is configured, so the output on your key is the list you can really call.

A practical use of the table is to find the first model that fits a request before you look at price. For a 20-second clip only wan-3.0 and seedance-2.5 qualify, because the others stop at 15 seconds or less. For a vertical 6-second clip with sound, gemini-omni-flash-1.1 fits, since it accepts 9:16 and always generates audio.

The authoritative record is the endpoint response on your key. Treat the documented table as a starting point and the jq output as the truth, and diff the two when a call fails with a validation error. Pipe the same output into a file with the date in its name, and a later diff shows when a limit changed.

  • Run it at deploy time and diff against the last run.
  • Alert when a model you use disappears.
  • Do not copy the table into code; read the endpoint.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume