Cancel 16 of 20 queued Seedance 2.5 clips: what you keep

Twenty 10-second Seedance 2.5 clips reserve $115.56. Cancel the 16 still queued and $92.448 is released; the 4 running clips complete and cost $23.112.

4 min readSume
All posts

If you submit 20 Seedance 2.5 clips (10 seconds, 720p, 9:16, $5.778 each) and cancel the 16 that are still queued, Sume releases $92.448. The 4 jobs that were already processing finish and are captured, for $23.112.

Cancellation works only before generation starts. After that the job returns 409 job_generation_already_started and completes or fails normally.

The ledger after the cancel

Reserved at submit is 20 x $5.778. The split depends on how many jobs had left the queue when you canceled.

20 submitted, 4 processing, 16 canceled (read 2026-10-09)
StepJobsAmount
Reserved at submit (20 clips)20$115.56
Already processing (cannot cancel)4$23.112
Queued, canceled16$92.448 released
Captured after the 4 finish4$23.112

Cancel in code

List the jobs, then cancel only the queued ones. A cancel of an already canceled job is idempotent, so a retry is safe.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

def cancel_queued(job_ids):
    out = []
    for jid in job_ids:
        s = requests.get(f"https://api.sume.com/v1/jobs/{jid}/status", headers=H, timeout=30).json()
        if s.get("status") == "queued":
            r = requests.post(f"https://api.sume.com/v1/jobs/{jid}/cancel", headers=H, timeout=30)
            out.append((jid, r.status_code))
    return out

Gotchas

  • queued is a normal accepted state in the docs; the status route is GET /v1/jobs/{id}/status.
  • Reading GET /v1/usage afterwards shows what was actually debited; compare it with the table.
  • On a Pro-sized queue, 20 jobs mean 4 processing and 16 queued, as in this example; on Free, the 20 would be capped at 6 accepted.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume