Replicate Prefer: wait holds 60 s by default; Sume's sync cap is 30 s
Replicate's Prefer: wait header holds the request up to 60 seconds by default; Sume's sync mode waits at most 30 seconds, then returns a job to poll.

Replicate's sync mode is the Prefer: wait header: the request stays open for 60 seconds by default, or for the number of seconds you give, as in Prefer: wait=5. Sume's sync mode is a mode: "sync" field with a wait_timeout_seconds value that is clamped to 0 to 30. When the wait runs out, both return a still-running object with an id; you poll it, you do not resubmit.
Replicate's behaviour is from its Create a prediction page, read on 2026-10-02. Sume's is from Jobs and results and Image generation.
How does Replicate's sync mode work?
Sync mode is enabled by setting Prefer: wait on the create request; the default hold is 60 seconds and Prefer: wait=5 waits 5. If the model finishes in time, the response is the prediction with output filled. If not, you get the incomplete prediction with status starting or processing, and you fetch it again from the Location header or urls.get.
For models that produce files, Replicate responds as soon as all files are available, so output can be filled while the status still reads processing and completed_at and metrics are empty. Async is the default mode, and a webhook plus webhook_events_filter is its alternative to polling.
How does Sume's sync mode work?
wait_timeout_seconds is clamped to 0 to 30 and bounds how long the HTTP request blocks, not how long the job takes. On the image route the default is 30. When the budget runs out, or when the server has no waiter capacity left, the response is still 2xx and still carries the job id, plus status_url, result_url, events_url and cancel_url. A sync object says timed_out or capacity_exhausted.
You then poll status_url, honouring next_poll_after_seconds, and you must not submit a new paid job for the same intent. Retrying the submit is fine if you reuse the same Idempotency-Key. Mode subscribe is an alias of sync and waits no longer.
What changes when I port a client?
The header becomes a field, and the wait budget shrinks.
| Item | Replicate | Sume |
|---|---|---|
| How to ask for a wait | Prefer: wait header | mode: "sync" plus wait_timeout_seconds |
| Default hold | 60 seconds | 30 seconds on the image route |
| Maximum | Set by you in the header | 30 seconds (clamped) |
| If not finished | Incomplete prediction, starting or processing; use Location or urls.get | 2xx job envelope; sync.timed_out; poll status_url |
| Safe retry | Not stated on the page | Same Idempotency-Key returns the original job |
| Default mode | Async | Async |
What should a long video job use instead?
Sume's docs say sync is the wrong tool for anything that can outlast 30 seconds, which is most video work. Submit with mode: "async" and an Idempotency-Key, then poll GET /v1/jobs/{job_id}/status until terminal is true, and read GET /v1/jobs/{job_id}/result when result_ready is true. Or take a signed webhook and keep polling as a backup.
A client-side timeout does not cancel the job; it keeps running and billing, so keep the job id and resume from status_url.
Sources
Related posts
More in Comparisons
- Replicate private models bill idle time: how Sume bills a job
On Replicate, a private model on dedicated hardware bills setup, idle and active time. Sume bills per job: a reserve at submit, then capture or refund.
- Replicate's six prediction statuses vs Sume's five job statuses
Replicate has starting, processing, succeeded, failed, canceled and aborted. Sume has queued, processing, completed, failed and canceled. The map and its gap.
- Resemble AI vs Sume: voice, detection and watermarking vs video
Resemble AI covers TTS, speech-to-speech, deepfake detection and watermarking. Sume makes media but ships no detection API. What each covers.
- Respeecher Space at $2 an hour vs Sume async text to speech
Respeecher Space is a real-time TTS API for voice agents at $2 an hour. Sume TTS is async and per character. Which fits narration, and which fits live voice.
Written by Sume