Headphones listing video: spec card on the left, clip on the right
Build a 16:9 listing video for headphones with Timeline compose: a vertical stack with the spec card left, 0.35 ratio, clip on the right, $0.02 a shot on Sume.

To put a spec card beside a product clip in a 16:9 video, call POST /v1/timeline-1.0/compose with operation: stack, layout.split: vertical, image_region: left and a ratio for the card's share of the width, plus output of 1920 by 1080. The job is $0.02 flat. A 0.35 ratio gives the card 35% of the width and the clip the other 65%.
A headphones listing is a landscape-page problem. Product pages, marketplace listing galleries and the first screen on a laptop all show wide video, and a spec card (drivers, battery life, weight) is what a buyer wants to read while the product turns.
The finished shot goes into a Timeline render like any other clip. Compose is only the shot-building step, and the sequence, transitions and audio spine stay on the Timeline, which keeps each job small and cheap to redo.
Vertical split
The default compose layout is the half banner: horizontal split with the still on top at 0.5. Switch to a side-by-side with split: vertical and pick image_region: left or right. Pairing the wrong region with the split, such as left on a horizontal split, returns compose_image_region_wrong_axis, which is the single most common error in this API.
ratio is the still's share of the frame from 0.1 to 0.9, and the video takes exactly the remainder. image_fit and video_fit take cover, contain or stretch; blur is not a compose fit. Use contain for the card so none of the text is cropped, and cover for the clip.
| Ratio | Card width | Clip width | Use |
|---|---|---|---|
| 0.25 | 480 px | 1440 px | A short list of three specs |
| 0.35 | 672 px | 1248 px | Specs plus a small logo |
| 0.50 | 960 px | 960 px | A feature table; the clip becomes small |
Output size and audio
The compose output uses the clip's own audio and its frame rate. If you do not pass output, it defaults to 1080 by 1920, so for a landscape card set output.width to 1920 and output.height to 1080 (even integers 256 to 2160 are accepted). Set the same size on the Timeline render later so the shot is not rescaled twice.
Compose length always comes from the video layer. A card that is a still stays up for the entire clip, and the ceiling is 300 seconds. If you ask for more than the clip has, the job clamps with compose_duration_clamped_to_source and still succeeds.
Design the card at the pixel size it will occupy, 672 by 1080 for the 0.35 ratio, so the text is crisp. The text on the card is only as accurate as you make it: take battery hours and weight from your product sheet rather than from anything the video model rendered.
Because the card is a still, it is also easy to localise: design one card per language, run the same compose with a different image.url, and keep the clip identical. Each language is another $0.02 shot rather than another full video edit.
A side-by-side shot
import os
import uuid
import requests
body = {
"operation": "stack",
"image": {"url": os.environ["SPEC_CARD_URL"]},
"video": {"url": os.environ["HEADPHONES_URL"], "duration": 12},
"layout": {"split": "vertical", "image_region": "left", "ratio": 0.35,
"image_fit": "contain", "video_fit": "cover"},
"output": {"width": 1920, "height": 1080},
}
r = requests.post(
"https://api.sume.com/v1/timeline-1.0/compose",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
"Idempotency-Key": f"hp-{uuid.uuid4()}"},
json=body, timeout=60)
print(r.status_code, r.json().get("request_id"))
Three shots, one video
Poll the job and read video_url, a new artifact. A small listing set might use three shots, such as the card with the turning product, a card with the case, and a card with the colours, each its own compose at $0.02. Join them with a Timeline render at $0.10 for a 30-second video, so the whole thing is $0.16 on the same rates.
The same recipe works with the card on the right (image_region: right), which suits right-to-left reading layouts or a page where the product image sits beside a left-aligned column of text. Try the two on one clip before you batch a catalogue; each test is another $0.02 and keeps the decision with you.
Mixing stack and overlay keys is refused (compose_stack_takes_no_overlay_layout), so keep position, width_ratio and margin_ratio out of this request. For the horizontal, top-and-bottom version see the half-banner price card post, and for the error codes see the compose errors post.
Sources
Related posts
More in Media tools
- Hotel lobby screen music: a 2-minute welcome video loop
Make a 2-minute welcome video with a soft jazz-lounge bed for a hotel lobby screen: one generation and a two-minute render, $0.325 on Sume.
- How many cuts in a 30-second Short? Timeline's 12 and 8 limits
More cuts do not make a Short original, but Sume Timeline has hard limits: 200 slots, chunking past 12 segments, 8 chained fades. What they mean for pacing.
- Link card 1200x628 from an Ideogram 4.5 edit: ask 2:1, crop 63 px
Ideogram 4.5 on Sume has no 1.91:1 ratio. Ask for 2:1 (1408x704 on a 1K edit), then crop about 63 px of width with Pillow to reach 1200x628.
- ImageMagick: turn a Sume WebP into a 1080x1350 JPEG
One magick command resizes to fill, center-crops to 1080x1350 and writes a stripped JPEG. Use it on a Sume 4:5 image whose native size is not exactly 1080x1350.
Written by Sume