Wait for an avatar video in one request? Sume sync stops at 30 s
Sume sync and subscribe modes are the same bounded wait of at most 30 seconds. For avatar videos use async with polling or a webhook, not a long HTTP hold.
No. Sume's sync mode holds the submit call for at most wait_timeout_seconds, capped at 30 seconds, and subscribe is an alias of sync with the same wait. A talking video job should be submitted in async mode (the default) and then polled, or delivered by webhook.
The four modes
From Jobs and results, read 2026-10-08:
| Mode | What returns | Use for |
|---|---|---|
| async (default) | 202 with the job envelope and poll URLs | Production avatar videos |
| sync | Same envelope after a wait of up to 30 s for a terminal state | Short jobs you can afford to hold |
| subscribe | Alias of sync; same bounded wait | Clients ported from other queue APIs |
| webhook | Signed terminal event to a public HTTPS URL | Servers that should not poll |
What to do after a sync call
If the job is not terminal when the call returns, poll status_url as with async. Subscribe does not give you progress events. For progress, submit async and read GET /v1/jobs/{id}/events, or use a webhook. Webhooks send terminal events only, so they will not show intermediate state.
A pattern that works
- Submit with mode async and an Idempotency-Key.
- Store status_url, result_url and events_url.
- Poll with exponential backoff until terminal is true.
- When result_ready is true, GET result_url and download the video artifact.
- If you also register a webhook, keep the poll as a fallback; delivery is an optimization, not the only recovery path.
Why the cap exists
A hold of 30 seconds is long for an HTTP request already. Avatar video lengths are 4 to 60 seconds of output, so rendering is not expected to fit inside that wait. Waiters are also limited, and the docs say the wait may be shorter when waiter capacity is not available. Build for the poll, and treat a fast sync response as a bonus. Duration rules are on Generate avatar video.
Choosing between poll and webhook
Poll when your caller already holds a connection or runs a worker loop; it needs no public endpoint. Use a webhook when you have a server that can receive HTTPS, verify the signature and store the event. Many teams use both, with the poll as a safety net.
Backoff keeps load down: start at a couple of seconds, double until you reach a ceiling of around half a minute, and stop at your own deadline. For batches, check queue capacity before adding more jobs.
Sources
Related posts
More in Developers
- Wan 3.0 draft and final need different Idempotency-Keys (409)
Reusing one Idempotency-Key for a 480p draft and a 1080p final of the same prompt returns 409 idempotency_conflict. A Python key builder that avoids it.
- wan-3.0 duration 1 gives 400: the 2 to 30 s range, 25 cents at 2 s
Sume lists wan-3.0 at 2 to 30 seconds. A 1-second request is a 400 unsupported_capability; a 2-second 720p clip bills 25 cents (list $0.10 per second x 1.25).
- Wan 3.0 reference limits on Sume: 10 images, 5 videos, 5 audio clips
Wan 3.0 on Sume takes up to 10 reference images, 5 reference videos (15 s total, 16 fps or more) and 5 audio clips (15 s total). Here is the full envelope.
- wave_size_hint 450 is not concurrency: sizing Sume submit waves
With concurrency 100 and a 500-job queue, Sume shows wave_size_hint 450 but your in-flight budget is 100. How to compute both from generation_limits.
Written by Sume