H3 Max Recast seed: fal has one, Sume does not send it
fal's Recast API takes and returns a seed. Sume's Video Router accepts none, so each run is a new take. How to re-roll, what to vary, and what it costs.

fal's H3 Max Recast API has an optional seed input and returns the seed it used. Sume's Video Router does not: the h3-max-recast catalog entry lists no seed, and the OpenAPI request schema has no seed property and sets additionalProperties to false, so a body that includes one is rejected. On Sume you cannot reproduce a Recast result; you can only run it again and compare.
If you were hoping to lock a good take and change one variable, that is the cost to plan for.
Where does Sume differ from fal here?
The same model, two interfaces, read 2026-10-03:
| Input | fal H3 Max Recast | Sume h3-max-recast |
|---|---|---|
| seed | Optional integer; returned in the output | Not in the schema |
| resolution | 768P or 1080P, default 1080P | 768p or 1080p, default 768p |
| prompt | Optional | Optional, up to 2000 characters |
| duration | Not an input | Required: inspected source seconds, reserve only |
| aspect_ratio, generate_audio | Not in the schema | Rejected by name |
How do I get a different take, then?
Submit again with a new Idempotency-Key. The key exists so that a retry of the same submit after a timeout does not create a second paid job, per Sume's docs; reuse the same key only to retry the same submit. A new key is a new job, and it bills again.
If the first take is close, vary only what you can: the prompt (who becomes whom, or what to keep), the order or choice of reference photos, or the resolution. Change one thing at a time and write down which job id was which, since the id is the only handle you have.
How do I run a small prompt comparison?
Use a 5 second slice of the clip so each take costs $1.88 at 768p, give every attempt its own Idempotency-Key, and print the raw response so you keep each job id. Three takes below cost $5.63 in total (3 x $1.875). The prompts are examples to replace, not recommended wording.
import os
import requests
URL = "https://api.sume.com/v1/video-router/generate"
BODY = {
"model": "h3-max-recast",
"video_url": "https://example.com/slice.mp4",
"reference_image_urls": ["https://example.com/person.png"],
"resolution": "768p",
"duration": 5,
"mode": "async",
}
PROMPTS = ["", "Keep the original lighting.", "Keep the original clothing."]
for i, prompt in enumerate(PROMPTS, 1):
body = dict(BODY, **({"prompt": prompt} if prompt else {}))
headers = {
"Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
"Idempotency-Key": f"recast-take-{i}-v1",
}
r = requests.post(URL, json=body, headers=headers, timeout=60)
print(i, repr(prompt), r.status_code, r.text[:300])What does the seed do on fal?
fal's model page lists a seed value in the output for reproducibility, and its schema lets you pass one in. The usual point of a seed is to hold the random draw fixed while you change one thing, so that a difference you see comes from the change. Without one, two runs differ for two reasons at once: what you changed and chance.
Sume's docs do not document a seed field in a Recast job result, so do not build anything that expects to read one back. Keep your own record instead: the job id, the source URL, the photo URLs and their order, the prompt text and the resolution. That is enough to re-run an equivalent job later, though not an identical one.
What does a retry cost?
A retry costs a full clip. At $0.375 a second, three attempts at a 10 second 768p clip are 3 x $3.75 = $11.25, and the same three at 1080p are 3 x $5.625 = $16.875. A cheaper workflow is to test the mapping on a 5 second slice (about $1.88 at 768p) and spend the full clip only once the slice looks right.
Failed jobs are different. Sume's admission docs say failed jobs release or refund the reservation where applicable, so only completed takes are captured.
What if I only need one person's look to change?
Then the clip may not need a swap at all. If the person on screen is right and a detail is wrong, an edit pass with a prompt, such as Sume's Gemini Omni edit route, may be cheaper than recasting the whole clip, though it solves a different problem and does not put a new face on the person. Recast earns its price when the identity itself has to change.
Should I use fal directly if I need seeds?
If reproducibility is a hard requirement, say for A/B tests where only the photo changes, fal's own endpoint is the documented way to get it, at fal's list price with no Sume job record. If what you need is one API key, per-job status and result endpoints, webhooks and the same credits you use for every other Sume model, Recast on Sume is that, without seeds. Both are legitimate; they are different products around the same model.
Whichever route, keep the source clip, the photo URLs, the prompt and the resolution next to the job id, so that you can say exactly what was run when someone asks why the second take looks different from the first.
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.
- Ideogram 4 download: Hugging Face gate, login and first image
To run Ideogram 4 locally: accept the gate on Hugging Face, log in with hf, pip install the repo, run run_inference.py. The flags and the nf4 or fp8 choice.
- Is AI avatar video real time? How long a Sume job takes
A Sume avatar video is a job, not a live stream: it queues, renders, and you poll or take a webhook. What the sync wait caps at, and a Python polling loop.
- Latin American Spanish text to speech: es or es-MX on Sume?
Sume's TTS language is a free string and its voice library tags voices with plain es. What that means for Mexican, Argentine or Spain Spanish, and how to test.
Written by Sume