Cancel a queued Seedance 2.5 job: it works only before it starts
POST /v1/jobs/{id}/cancel stops a queued seedance-2.5 job; once generation has started you get 409 job_generation_already_started and it still bills.

You can cancel a seedance-2.5 job only while it is still queued. POST /v1/jobs/{id}/cancel succeeds before generation work starts; after that it returns 409 job_generation_already_started with details.cancelable: false, and the job runs to completion. Cancelling a job that is already canceled is idempotent and returns the same job.
The rules come from Sume's Jobs and results docs and Generation admission docs, read 2026-10-02. Seedance 2.5's 4-30 s range is from the Video Router docs.
When is a Seedance 2.5 job still cancelable?
Only while it waits. On a plan whose processing slots are full, new jobs sit in queued until a slot opens, which is the window in which cancel works. The job envelope has a cancelable boolean and a cancel_url, so read those instead of guessing.
Sume does not expose a per-job queue position or an ETA, so you cannot predict how long the window lasts.
| Job state | Result of cancel |
|---|---|
queued | Succeeds; job becomes canceled |
processing, generation started | 409 job_generation_already_started, details.cancelable: false |
Already canceled | Returns the same canceled job |
completed, failed | Not cancelable |
What does cancelling do to the bill?
Paid generation reserves the estimated amount when a request is accepted. Successful completion captures it; failed jobs and failed admission release or refund the reservation where applicable. A job you cancel while queued has not started generating, so there is no completed output to capture.
A job that has started keeps running and bills normally, and a client-side timeout does not cancel it. Stopping your poller only stops you watching.
When should I cancel instead of waiting?
Cancel queued work when the prompt was wrong, or when a full queue is blocking a batch. On a Free workspace with 1 processing slot and 5 queued, a bad prompt in the queue costs a slot until it runs; see the Free plan limits. After 429 queue_full, the docs say to cancel queued jobs you no longer need, then retry with the same Idempotency-Key.
Treat a 409 as information, not failure: it means the job is already running, so wait for it and use the clip or discard it.
In practice: submit with mode: "async", keep the job id and cancel_url, and decide quickly. The longer a job waits, the more likely it has moved to processing, at which point cancel is no longer possible and the only choices are to use the clip or ignore it.
Sources
Related posts
More in Developers
- Cancel queued Sume jobs on SIGTERM during a deploy
On shutdown, cancel jobs you no longer need before they start and leave started ones alone. A 21-line Node handler using POST /v1/jobs/{id}/cancel.
- cancel_url is null on a processing job: when Sume allows cancel
Why a Sume job in processing can show cancelable false and cancel_url null: cancel depends on whether generation work started, not the status label.
- Check a long avatar video for face drift: 24 inspect stills
After joining avatar jobs, sample the face across the whole video. Sume Video inspect returns up to 24 stills at times you pick, and the probe is unbilled.
- Check a TTS take with an STT round trip: flag skipped words in Python
Transcribe your own voiceover with Sume STT and diff it against the script to catch skipped or changed words before you ship. Python sketch included.
Written by Sume