H3 Max Recast request shape: /v1/videos or /v1/video-router/generate?
Recast takes one video_url and 1 to 4 image_url entries as input_references on /v1/videos, or video_url plus reference_image_urls on the Video Router.

H3 Max Recast, id h3-max-recast, is reachable on both of Sume's video wires, and the two bodies look different. The OpenRouter-shaped route, POST /v1/videos, carries media in an input_references array. The legacy Video Router route, POST /v1/video-router/generate, uses flat fields. Sending the wrong shape to the wrong route is the usual cause of a 400.
In both cases the model needs exactly one source video and one to four photos, one photo per new person, matched left to right by default. There is no text-only mode.
What does the /v1/videos body look like?
Put one video_url entry and the photo image_url entries in input_references. The duration is the inspected source length in whole seconds, rounded up, from 5 to 30. The prompt is optional. Do not send aspect_ratio, frame_images, generate_audio, seed or an audio reference; the row rejects them.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"h3-max-recast","duration":13,"resolution":"768p","input_references":[{"type":"video_url","video_url":{"url":"https://media.sume.com/example/source.mp4"}},{"type":"image_url","image_url":{"url":"https://media.sume.com/example/person.jpg"}}]}'And on the Video Router?
The legacy wire takes video_url and a reference_image_urls list at the top level, plus model, duration and resolution. The catalog treats both wires as one model row, so the limits and the price are identical: 768p is the default, 1080p is the other option, and the billable rates are $0.375 and $0.5625 per second.
Pick the wire your client already speaks. If you are moving from an OpenRouter client, /v1/videos; if you already call the Video Router for Omni edit, stay there.
What fails on either wire?
A source outside 5 to 30 seconds, a shot over 15 seconds, more than four photos, or no photo at all. All are caught as 400s at validation. size, seed and a non-empty provider.options are also refused, as covered in the unsupported parameter post.
Sources
Related posts
More in Developers
- H3 Max Recast webhook: submit with mode webhook, verify the HMAC
Recast jobs run for a while. Submit h3-max-recast with mode webhook, then verify Sume's sume-v1 HMAC signature before you download the swapped video.
- Hatchet durable event wait: let a Sume webhook wake the task
A Hatchet durable task can wait for an event instead of polling. Send Sume's signed terminal webhook into that event, and keep a status read as the fallback.
- Hatchet durable tasks: checkpoint a Sume job id and never pay twice
A Hatchet durable task replays from its last checkpoint after a crash. Make the Sume submit step safe with one Idempotency-Key, then wait on the job id.
- Hedged requests on a paid video API: same key, one job
Can you hedge a slow Sume submit to cut tail latency? Only with the same Idempotency-Key. Why a second key is a second bill, and what 409 in use means.
Written by Sume