video-inspect vs video-frames: which returns the still you need
Video inspect gives a probe, 8 default stills at 768 px and optional STT for clips up to 1800 s; video frames gives exact stills at source size up to 300 s.

Use video inspect to learn what a clip is (duration, audio, a sample of stills, optionally a transcript) and video frames to pull exact frames at the source size. Inspect reads sources up to 1800 s and returns 8 mid-bin stills at a default max_edge of 768; frames reads sources up to 300 s and keeps the source frame size unless you clamp it (Video inspect, Video frames).
Side by side
| video-inspect | video-frames | |
|---|---|---|
| Route | POST /v1/video-inspect | POST /v1/video-frames |
| Default mode | sync, waits up to 30 s | always 202, poll |
| Source cap | 1800 s | 300 s |
| Stills per call | Up to 24 (8 by default) | 1 to 24 |
| Default image size | max_edge 768 | Source size |
| Also returns | Probe, optional transcript | Frames only |
| Fast seek | seek: "fast" (keyframe at or before) | Not offered |
A quick look then an exact frame
Probe first with frames: false, which returns only the probe facts, including probe.has_audio. Then pull the one frame you care about with video frames, which always returns 202 and is polled.
curl -X POST https://api.sume.com/v1/video-inspect \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: probe-001" \
-d '{"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4", "frames": false}'
# then the exact frame, at 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-001" \
-d '{"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4", "at": [2.5], "format": "png"}'Seek mode
Inspect's seek: "fast" moves each still to the keyframe at or before its instant, so it can be earlier by up to one GOP and is never later. Keep the default precise whenever a timestamp has to be accurate.
Billing and sources
Both routes read a media.sume.com clip of your workspace; import other URLs first. Video frames is billed by its Modal compute plus the platform fee, and the bill never exceeds the hold taken at submit. If one instant fails, that frame has a null url and the job does not fail. For at values the rule is 0 <= t < duration; a time outside it fails with frame_time_out_of_range.
Sources
Related posts
More in Media tools
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
- How to burn captions onto a video with the Sume API
Send a public HTTPS video URL to POST /v1/video-captions and get a job-backed captioned video, timed by speech-to-text or by text you supply.
- How to extract frames from a video with the Sume API
POST /v1/video-frames returns stills at the times you name from one Sume-hosted clip, as durable images at source size. The call is unbilled.
- How to use Sume's Timeline compose and Timeline audio APIs
Timeline compose puts one still and one video in the same frame as a new MP4. Timeline audio joins or splits Sume-hosted audio into reusable files.
Written by Sume