Replicate SSE stream URL vs Sume: no event stream, so poll
Replicate returns a urls.stream endpoint with output, error and done events. Sume has no SSE or WebSocket on the Developer API. Poll status or take a webhook.

Does Sume have a stream URL like Replicate's?
No. Sume's Developer API has no SSE or WebSocket transport today, and GET /v1/jobs/:id/events is a pull snapshot, not a stream. For media jobs you poll status or receive a signed terminal webhook. Replicate offers a stream endpoint for models that support it, the page highlights language models.
How does Replicate streaming work?
Per Replicate's streaming page, you create a prediction with the stream option, receive a urls.stream URL on stream.replicate.com, and connect to it with an EventSource client. Three event types arrive: output (plain text with new output), error (JSON) and done (JSON, for success, cancellation or error). API predictions expire after an hour, and the event stream endpoint has a 30 second timeout that sends an empty :408 event if exceeded. Streaming output is supported by lots of language models, according to the page.
Streaming makes sense there because text arrives token by token. A rendered video or a generated image has no useful partial output.
What are Sume's three ways to learn an outcome?
In order of preference for long jobs: async plus polling, webhook for terminal delivery, and a bounded sync wait. mode: "subscribe" is an alias of sync: one HTTP wait capped at 30 seconds, not a subscription. The SDK's subscribeFormatRun() creates a run and polls it client-side. Job webhooks deliver exactly three events (job.completed, job.failed, job.canceled), with no progress deliveries.
The 30 second figure is a wait budget, not a duration. The response is still 2xx and carries the job id when it runs out, and you continue with GET status_url, never by resubmitting the paid job.
| Method | Replicate | Sume |
|---|---|---|
| Push stream (SSE) | urls.stream, output/error/done | None |
| Polling | urls.get | status_url with next_poll_after_seconds |
| Webhook | Created, updated and finished states | Terminal events only |
| Bounded wait | Prefer: wait | sync, max 30 seconds |
How do I fake progress in a UI on Sume?
Do it honestly from the states you have: show "waiting for a slot" on queued, "rendering" on processing, and a spinner with an elapsed timer. Poll with backoff rather than a tight loop. If you want an event to drive a server-side workflow, use the webhook and keep polling as a backup for deliveries that never arrive.
curl -X POST https://api.sume.com/v1/image-1.0/generate \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ui-progress-demo-001" \
-d '{"prompt":"Matte black bottle on marble","mode":"async"}'
# then poll status_url from the response until "terminal": trueSources
Related posts
More in Comparisons
- 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.
- Replicate webhook signature vs Sume: webhook-id or sume-v1?
Replicate signs id.timestamp.body with a whsec_ key; Sume signs timestamp.body as sume-v1. Compare headers, secrets and a Python verifier for the Sume side.
- 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