Video Router aliases first_frame_url, last_frame_url, duration_seconds

Three Video Router fields are aliases: first_frame_url for image_url, last_frame_url for end_image_url, duration_seconds for duration. Use the canonical names.

4 min readSume
All posts

Three request fields on POST /v1/video-router/generate are aliases: first_frame_url is the same as image_url, last_frame_url is the same as end_image_url, and duration_seconds is the same as duration. The OpenAPI schema marks the two frame aliases deprecated and says to prefer image_url and end_image_url, so new code should use those names.

If you carry code from an older integration, it is worth normalizing the names once on your side rather than sending both. The schema is strict (additionalProperties is false), so an unknown spelling is not silently accepted.

The mapping

The request normalizer in the Sume API reads image_url first and falls back to first_frame_url, and does the same for the end frame. When you send both spellings of one field, the canonical name is read first.

Video Router field aliases (read 2026-10-03)
Use thisAliasNotes
image_urlfirst_frame_urlAlias marked deprecated; required for grok-imagine-video-1.5
end_image_urllast_frame_urlAlias marked deprecated; needs an image_url or first_frame_url
durationduration_secondsWhole seconds, schema range 2 to 30

Per-model limits still apply

The schema range for duration is 2 to 30, but every id narrows it. wan-3.0 accepts 2 to 30, seedance-2.5 accepts 4 to 30, the MiniMax H3 ids accept 5 to 15, gemini-omni-flash-1.1 accepts 3 to 10, and every other model is capped at 15 seconds, as the API reference spells out. Whole seconds only: the field is an integer.

Frame rules carry over too. end_image_url requires a first frame, either as image_url or as the first_frame_url alias, and grok-imagine-video-1.5 does not support an end frame at all.

Other fields worth knowing

Two optional fields never reach the model. metadata is an object stored with the Sume job request and not sent to the provider, so it is the right place for your SKU or campaign id. model_params is reserved for per-model knobs, with an empty allowlist in v1, so omit it or send an empty object.

Pair these with an Idempotency-Key per intent and you have a clean submit: canonical field names, your own tag in metadata, and a safe retry. The retired-alias cleanup costs nothing now and avoids surprises when a deprecated spelling is eventually removed.

Example in canonical names

A start-and-end-frame clip on seedance-2.5:

``json { "model": "seedance-2.5", "prompt": "Camera pulls back from the product to reveal the shelf", "image_url": "https://example.com/start.png", "end_image_url": "https://example.com/end.png", "resolution": "720p", "duration": 10, "mode": "async" } ``

Replace image_url with first_frame_url and duration with duration_seconds and the request means the same thing. On the newer /v1/videos route the equivalent is frame_images with first_frame and last_frame entries plus duration, so moving off the Video Router also retires the aliases for good.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume