Read job events for a stuck narration take: a snapshot, not a stream

GET /v1/jobs/:id/events lists job.created, queued, started, generation.submitted and the terminal event. A pull snapshot for debugging a TTS or music take.

4 min readSume
All posts

To see where a narration or music take is stuck, read GET /v1/jobs/:id/events: it returns a public timeline of that job, and it is a pull snapshot, not a stream. The jobs and results docs, read 2026-10-03, list the events and state that there is no SSE or WebSocket transport on the Developer API today, so you poll, rather than subscribe.

What do the events mean?

Public events do not expose raw provider task ids or raw provider URLs.

Public job events from the Sume docs, read 2026-10-03
EventWhat it tells you
job.createdSume has a durable job id
job.queuedWaiting for a processing slot
job.startedA worker picked it up
generation.submittedGeneration work has been dispatched
job.completed / job.failed / job.canceledTerminal outcome
webhook.deliveryA callback attempt, if you set one

How do I read them to find the stall?

Stopping at job.queued means your workspace's processing slots are full; check the plan's concurrency in the admission docs and wait or cancel. Stopping at job.started or generation.submitted means the work is running, so keep polling status with next_poll_after_seconds rather than resubmitting a paid request. A webhook.delivery event with no matching callback on your side points at your endpoint, not at the generation.

What are the limits of events?

  • The event list is a snapshot at read time, so poll again to see later events.
  • Events carry no audio. Read the artifact from GET /v1/jobs/:id/result after the job completes.
  • I did not find a documented retention window for events, so copy what you need into your own logs.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume