One frame at 12.5 s: video-frames vs video-inspect

Video frames returns a frame at its source size from clips up to 300 s. Video inspect defaults to 768 px, caps at 2160, and takes clips up to 1,800 s.

5 min readSume
All posts

To grab one frame at 12.5 seconds, use video frames if the clip is 300 seconds or shorter and you want the source frame size: send at [12.5] and leave max_edge out. Use video inspect when the clip is longer, up to 1,800 seconds, or when you also want probe facts or a transcript, and accept that its stills default to a 768-pixel long edge and can be set no higher than 2160.

Side by side

Both routes read one media.sume.com clip and return durable image artifacts, and neither changes the source. They differ in the limits below, all taken from the Sume docs pages read on 2026-10-09.

Video frames and video inspect limits, from the Sume docs (read 2026-10-09).
PropertyVideo framesVideo inspect
Source length limit300 s1,800 s
Stills per call1 to 241 to 24 (default 8)
Default long edgesource size768 px
Edge clamp range16 to 216064 to 2160
Default response202, then pollsync, waits up to 30 s, 200 or 202
Also returnsframes onlyprobe, optional transcript
Frame at a known timeat [12.5]frames {at: [12.5]}

Why the edge limit matters

A 4K source is 3,840 pixels wide. Video frames with no max_edge returns the frame at that size, while video inspect cannot go above 2,160 on the long edge. For a 1080p source the docs recommend sending the source edge to inspect if you want a first-frame restage, which is a long edge of 1920.

  • Frames fails an at value outside 0 to the clip duration with frame_time_out_of_range.
  • Inspect fast seek can return a still up to about one GOP earlier than the time you asked for, never later. Frames has no seek option.
  • A clip over 90 seconds can carry a low_confidence_long_video warning on frames; it does not fail the job.

The call to make

This asks for one lossless frame at the source size.

curl -X POST https://api.sume.com/v1/video-frames \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: frame-12-5" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/ad.mp4",
    "at": [12.5],
    "format": "png"
  }'

Pricing

Neither route has a flat per-job price in the docs. Sume bills both by their own Modal compute, and the charge is never above the hold. The only fixed rate in this pair is the optional transcript on video inspect at $0.01 per audio minute.

Edge cases

If the clip is 1,200 seconds long, video frames is out: the route fails with duration_out_of_range above 300 seconds. Video inspect takes it, and a frames object of at [12.5] with max_edge 2160 gives one still. If you pass fps to frames you are limited to 2 and to 24 frames, so a one-frame request with at is cleaner.

Both routes need the clip on the Sume media host. Import an outside file with POST /v1/media-imports first, since both reject off-host URLs at admit.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume