Video inspect stills come back 432x768: set max_edge 1920
Video inspect clamps stills to a 768 long edge by default, so a 1080x1920 clip returns 432x768 frames. Set max_edge up to 2160, or use video frames.

If you inspect a 1080x1920 vertical clip and get stills that are only 432x768, nothing is wrong: video inspect clamps the long edge of each still to 768 pixels by default. 768 / 1920 = 0.4, so a 1080x1920 frame becomes 432x768. Send max_edge (64 to 2160) in the frames object to get bigger stills, or use video frames, which keeps the source size unless you clamp it.
The two defaults side by side
The two routes look similar but differ on this one point, and it matters when you are reading small caption text on a vertical clip.
| Route | max_edge default | Allowed range | Still from a 1080x1920 clip |
|---|---|---|---|
| video inspect | 768 | 64 to 2160 | 432x768 |
| video inspect, max_edge 1920 | set by you | 64 to 2160 | 1080x1920 |
| video frames | none (source size) | 16 to 2160 | 1080x1920 |
Asking for full-size stills
frames takes exactly one of at[] (1 to 24 timestamps) or fps (above 0, up to 2, mid-bin, capped at 24 stills). Add format: "png" for lossless frames and max_edge for the size. Inspect reads sources up to 1800 seconds; video frames reads up to 300.
Every Sume media tool except captions takes a media.sume.com URL that your workspace already owns, so import the clip first with POST /v1/media-imports and send an Idempotency-Key on writes.
curl -X POST https://api.sume.com/v1/video-inspect \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: inspect-big-stills-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/short.mp4",
"frames": {"at": [0, 4.5], "max_edge": 1920, "format": "png"}
}'Which route to pick
- Need probe facts, an STT transcript or a quick skim of a long file: inspect, and raise
max_edgeonly if you need to read small text. - Need exact frames at the source size for a cover or a caption check: video frames.
- Do not send
at[]andfpstogether; both routes return a 400 for that. - A timestamp at or past the duration fails with
frame_time_out_of_range.
Sizes for other clips
The clamp applies to the long edge, whichever edge that is, and keeps the aspect. A horizontal 1280x720 clip gives 768x432 stills. A 1080x1920 clip gives 432x768 at the default and about 1215x2160 at the 2160 ceiling.
| Source | max_edge | Still size |
|---|---|---|
| 1080x1920 | 768 (default) | 432x768 |
| 1080x1920 | 1920 | 1080x1920 |
| 1280x720 | 768 (default) | 768x432 |
| 1280x720 | 1280 | 1280x720 |
Cost and when the default is enough
Inspect bills the probe and the stills by their Modal compute, with the reserve capped at the hold, and an optional transcript at $0.01 per audio minute on top (confirm in GET /v1/catalog). max_edge changes the still size, not the transcript rate. A larger edge makes bigger image files to download, so use the default when you only need to see scenes, and raise it when you must read burned-in captions or inspect edges.
A simple rule: scanning for content or scene changes, keep 768. Proofing a final cut for text and crop quality, ask for 1920 or use video frames. Skimming a very long file, add seek: "fast", which moves each still to the keyframe at or before the requested instant, so it can be earlier than asked (about 0 to 5 seconds on typical sources) but never later.
Whichever route you use, keep in mind that inspect reads sources up to 1800 seconds and 24 stills per call, while video frames reads up to 300 seconds. For a long file, inspect gives you the overview, and frames gives you the exact full-size stills for the moments you picked.
- Default stills: 8 mid-bin frames, or one per second for a clip under 8 seconds.
frames: falsereturns the probe only, with no stills.format: "png"is lossless;jpegis the default.
Sources
Related posts
More in Media tools
- Video inspect frames: at and fps together return a 400 conflict
Sume video inspect frames takes either at[] or fps, never both. The conflict and required codes, the 24-still cap, and how to sample a clip evenly.
- video-inspect 400: frames at and fps together on a Shorts hook
Send frames.at or frames.fps to Sume video-inspect, never both: both returns 400 video_inspect_frames_program_conflict. Pick at[] for a Shorts hook check.
- video-inspect frames needs at or fps: probe a Short with frames:false
video_inspect_frames_program_required means frames is an object with no at or fps. Omit frames for 8 stills, or pass frames:false to only probe a Short upload.
- Check an ad clip's aspect ratio with Sume video inspect stills
Sume video inspect returns stills with width and height. Send max_edge at the source edge, read the ratio, and catch a wrong-ratio clip before upload.
Written by Sume