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.

5 min readSume
All posts

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.

Fields Sume's /v1/videos rejects, as of 2026-10-09
FieldWhat Sume doesUse instead
size (1280x720)400 unsupported_parameterresolution plus aspect_ratio
provider.options400 unsupported_parameter if non-emptyomit it; one backend per model
seedrejected; seed is false for every modelfirst frame or reference images to lock the look
generate_audio: false on Omnirejected; audio always ondrop the audio track afterwards
org/slug model idsnot usedbare 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 seed in the model entry before building a seeded workflow.
  • Read the exact error body; the error field 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

All Developers posts

Written by Sume