Decart Lucy queue times out at 10 minutes; Sume job statuses
Decart's Python queue marks a Lucy job failed after a 10-minute timeout. Sume jobs end completed, failed, or canceled; poll with backoff or use a webhook.

Decart's Python queue API reports a Lucy job as failed when it fails or times out after 10 minutes. Sume has no such client-side timeout in its docs: a job is queued, processing, completed, failed, or canceled, and you either poll with exponential backoff or ask for a webhook. The practical rule is the same on both: persist the job id before you wait.
Decart's details come from its Python Queue API page and the non-realtime overview, read 2026-10-02. Sume's come from Jobs and results.
What does Decart's queue return?
The Python SDK has four methods: submit() returns a job id immediately, status() checks progress, result() retrieves the completed video, and submit_and_poll() does all of it in one call. Statuses are pending, processing, completed, and failed; the page says failed covers both a failure and a timeout after 10 minutes. A result carries status, data (video bytes), and error. The supported models are lucy-2.1, lucy-vton-3.5, and lucy-restyle-2.
The page does not say how long finished videos are retained, and this post will not guess.
| Meaning | Decart queue | Sume jobs |
|---|---|---|
| Waiting | pending | queued |
| Running | processing | processing |
| Success | completed | completed |
| Failure | failed (includes the 10-minute timeout) | failed (terminal, public error) |
| Stopped by you | Not documented on the page | canceled |
How does Sume report the same thing?
Poll GET /v1/jobs/{id}/status with exponential backoff and stop on completed, failed, or canceled. Fetch the output from GET /v1/jobs/{id}/result once it is complete; before that the API returns a conflict rather than an empty result. The docs say plainly not to resubmit a paid request because a local process timed out, which is the failure mode a client-side timeout invites.
Cancellation only works before generation starts. After that the API returns 409 job_generation_already_started and the job runs to completion.
JOB=job_123
while true; do
S=$(curl -s https://api.sume.com/v1/jobs/$JOB/status \
-H "Authorization: Bearer $SUME_API_KEY" | jq -r .sume_status)
case "$S" in
completed|failed|canceled) break ;;
esac
sleep 10
done
echo "final status: $S"
curl -s https://api.sume.com/v1/jobs/$JOB/result \
-H "Authorization: Bearer $SUME_API_KEY"Does the loop above handle failure?
Yes, to a point. It exits on any of the three terminal statuses, then fetches the result. If the final status was failed or canceled, the result call answers 409 job_not_completed instead of a video, so branch on $S before you treat the output as usable. A production version also grows the sleep with each pass (exponential backoff, as the docs advise) instead of a flat 10 seconds, and stops after a ceiling you choose.
The ceiling is where Decart's built-in 10-minute timeout and Sume's open-ended jobs differ most. Decart decides for you that 10 minutes is too long. On Sume you decide, and the docs tell you the safe response to a slow job: keep waiting or read its events, never submit a second paid request.
When is a webhook better than polling?
For clips that take minutes, a webhook means no loop at all. Sume generation submits accept a mode of async, sync, subscribe, or webhook, and webhook needs a public HTTPS webhook_url, as the face-swap page describes. Keep a status poll as a backup, because a receiver can be down when a delivery arrives; the webhooks page covers delivery.
What should a migration keep in mind?
Map the states in the table, store the job id as soon as submit returns, and never let a local timeout trigger a second paid submit. If a Sume job is slow, read its events at GET /v1/jobs/{id}/events before deciding anything.
One more difference: Decart's submit_and_poll() hides the loop. If you used it, your migration is not a one-line swap, because Sume's flow is submit, then status, then result, with the three calls under your control. That is more code, and it is also what lets you survive a process restart, since the job id is durable.
Sources
Related posts
More in Comparisons
- Swap a character in video: Decart Lucy reference vs Sume Recast
Decart's Lucy models edit video with a prompt, a reference image, or both. Sume's H3 Max Recast swaps up to 4 people, one photo each, in a 5-30 second source.
- Decart Lucy Restyle 2: 30 minutes, 200 MB, vs Sume Genjutsu
Decart Lucy Restyle 2 takes up to 30 minutes and 200 MB at 720p. Sume's restyle path, Genjutsu motion transfer, takes 4-30 seconds and 1-8 reference images.
- Descript per-second smoothing credits vs flat API job prices
Descript now bills smoothing by the second. Here is how that compares with Sume media jobs, which charge a flat amount per job or per output minute.
- Dreamina Long Video Mode: 3 minutes vs Sume's 30 s Seedance
Dreamina says its Seedance 2.5 Long Video Mode makes videos up to three minutes. Sume's seedance-2.5 makes 4-30 s per request, so long films are joined clips.
Written by Sume