Punch-in zoom on video by API: crop or zoompan, no keyframes
Sume has no auto zoom switch. Use a crop op for a fixed punch-in or the allowlisted zoompan filter in a video-filter graph; there are no keyframes.

Sume does not detect moments and zoom on them. What POST /v1/video-filter offers is a fixed punch-in through a crop op, or a zoompan filter you write yourself in a filtergraph. There is no keyframed zoom parameter.
Submagic's create-project docs list a magicZooms boolean that is set per project. Sume's side, from Video filter and the compiler's filter allowlist, read 2026-10-01, is lower level.
How do I get a static punch-in?
Use a crop op. It takes fractions of the source frame: x, y in 0 to 1, width, height from 0.05 to 1, and each edge must stay inside the frame. Cropping to 0.8 by 0.8 centered is a 1.25x punch-in. The output is the smaller cropped frame, so add a scale step in the graph if you need the original size. Cut the range first with video trim if only seconds 4 to 6 should zoom.
curl -X POST https://api.sume.com/v1/video-filter/check \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
"ops": [{ "op": "crop", "x": 0.1, "y": 0.1, "width": 0.8, "height": 0.8 }]
}'Can I animate the zoom?
zoompan is in VIDEO_FILTER_GRAPH_ALLOWED_FILTERS, so a graph may name it, and it is ffmpeg's own zoom-and-pan filter. The program contract has no keyframe list, though: any motion has to be an ffmpeg expression inside the string. The docs say a program that passes /check can still fail on the worker for a bad expression, memory or time, so test on a short trimmed clip.
What are the limits?
| Item | Limit |
|---|---|
ops[] | Max 8, applied before the filtergraph |
| Filtergraph | 2048 chars, 32 named filters, filters only |
| Source length | 300 seconds |
| Price | $0.02 per encode job; /check is free |
| Not allowed | trim, setpts, drawtext, lut3d, anything reading a file |
Where do the zoom moments come from?
You choose them. Find timestamps with video_inspect stills or a transcript, then split the clip around them with trim and apply the crop to those pieces. The filter allowlist post lists what else a graph can do.
Sources
Related posts
More in Developers
- remove.bg API rate limit: 500 per minute, weighted by megapixels
remove.bg allows 500 images per minute at about 1 MP, less for larger inputs. Sume limits requests per minute per key and sends retry-after on 429.
- remove.bg bg_color replacement: Sume RMBG gives a transparent PNG
remove.bg's API has bg_color and bg_image_url. Sume RMBG 1.0 takes only an image_url and returns a PNG with alpha, so the new background is a second step.
- remove.bg crop and roi parameters: what Sume RMBG does instead
remove.bg has crop, roi, crop_margin, scale and position. Sume RMBG takes an image_url only and rejects other fields, so cropping happens before or after.
- remove.bg PNG over 10 MP unsupported: Sume RMBG limits
remove.bg does not support PNG above 10 megapixels; use WebP or ZIP up to 50 MP. Sume RMBG returns PNG with alpha and caps compressed input at 20 MiB.
Written by Sume