Square product photos to 9:16: timeline fit cover, contain or blur
Sume Timeline 1.0 renders 1080x1920 by default. Use video[].fit cover, contain, stretch or blur to place square product photos in a vertical holiday clip.

To turn square product photos into a vertical video, set fit on each video[] slot of a Sume Timeline 1.0 request: cover (the default) fills the frame and crops, contain fits the whole photo with bars, stretch distorts to fill and blur fills the bars with a blurred copy of the image. The default output is a 1080 by 1920 MP4, which is 9:16. A render is $0.10 per ceil(output minute), so a 20 second clip is $0.10.
For product photos, blur or contain usually protects the item, while cover can cut off the edges of a square pack shot.
What each fit does to a 1:1 photo
A 1080 by 1080 square placed into 1080 by 1920 has a lot of spare height. The fit setting decides what happens to it.
| fit | Effect | Risk for a product shot |
|---|---|---|
| cover (default) | Fills the frame; crops the sides | Cuts off the left and right of the product |
| contain | Shows the whole image; leaves empty bars | Looks plain without a background |
| stretch | Stretches to the frame | Distorts the product; avoid |
| blur | Fills the bars with a blurred copy | Usually the safest default |
A request
Declare the spine first, then one slot per photo. With audio.mode: silence, you declare a length with no audio file. The first slot must start at 0, and slots must have increasing starts. Run the unbilled POST /v1/timeline-1.0/plan first, so any timing mistake is caught for free.
curl -X POST https://api.sume.com/v1/timeline-1.0/plan \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio": {"mode": "silence", "duration_seconds": 6},
"video": [
{"source_url": "https://media.sume.com/artifacts/a/pack1.jpg", "start": 0, "duration": 3, "fit": "blur"},
{"source_url": "https://media.sume.com/artifacts/a/pack2.jpg", "start": 3, "duration": 3, "fit": "blur"}
]
}'Other sizes and what to check
You can set output.width and output.height to even integers from 256 to 2160, so a square 1080 by 1080 or a 1920 by 1080 landscape is possible in the same API. For a feed that needs 9:16, leave the default.
Still images are static holds. If you add a motion field to a still, the job ignores it and reports motion_ignored, a soft warning, not a failure. Read warnings[] in the result. Then look at the first and last frame with a quick frame check, because blur backgrounds can look odd with a white-background pack shot.
Two more habits help. Make every photo the same size before upload so the crop is consistent from slot to slot. And name the output by SKU and fit mode, so you can compare a blur and a contain version of the same clip side by side before you ship 100 of them.
- Default output is 1080x1920.
- blur protects a square pack shot.
- Plan first; it is unbilled.
A product-photo workflow
Prepare once, render many. Export every pack shot at the same square size on a clean background, upload them with the media import call, and keep the returned hosted URLs in your sheet. Then build the slots from the sheet: one photo per slot, three seconds each, fit set to blur. A script that loops over rows will produce a timeline body for each product in a few lines.
Choose by product type. Boxed goods with straight edges survive cover well because a crop of the sides loses only margin. Round or tall items, like a candle or a bottle, are easy to clip, so use contain or blur. Never use stretch for packaging, because a bent logo is a bad look in a holiday ad and a trust problem for a shopper.
If you run a batch, make one test render per fit mode on three representative products before you commit. Each is a minute-or-less job at $0.10, so nine tests cost $0.90, and they settle the choice for the rest of the catalog with real output instead of a guess.
Related posts
More in Media tools
- Stability AI's Series B and label backers: what it means for audio
Stability released Stable Audio 3.0 on 5/20/26 and raised a Series B on 8/25/26 with EA, Sony, UMG and WMG. A dated timeline and what to verify for video work.
- Stabilize shaky video by API: Sume has no deshake, so do this
Sume's video filter refuses deshake and vidstab as unknown filters. Prove it with the free check, stabilize upstream, then use Sume for trim, crop and captions.
- Strip the English voiceover before localizing: audio-detach is 1 cent
Pull the audio track from a finished ad with Sume audio-detach at $0.01 per job to reuse, review or replace it before a 12-market localization pass.
- Temu detail video up to 180 s: stitch 30 s clips with Timeline
Temu detail video allows up to 180 s and 300 MB at 720p or higher. Sume clips top out at 30 s, so six clips stitched with Timeline cover the full length.
Written by Sume