Replicate aborted vs canceled prediction: Sume cancel and 409
Replicate bills a canceled prediction for run time, not an aborted one. Sume cancels only before generation starts, then returns 409.

On Replicate, a deadline hit before a prediction starts gives aborted and no charge; after it starts, canceled and you pay for run time. Sume has no aborted status. A cancel works only before generation starts; after that it returns 409 job_generation_already_started.
Replicate facts come from its prediction lifecycle page; Sume facts from Generation admission, Jobs and results and Errors and credits, read 2026-10-01.
How does Replicate split aborted from canceled?
The lifecycle page defines canceled as canceled by the user or past its deadline after starting, and aborted as past its deadline before it could start. Billing follows: aborted, never started, no charge; canceled, started, you pay for the time it ran. Predictions also time out after 30 minutes.
What does Sume do at the start boundary?
Cancellation succeeds only before generation work starts. Once generation has started the API returns 409 job_generation_already_started with details.cancelable: false, and the job completes or fails normally. Cancelling a job already canceled is idempotent and returns the same canceled job.
| Moment | Replicate | Sume |
|---|---|---|
| Before generation starts | aborted on deadline | Cancel succeeds; job becomes canceled |
| After generation starts | canceled on deadline or user cancel | 409 job_generation_already_started; job runs on |
| Repeat cancel | Not covered on the page read | Idempotent, same canceled job |
Which Sume statuses exist?
Job status values are queued, processing, completed, failed, canceled. The 409 family covers job_not_completed, job_not_cancelable and job_generation_already_started, each meaning the operation is not valid for the current status.
What should I do to avoid a started job I do not want?
Cancel queued jobs you no longer need before they start processing, since there is no cancel after that. These pages do not cover how a started job is billed, so read the billing docs before relying on a cost assumption. A local timeout is not a reason to submit again; see cancel AI video jobs and runs.
Sources
Related posts
- Codex instant_interrupt mid jobs_wait: Sume jobs keep running
- 409 job_not_completed: why the result call fails and what to poll
- Replicate webhook_events_filter on Sume: terminal events only
- How to cancel an AI video generation job or run with the Sume API
- fal vs Replicate: how calls, webhooks and billing differ
More in Developers
- Replicate webhook URL custom id vs Sume job_id as the key
Replicate suggests a query param like customId on the webhook URL. Sume bodies carry request_id and job_id, and job_id is the receiver's idempotency key.
- gen3a_turbo no longer available on Runway: re-read Sume's model list
Runway now fails requests for gen3a_turbo and gen4_aleph. Avoid the same break on Sume: read /v1/videos/models instead of hard-coding ids.
- Runway Model Router allow and deny lists vs Sume auto
Runway's Model Router has allow and deny lists plus per-modality credit ceilings. Sume has no lists: pin a catalog id, or send sume/auto and accept its pick.
- Runway per-generation usage export vs the Sume GET /v1/usage ledger
Runway's enterprise usage export lists credits per generation. On Sume, GET /v1/usage returns USD ledger rows per workspace, filterable by job_id.
Written by Sume