Luma callback: 3 retries, 5 s timeout, vs Sume webhooks
Luma retries a failed callback at most 3 times with a 5-second timeout. Sume retries job webhooks up to 10 times with a 10-second timeout and signs each body.

Luma's Ray 2 callback endpoint must return 200, is retried at most 3 times, and has a 5-second timeout, per its video generation docs. Sume's job webhooks retry up to 10 attempts in total, wait 10 seconds per attempt, space attempts 30 seconds apart by default, and sign the raw body so you can verify it.
Side by side
The two schemes differ in how forgiving they are of a slow receiver.
| Rule | Luma Ray 2 | Sume job webhook |
|---|---|---|
| Success | Return 200 | Any 2xx response |
| Retries | Max 3 | Up to 10 attempts total |
| Timeout | 5 seconds | 10 seconds per attempt |
| Spacing | 100 ms delay | Fixed delay, 30 s by default |
| Image inputs | Your own CDN URLs | Public HTTPS URLs |
Design for the short timeout
A 5-second budget is tight if your handler writes to a database or calls another service before it replies. The fix is the same on either platform: store the event, return success, and process later. Sume's docs say to return any 2xx after durably storing the event and to use job_id as your idempotency key.
Submitting in webhook mode
Send mode: webhook with a public HTTPS webhook_url. Sume signs the raw JSON body with HMAC SHA-256 over <timestamp>.<raw_body> and sends x-sume-webhook-timestamp and x-sume-webhook-signature headers. Reject a timestamp outside your tolerance window, five minutes by default.
Keep a polling fallback
Webhook delivery is an optimization, not the only way to learn the result. Keep polling status_url available for events that never arrive. If you instead use sync or subscribe on a video job, wait_timeout_seconds is bounded to 0 to 30 seconds and the job usually outlasts it, so continue with the status URL and do not resubmit.
curl -X POST https://api.sume.com/v1/video-router/generate \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: webhook-demo-001" \
-d '{"model":"seedance-2.5","prompt":"A slow pan across a desk","duration":8,"mode":"webhook","webhook_url":"https://example.com/hooks/sume"}'Sources
Related posts
More in Developers
- Lyria 3.5 is single-turn: budget retakes, not edits, on Sume
Google says Lyria 3.5 is single-turn and varies between calls. Plan retakes instead of edits: what 1, 3, 5 and 10 attempts cost on Google and on Sume.
- Lyria 3.5 section markers: how to write [0:00 - 0:10] Intro prompts
Lyria 3.5 accepts timestamped section markers like [0:00 - 0:10] Intro: in the prompt, written in the lyric language. Sume's router uses the same idea.
- Makefile targets to submit, watch and download a Sume video job
Three make targets: curl submits to video-router with an Idempotency-Key, sume jobs watch waits, sume jobs download saves it. Rerunning submit never pays twice.
- Map your Sora error handling onto Sume's error envelope
Sume errors share one envelope: code, message, request_id. Rebuild your handler around code, rate-limit headers and retry-after, not message text.
Written by Sume