Debug a slow Seedance job with the job events timeline
Sume exposes GET /v1/jobs/:id/events as public timeline events for debugging and recovery. Use it before you retry or cancel a slow video job.

When a Seedance job looks slow, read GET /v1/jobs/:id/events before you retry. The API reference describes it as public timeline events for debugging and recovery, which is the cheapest way to see where a job is without submitting a second one.
The goal is to separate a job that is genuinely slow from one that failed quietly or was never accepted.
Which job endpoints exist?
The docs list six job reads and writes.
| Path | Purpose | Use it when |
|---|---|---|
| GET /v1/jobs | List by status or type | Auditing a batch |
| GET /v1/jobs/:id | Public job envelope | You want the whole record |
| GET /v1/jobs/:id/status | Lightweight status | Polling |
| GET /v1/jobs/:id/result | Completed result and artifact URLs | Fetching output |
| GET /v1/jobs/:id/events | Timeline events | Slow or odd job |
| POST /v1/jobs/:id/cancel | Cancel before generation starts | Wrong prompt |
How long should I wait first?
The video guide says generation typically takes 30 seconds to several minutes depending on model and parameters, and that a job can stay in pending for a while under load. Poll about every 30 seconds rather than hammering the endpoint.
Some context on timing. A short 480p clip can finish in under a minute while a 30 second 1080p clip takes noticeably longer, and load on the provider side moves both. A pending status in the first minutes is normal and does not mean the request was lost.
What is the safe order of actions?
Read status, read events, then decide. Do not resubmit with a new body: that creates a second job. If you must resubmit, reuse the same Idempotency-Key only when the body is unchanged, as in the idempotency post. Cancel only works before generation starts, after which the API returns 409 job_generation_already_started.
Keep a small runbook for your team. One: confirm the job id exists with GET /v1/jobs/:id. Two: read the status. Three: read the events and note the last one and its time. Four: wait one more polling cycle. Five: if nothing moves for much longer than usual, cancel if the API still allows it, which it does only before generation starts, or contact support with the id.
This order avoids the two expensive mistakes: duplicate submits and abandoned jobs that were about to finish.
What does the docs not tell you?
The text does not list the event names or give a time after which a job is considered stuck, so I will not invent them. Treat the events as evidence for a support request, together with the job id and the time you submitted.
If you do cancel a job that has not started, check /v1/usage afterward; the docs describe refunds as ledger entries, so the reserve should come back as one.
Sources
Related posts
More in Developers
- Seedance job status: pending vs queued, canceled vs cancelled
Sume has two status vocabularies for one video job: pending/in_progress on /v1/videos and queued/processing on /v1/jobs. A poller must handle both.
- One image to Seedance: reference, or first frame?
On Sume a single reference image with no frame field is priced and routed as reference-to-video; add a first frame to get image-to-video. How to choose.
- Seedance size parameter returns 400 on Sume: use resolution
Sending size such as 1280x720 to /v1/videos returns 400 unsupported_parameter on Sume. Use resolution plus aspect_ratio instead.
- Seedance on Video Router or /v1/videos: which endpoint for new code
Sume says new Seedance integrations should use POST /v1/videos. Video Router still works unchanged with the same ids. Here is the field difference.
Written by Sume