Video frames: one frame with url null and the job still succeeds

In Sume video frames, a failed instant returns url null while the job completes. How to detect partial results and retry only the missing times.

4 min readSume
All posts

A Sume video frames job can finish with resource_status: ready and still hold a frame whose url is null. The docs, read 2026-10-05, say that if the extract fails for one instant, that frame has a null url, and this does not cause the job to fail. Each frame is {t, url, width, height}, so the missing one is easy to find by its t.

This matters in automation. A flow that only checks the job status will report success, then break later when an image step receives a null.

Detect and retry

Filter the frames, collect the failed times, and submit a second call with only those times in at[]. Use a new Idempotency-Key, since the first call is already complete.

frames = result["frames"]
missing = [f["t"] for f in frames if f["url"] is None]
if missing:
    retry_body = {"video_url": video_url, "at": missing}
    print(retry_body)
else:
    print("all frames present")

Things that are not partial failures

  • An at value outside [0, duration) fails the whole job with frame_time_out_of_range, and the error reports the probed duration.
  • A source longer than 300 seconds fails with duration_out_of_range.
  • More than 24 at values, or fps above 2, is a 400 at submit.

Billing and mode

The job is billed by its Modal compute at container seconds times list price times 1.25 plus the platform fee, never above the reservation held at submit. A video frames submit always returns 202, because the route pins async, so do not send mode: "sync" expecting a 200. Poll GET /v1/video-frames/:id or the job status.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume