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.

5 min readSume
All posts

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.

Window-display loop, 36 shots (read 2026-10-05)
ItemValueSume price
Slots36 clips x 5 s, starts 0, 5, 10 ... 175included
Output1920 x 1080, audio.mode silence, 180 sincluded
Renderceil(180 / 60) = 3 output minutes$0.30
Optional bedLyria 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

All Use cases posts

Written by Sume