Turn six product stills into a 30-second vertical video

When 12 million AI listings share the same still images, a short video stands out. Stitch six stills into a 1080x1920 clip with Sume Timeline 1.0 for $0.10.

5 min readSume
All posts

To turn a handful of product stills into a vertical video, import the images into Sume, then call POST /v1/timeline-1.0/render with audio.mode set to silence, a 30-second duration and one video slot per still. The default output is a 1080 by 1920 MP4, and a job up to one minute costs $0.10.

The reason to do it: Amazon says independent sellers created more than 12 million AI-generated listings in 2025 (read 2026-10-04). When many listings lean on the same kind of still, motion is one cheap way to look different.

Can Timeline use still images?

Yes. The docs say a video slot's source_url can be a Sume-hosted clip or still, and stills are static holds. A motion setting on a still is accepted and ignored with a motion_ignored warning, so do not expect a zoom.

Timeline 1.0 render, from Sume docs, read 2026-10-04
ItemValue
audio.duration_seconds1 to 1800; sets output length
audio.modesilence for a declared length with no audio file
video[]1 to 200 slots; video[0].start must be 0
video[].fitcover (default), contain, stretch or blur
transitionfade, wipeleft, wiperight, slideup, slidedown or dissolve; up to 1 s
Default output1080 by 1920 MP4
Price$0.10 per rounded-up output minute

What does the call look like?

Six slots of five seconds fill thirty. Every URL must already be on Sume's media host, so import first with POST /v1/media-imports, and send an Idempotency-Key.

import os, requests

stills = ["https://media.sume.com/artifacts/artf_demo/s%d.png" % i for i in range(1, 7)]
slots = []
for i, url in enumerate(stills):
    slot = {"source_url": url, "start": i * 5, "duration": 5, "fit": "cover"}
    if i:
        slot["transition"] = {"type": "fade", "duration": 0.25}
    slots.append(slot)
r = requests.post(
    "https://api.sume.com/v1/timeline-1.0/render",
    headers={
        "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
        "Idempotency-Key": "slideshow-sku-1001-v1",
    },
    json={"audio": {"mode": "silence", "duration_seconds": 30}, "video": slots},
    timeout=60,
)
print(r.status_code, r.text[:300])

How can you check the plan before paying?

The docs describe a plan step that returns billable_minutes and estimated_cost_usd_micros without creating a job or reserving credits, and without an Idempotency-Key. Use it when a batch will run many renders.

What makes the video worth watching?

Order the stills like an argument: the whole product, then use, then detail, then what is in the box. Each should be a true picture of the item. Add on-screen text with authored caption cues, and check the clip's length against the channel's current limits.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume