YouTube Shorts thumbnail grabber: pull a frame with video frames
Pull up to 24 stills from a Short at times you name with POST /v1/video-frames, as png or jpeg, up to a 2160 long edge. The call is unbilled.
To grab thumbnail candidates from a Short, import the clip, then call POST /v1/video-frames with at set to the seconds you want. You get durable image artifacts, as png (lossless) or jpeg, at the source frame size unless you cap the long edge with max_edge. The docs list the call as unbilled.
YouTube's help page says custom Shorts thumbnails can currently only be added in YouTube Studio on a computer, and the account must be verified. Sume only produces the image; you still upload it there. Facts below are from Video frames, read 2026-09-30.
How do I request frames at named times?
Required: video_url (a media.sume.com artifact or asset in your workspace, so import first with POST /v1/media-imports) and exactly one of at[] or fps. at takes 1 to 24 values, each 0 or more, and every value must be before the clip's duration or the worker fails with frame_time_out_of_range.
curl -X POST https://api.sume.com/v1/video-frames \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: short-thumb-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/short.mp4",
"at": [0.5, 3, 6.5],
"format": "png",
"max_edge": 2160
}'What size and format come back?
Omitting max_edge keeps the source size. max_edge is a long-edge clamp from 16 to 2160. On a 9:16 Short, a 2160 long edge works out to 1215 by 2160 (arithmetic, not a documented output). If the Short is already smaller, check the returned width and height for each frame; each entry in frames carries t, url, width and height.
| Parameter | Rule |
|---|---|
at[] | 1 to 24 seconds, each at least 0 |
fps | Alternative to at; up to 2, capped at 24 frames |
format | jpeg (default) or png |
max_edge | 16 to 2160; omit to keep source size |
| Source length | Up to 300 s |
| Billing | Unbilled |
How do I find the good frame?
Ask for a spread, such as every second or three or four chosen moments, and look at the stills. If one instant fails to extract, it comes back with a null url and the job still succeeds. For a ready-made size reference see Shorts vertical thumbnail 9:16, and for the general flow thumbnail from a video frame.
Can an agent do this over MCP?
Yes. Hosted MCP exposes video_frames_create and video_frames_get. The flow is video_frames_create, then jobs_wait, then video_frames_get. Writes need an idempotency_key.
Sources
Related posts
More in Use cases
- Smooth jump cuts: trim, then a short fade between clips
Descript added Smooth all for jump cuts. Via API, trim the clean segments and join them in Timeline 1.0 with a fade of up to 1 second. No AI regeneration.
- Spotify AI Persona badge: does it apply to AI instrumentals?
Spotify's AI Persona badge is about an artist identity that may be AI-generated. What the announcement says, and what a Sume music job actually returns.
- Squarespace video background on mobile: make it 16:9
Squarespace says to use landscape video like 16:9 to minimize cropping. Turn a vertical clip into 16:9 with Timeline blur fit, or crop it with Video filter.
- Squarespace background video blurry: 1080p and 3 Mbps
Squarespace advises 1080p and at least 3 Mbps for background videos. Sume sets size and fps on its renders but has no bitrate field. What to control.
Written by Sume