Video fields Sume rejects: size, seed, provider.options, audio off
Sume's /v1/videos refuses size, seed and non-empty provider.options on every model, and Omni refuses generate_audio false. What to send in their place.

Four request fields that work on other video APIs fail on Sume. size returns 400 unsupported_parameter, because every v1 model reports supported_sizes: null. A non-empty provider.options also returns 400 unsupported_parameter. No model accepts seed, since each reports seed: false. And Gemini Omni Flash 1.1 rejects generate_audio: false because its audio is always on.
What to send instead
A client written from the OpenRouter video docs works on Sume after a base URL and key change, except for these differences.
| Field | What Sume does | Use instead |
|---|---|---|
| size (1280x720) | 400 unsupported_parameter | resolution plus aspect_ratio |
| provider.options | 400 unsupported_parameter if non-empty | omit it; one backend per model |
| seed | rejected; seed is false for every model | first frame or reference images to lock the look |
| generate_audio: false on Omni | rejected; audio always on | drop the audio track afterwards |
| org/slug model ids | not used | bare ids such as seedance-2 |
Why seed matters
Without a seed, two runs of the same prompt differ. To hold a subject steady across takes, give a first frame in frame_images, or supply input_references. For a draft-then-final plan, expect the final to differ from the draft in detail, so draft to judge motion and framing, not exact pixels.
The idempotency header is a different tool. It makes a retry safe, not a result repeatable: a replay with the same Idempotency-Key returns the original job instead of creating a new one.
- Check
allowed_passthrough_parameters; in v1 it is empty for each model. - Check
seedin the model entry before building a seeded workflow. - Read the exact error body; the
errorfield names the parameter.
A small guard
Strip the fields before you submit if your client builds bodies generically.
REJECTED = ("size", "seed")
def sume_body(body):
out = {k: v for k, v in body.items() if k not in REJECTED}
if not out.get("provider", {}).get("options"):
out.pop("provider", None)
if out.get("model") == "gemini-omni-flash-1.1":
out.pop("generate_audio", None)
return out
print(sume_body({"model": "seedance-2", "prompt": "x", "size": "1280x720", "seed": 7}))Reading the 400
When a request fails validation the error code names the problem; unsupported_parameter points to a field Sume does not take on that route. Log the full body once, then fix the client rather than retrying, because a retry of an invalid body fails the same way.
Idempotency interacts with this. Do not reuse an Idempotency-Key across a corrected body unless you want the original job back; use a fresh key once the payload changes.
Sources
Related posts
More in Developers
- AI voiceover too loud: three Sume gain knobs and what each one costs
TTS generation_config.volume (0.5-2), Timeline audio.gain_db (-60 to 12) and soundtrack.duck_db (0-20). Which to change, and which means paying for new audio.
- Alibaba Wan 3.0 Model Studio request to a Sume /v1/videos body
Map a Model Studio wan3.0-video call (input.media, parameters, X-DashScope-Async) to POST /v1/videos with model wan-3.0. Field by field.
- Wan 3.0 workspace-id region hosts vs Sume's one API base URL
Alibaba's Wan 3.0 URLs carry a workspace id and a region host, in six regions. Sume's video API is one base URL; what to change when you port the call.
- Failed AI video jobs: Google bills successes, Sume refunds the hold
Google says Veo videos are charged only when generated. Sume holds the price at submit, captures it on success and refunds it on failure or early cancel.
Written by Sume