Shop window holiday screen: a 3-minute 16:9 loop in one render, $0.30
Build a 3-minute 1920x1080 window-display video from 36 clips in one Timeline render: 3 output minutes at $0.10, silent spine, optional Lyria bed. Total $0.30.

To build a 3-minute holiday screen for a shop window, send 36 clips of 5 seconds to POST /v1/timeline-1.0/render with output set to 1920 by 1080, audio.mode: silence and duration_seconds: 180. That is three output minutes at $0.10, so $0.30. A Lyria bed for a screen with sound adds $0.125.
A window display is the opposite of a Short: nobody is watching from the start, so a long loop of independent shots works better than one story. The Timeline limit of 1800 seconds and 200 slots is far above what this needs.
The build stays small because nothing here is a video-model job. The footage is whatever you already shot or generated; the Timeline only sequences it, so the cost of the screen is the render and the bed, not the minutes of picture.
A landscape canvas
The default output is 1080 by 1920, so a landscape screen has to set output.width and output.height (even integers, 256 to 2160). Clips of another shape are fitted by video[].fit: cover (default) fills and crops, contain letterboxes, stretch distorts, blur fills the bars with a blurred copy. For a mix of vertical phone clips and landscape clips on one screen, blur keeps every clip whole.
You do not need to chunk by hand. render.strategy defaults to auto, which chunks past 12 segments, and single is refused above 12 slots with render_strategy_unsafe. A 36-slot render therefore runs as chunks without any field from you.
| Item | Value | Sume price |
|---|---|---|
| Slots | 36 clips x 5 s, starts 0, 5, 10 ... 175 | included |
| Output | 1920 x 1080, audio.mode silence, 180 s | included |
| Render | ceil(180 / 60) = 3 output minutes | $0.30 |
| Optional bed | Lyria 3.5, one generation, loop on | $0.125 |
| Total with bed | $0.425 |
Transitions and sound
Transitions need one rule: at most 8 adjacent transitions in a row, or the job is refused with too_many_chained_transitions. With 36 slots, put a dissolve on every second slot, which gives hard cuts between and never chains more than one. Transitions are 1 second at most and at most half the shorter neighbour, so a 0.5-second dissolve on a 5-second slot is well inside.
If you do add a bed, soundtrack.loop repeats a short track to cover three minutes, and fade_out_seconds ends it. There is no voice, so duck_db is unavailable, and the API says so with duck_requires_audio_spine. Most shop screens run without sound; make the picture work on mute.
A tip on shape: if the loop has a clear start and end, such as an opening title still and a closing offer still, give the first and last slots the stills and keep the middle for motion. Stills are static holds in the Timeline, so a still slot is a pause rather than a camera move.
Thirty-six slots
import os
import uuid
import requests
clips = [os.environ[f"WINDOW_{i}"] for i in range(36)] # media.sume.com URLs
video = []
for i, url in enumerate(clips):
slot = {"source_url": url, "start": i * 5, "duration": 5, "fit": "blur"}
if i % 2:
slot["transition"] = {"type": "dissolve", "duration": 0.5}
video.append(slot)
body = {"audio": {"mode": "silence", "duration_seconds": 180},
"video": video,
"output": {"width": 1920, "height": 1080}}
r = requests.post("https://api.sume.com/v1/timeline-1.0/render", json=body,
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
"Idempotency-Key": f"window-{uuid.uuid4()}"},
timeout=60)
print(r.status_code, r.json().get("request_id"))
Plan first
Run POST /v1/timeline-1.0/plan first. It is unbilled, needs no Idempotency-Key and returns billable_minutes, so you can confirm the 3 before spending anything. It does not predict short-source warnings: a 4-second clip in a 5-second slot is padded or looped, which shows up as a warning on the real render.
Keep the claims in the footage honest. A shop screen is the one place a shopper looks at a price with no one to ask, so put prices and dates on a still or a caption cue that you control, and check each one on the render. For the longer-form limits, see the Timeline limits post, and for how chunking behaves see the 40-clip montage post.
If the screen player cannot loop on its own, render a longer file instead of a shorter one: a 6-minute version is $0.60, and the same slot list repeated in a second block of 36 stays well under the 200-slot limit.
Sources
Related posts
More in Use cases
- Shopify product video limits: 10 minutes, 1 GB, 4K, and a 15 s clip
Shopify's product media page allows video up to 10 minutes, 1 GB, and 4096x2160 in mp4, mov, or webm. A 15-second 1080x1920 clip uses a sliver of each limit.
- Shorts 2x playback speed: captions flash by, so set phrasing max_words
YouTube's June 2026 Shorts update lists 2x playback speed. At 2x a caption phrase is on screen half as long; limit max_words and burn captions with Sume.
- Shorts has no dislike button: test three openings before you post
YouTube retired the Shorts dislike in June 2026. Cut three openings from one clip with Sume video trim, compare their stills, and publish only the strongest.
- Shorts series episode one: check four opening frames in two seconds
A Shorts series has a watch series button that leads into a series feed, so episode one is the entry. Check four frames, 0 to 2 seconds, with video inspect.
Written by Sume