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.

400 video_inspect_frames_program_required means you sent frames as an object with neither at nor fps, for example {} or { "format": "png" }. Either add one of the two, omit frames for the default 8 stills, or send frames: false to get only the probe.
The probe-only call is the cheap way to check a vertical upload before posting. YouTube lists vertical video with a maximum resolution of 1080p for Shorts (YouTube Help, read 2026-10-05), so knowing the clip's real dimensions and length up front saves a failed round trip.
The three valid shapes
The API message itself spells it out: omit frames for the default 8 stills, or pass frames:false for probe only. The next_action hint is pass_frames_at_or_fps. Options such as format, max_edge and seek only mean something next to an at or fps, which is why an options-only object is refused.
| Send | Get |
|---|---|
| nothing | 8 stills (1 fps if the clip is under 8 s) |
| false | probe facts only |
| { at: [0, 2] } | stills at those seconds |
| { fps: 1, max_edge: 512 } | a 1 fps grid, smaller stills |
| { max_edge: 512 } | 400 video_inspect_frames_program_required |
Probe-only preflight
Send this body to POST /v1/video-inspect with an Idempotency-Key header. The default mode is sync with a 30 second wait; if the job is not done by then you get a 202 and poll.
{
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
"frames": false
}Using the probe result
The docs say a frames: false inspect is enough to read probe.has_audio, which matters before you ask for a transcript: a silent clip with transcribe: true fails with inspect_source_has_no_audio. Read the probe first, then decide on stills or a transcript. The transcript is a separate billed step at $0.01 per audio minute in the public pricing constant, and the docs say to confirm the live rate in GET /v1/catalog.
Where this fits in a Shorts workflow
A practical order is probe first, stills second, transcript third. The probe costs the least and answers the questions that stop a publish: is there an audio track, how long is the file, and does it fit the length you intend to post. The stills then let a reviewer, human or model, judge the opening frames. Only then spend on a transcript if you need captions or a script check. Each step is a separate request, so you can stop as soon as the answer is no.
Limits
The source must be a media.sume.com clip your workspace already owns and at most 1800 seconds. The probe tells you facts about the file; it does not decide whether a platform will classify or recommend it. Read the video inspect docs for the full table.
Sources
Related posts
More in Media tools
- 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.
- Video inspect hdr flag: spot PQ or HLG clips before you submit
Sume video inspect returns probe.hdr, color_transfer and pix_fmt. Read them first and route HDR clips away from the video filter and exact trim.
- Video inspect 400 video_inspect_transcribe_required: the fix
Sending language_code, segmentation or duration_seconds to Sume video inspect without transcribe true returns a 400. Why, and the request that works.
- Which field holds the file URL in a Sume media job result
Sume media jobs return different result keys: audio_url for detach, video_url for trim and filter, frames for stills. A field map for no-code steps.
Written by Sume