Seedance aspect ratios on Sume: 3:2 and 9:21 are not on every model
Sume accepts nine aspect ratios in total, but each video model lists its own subset. Check supported_aspect_ratios before you request 3:2 or 9:21.

Sume documents nine video aspect ratios, from 16:9 to 9:21, but a model only accepts the subset it advertises in supported_aspect_ratios. The sample catalog entry for seedance-2 in the docs lists 21:9, 16:9, 4:3, 1:1, 3:4 and 9:16, which does not include 3:2, 2:3 or 9:21.
This is a common source of 400 errors in batch jobs: a spreadsheet column holds a ratio that is valid in the global vocabulary, the first rows succeed on one model, and later rows fail on another.
Which ratios exist at all?
The docs list nine values and say each model advertises its own subset.
| Ratio | Description in the docs | In the seedance-2 sample entry? |
|---|---|---|
| 16:9 | Widescreen landscape | Yes |
| 9:16 | Vertical/portrait | Yes |
| 1:1 | Square | Yes |
| 4:3 | Standard landscape | Yes |
| 3:4 | Standard portrait | Yes |
| 21:9 | Ultra-wide | Yes |
| 3:2 | Photography landscape | No |
| 2:3 | Photography portrait | No |
| 9:21 | Ultra-tall | No |
Why does the sample entry matter?
The docs sample is an example response, so confirm against the live endpoint. But it shows the pattern: a broad global vocabulary, a narrower per-model list. Sending a ratio the model does not list is a request error, not a silent crop.
Gemini Omni Flash 1.1 is narrower still, at 16:9 or 9:16 only, per the Video Router docs.
Two habits prevent most of the trouble. Keep the model list cached for the length of a batch, since the catalog does not change mid-run, and validate every row against it before you submit anything. A failed request is cheap, but a half-finished batch with a mix of ratios is annoying to untangle.
Also remember that a ratio is only one of three things that must line up. Resolution and duration have their own lists per model, so a request can be fine on the ratio and still fail on a clip length. The docs state limits are not uniform across models; for example seedance-2.5 accepts 4 to 30 seconds while most other catalog models top out at 15.
How do I check before I submit?
Fetch the model list and test membership in code. This runs as written once SUME_API_KEY is set.
The snippet prints one line per model. Extend it to check your actual request: compare your ratio, your resolution and your duration against supported_aspect_ratios, supported_resolutions and supported_durations, and skip any model that fails. Doing that once at the start of a job is a few lines and removes a class of error.
import os, requests
r = requests.get(
"https://api.sume.com/v1/videos/models",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
for m in r.json()["data"]:
ratios = m.get("supported_aspect_ratios") or []
ok = "3:2" in ratios
print(m["id"], "3:2" if ok else "no 3:2")What if the ratio I need is missing?
Pick the nearest listed ratio and reframe afterwards, or choose a model that lists it. A photography 3:2 frame can usually be served by 4:3 plus a crop in your editor; that is a judgment call, not a Sume feature. If you use sume/auto, remember its create controls are 16:9 or 9:16 only; see which model to pin.
If you work from a design brief that names a ratio such as 3:2, ask whether the delivery channel really requires it. Most social and ad placements are 9:16, 1:1 or 16:9, all of which the Seedance sample entry lists.
Sources
Related posts
More in Developers
- Seedance 2.5 input_references: image, video and audio shapes
The exact JSON for an image_url, video_url and audio_url entry in input_references on POST /v1/videos, one mixed Seedance 2.5 request, and the errors you get.
- Seedance 2.5 reference images in Python with asyncio and httpx
A runnable Python script: send reference images to seedance-2.5 on Sume's /v1/videos, poll every 30 s with asyncio, save the MP4, and handle the errors.
- Seedance 2.5 reference images in TypeScript with Node fetch
A Node 18+ ESM script: submit reference images to seedance-2.5 on Sume's /v1/videos, poll every 30 s with fetch, print the video URL. Rules and mistakes.
- Seedance "accepts at most 12 input_references": mixes that fit
Sume returns unsupported_capability when images + videos + audio on a Seedance request exceed 12. Which mixes pass, what fal limits per type, and how to trim.
Written by Sume