Cloudinary video 423 error on long videos vs Sume's 1800 s cap
Cloudinary returns 423 while a video over 30 or 60 minutes transforms asynchronously. Sume admits renders up to 1800 seconds and never returns 423.

Cloudinary returns a 423 for a transformed video URL when the source is longer than its on-the-fly limit and is still being processed asynchronously: 60 minutes for adaptive bitrate streaming, 30 minutes for progressive MP4. Sume has no URL-based transformation, so it has no 423; every transformation is a job with a status you poll.
The Cloudinary numbers come from its video transformation documentation; the Sume side comes from the Timeline 1.0 and jobs docs.
What exactly does Cloudinary do past those limits?
Cloudinary's page says on-the-fly video transformation has duration limits of 60 minutes for adaptive bitrate streaming (sp_auto) and 30 minutes for progressive delivery. Requests for longer videos are automatically processed asynchronously and return a 423 error until processing is complete.
So a 423 is not a failure. It means the derived video is not ready; the same URL starts working after processing. Cloudinary also notes that transformations count toward your plan through the number of operations, and that you can deliver videos encoded in advance with eager or explicit transformations, which avoids the first-request wait.
How does Sume handle a long job?
Sume's model is explicit jobs. Timeline 1.0 takes audio.duration_seconds from 1 to 1800 and video[] from 1 to 200 slots, so one render tops out at 30 minutes of output. Video inspect reads a source up to 1800 seconds as well. Default mode is async: you receive a 202 with status_url and result_url, then poll until terminal is true and result_ready is true.
Calling GET /v1/jobs/:id/result before the job completes is answered 409 job_not_completed, which is the nearest analogue to Cloudinary's 423, and it tells you to read status instead. mode: "sync" waits up to 30 seconds and returns 200, or falls back to 202.
| Topic | Cloudinary | Sume |
|---|---|---|
| Request style | Transformation encoded in a delivery URL | Explicit job submit |
| Long source | 423 until processing finishes | Not admitted beyond documented caps |
| Stated limit | 30 min progressive, 60 min ABR on the fly | 1800 s per Timeline render, 200 slots |
| Not-ready signal | 423 on the URL | terminal / result_ready; 409 on early result read |
What do you do for videos longer than 30 minutes on Sume?
Split the work. The docs say Timeline 1.0 is the only public assembly surface and that one render is capped at 1800 seconds of output, so a longer programme has to be produced as separate renders. Sume's docs do not describe a built-in way to stitch two finished renders into one longer file beyond that cap, so plan chapters as separate deliverables.
curl -X POST https://api.sume.com/v1/timeline-1.0/plan \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio": { "mode": "silence", "duration_seconds": 1800 },
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4",
"start": 0, "duration": 1800 }
]
}'Which model fits you?
Cloudinary suits delivery-time variants: one source, many URL-derived renditions, where the first request may wait. Sume suits batch media prep where you submit, poll or receive a webhook, and read a durable media.sume.com artifact. If you need on-the-fly URL transformations, Sume does not offer them. If you need a hard ceiling that fails fast instead of waiting, the plan call above tells you before any billing whether your document is within limits.
What should you change in your client?
If you are porting from Cloudinary, remove any retry loop that treats a 423 as a transient URL error. Replace it with a submit, a poll on terminal, and a read of result_url once result_ready is true. Sume's video_url in the result is a durable media.sume.com artifact, not a derived URL that may re-encode.
Also decide where limits live. Cloudinary's limit is a property of the delivery request; Sume's are properties of the document, so a plan call catches an oversized timeline before submit. Past 1800 seconds the right move is separate renders.
- Cloudinary: 30 minutes progressive, 60 minutes ABR on the fly.
- Sume: 1800 seconds and 200 slots per Timeline render.
- Sume sync wait: 30 seconds, then 202.
Sources
Related posts
More in Comparisons
- Creatomate 20% monthly credits per day vs Sume plan concurrency
Creatomate lets you use about 20% of monthly credits within 24 hours and queues without limit. Sume caps concurrency by plan and returns 429 queue_full.
- Decart Lucy 2.5 has no clip limit; what Sume's video edit does
Decart Lucy 2.5 edits video at $0.04 per second with no 5-second cap. Sume's Gemini Omni edit takes one video_url, 720p default, and no duration field.
- 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.
- 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.
Written by Sume