Audio detach in sync mode: 30 seconds, then a 202 you poll
Audio detach defaults to async. With mode sync it waits up to 30 seconds for a 200, or returns 202 to poll. Why a timeout is not a failure and how to retry.

Audio detach on Sume runs async by default; pass mode: "sync" and it waits up to 30 seconds for a finished 200 job, or returns 202 so you can poll. The audio detach docs, read 2026-10-03, say exactly that, and the jobs docs add the rule that matters: a sync wait that ends before the job is terminal is not a failure, so poll and do not submit a new paid job.
What does each mode return?
Every mode returns the job id in its first response, so you can always recover the job.
| Mode | First response | What you do next |
|---|---|---|
async (default) | 202 with the job envelope | Poll status_url, then read result_url |
sync | Envelope after up to 30 s | Terminal: read it. Not terminal: poll |
webhook | 202, callback stored | Verify the signature; keep polling as a backup |
How do I tell a timed-out wait from a failed job?
On a sync response, sync.timed_out is true when the wait returned before a terminal state, and sync.capacity_exhausted is true when Sume skipped the wait because its waiter budget was full. In both cases the response is still 2xx and carries the job id. Continue with GET status_url, honoring next_poll_after_seconds when present.
When is a retry safe?
- Retrying the submit is safe if you reuse the same
Idempotency-Key; the retry returns the original job instead of billing again. - Submitting a new job for the same intent is not safe, because detach is $0.01 per job and the first one is still running.
- Detach is ffmpeg work, usually quick, but the docs set no time target, so treat 30 seconds as a ceiling on waiting, not a promise.
Sources
Related posts
More in Developers
- "Avatar does not have a usable TTS voice": the 400 and its fixes
Sume TTS with avatar_id or avatar_handle returns 400 when the avatar has no TTS voice, or when voice.id disagrees with it. What each message means and the fix.
- Try Avatar 1.0 in the Sume playground before you write any code
Use the Sume Avatar playground to validate an avatar or avatar video payload, then move the same body into curl, the CLI or an agent without a rewrite.
- Batch of 30-second Seedance clips: Pro, Startup and Scale queues
How many 30-second Seedance 2.5 jobs can a Sume workspace hold? Plan concurrency and queue limits, what happens at job 25 on Pro, and a safe submit loop.
- Batch the shots of a micro-drama episode in Python, safe to re-run
A 25 line Python script submits an episode's Seedance 2.5 shots with one Idempotency-Key per shot and a job ledger, so a crash and re-run never double-bills.
Written by Sume