Half-banner video: a still stacked over a clip for $0.02
Sume timeline compose stacks one still and one video in a single frame for a flat $0.02 per job. Layout ratio, overlay mode, 300 s ceiling and a ready request.

To put a banner image above a video, call POST /v1/timeline-1.0/compose with operation: "stack". The job costs a flat $0.02, the output length comes from the video layer, and the ceiling is 300 seconds (Timeline compose).
Request
The defaults are horizontal split, still on top, ratio 0.5. Here the still takes 30% and the video the remainder, at 720x1280.
curl -X POST https://api.sume.com/v1/timeline-1.0/compose \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: halfbanner-001" \
-d '{
"operation": "stack",
"image": {"url": "https://media.sume.com/artifacts/artf_demo/banner.png"},
"video": {"url": "https://media.sume.com/artifacts/artf_demo/talk.mp4", "duration": 20},
"layout": {"split": "horizontal", "image_region": "top", "ratio": 0.3},
"output": {"width": 720, "height": 1280}
}'Stack vs overlay
| Layout key | stack | overlay |
|---|---|---|
split | horizontal or vertical | not allowed |
ratio | Still's share, 0.1 to 0.9 | not allowed |
position | not allowed | top, center or bottom |
width_ratio | not allowed | 0.05 to 1, default 0.9 |
| Fits | image_fit and video_fit | video_fit only |
Gotchas
- The still never lengthens the clip; it holds for the whole video layer.
- A mute video is a warning (
compose_video_has_no_audio), not a failure. - Mixing stack and overlay keys is a 400.
left/righton a horizontal split givescompose_image_region_wrong_axis. - Feed the output to Timeline 1.0
video[]; setoutput.width/heightto the target to avoid a second rescale.
Worked example: the 30% banner
With ratio: 0.3 on a 720x1280 output the still takes 30% of the height, 384 px, and the video gets the exact remainder, 896 px. The default ratio of 0.5 would split it 640 and 640. The price is the same $0.02 whether the clip is 5 or 300 seconds, because the rate is flat per job.
The default output is 1080x1920 at the frame rate of the video layer. Set output.width and output.height to the timeline you assemble into so the shot is not rescaled a second time. Both the still and the video URL must be media.sume.com artifacts or assets of your workspace; import other files first, or you get unsupported_media_source.
Sources
Related posts
More in Media tools
- Instagram Reels borders and logos: crop them off with video filter
Instagram lists Reels with borders, logos or watermarks among those shown less. Crop a border off with Sume video filter, using fractions, and check it free.
- Is my clip ready for face swap? Preflight with reference ingest
Face swap wants a 4 to 15 second source with usable audio. Read the clip first with reference ingest purpose face_swap and check duration and audio.silent.
- Join voiceover takes into one gapless wav: timeline audio concat
Timeline audio concat joins up to 20 hosted audio parts sample-exact into one reusable wav for $0.01 per job and returns segment offsets.
- LinkedIn Page video max ratio 2.4:1: crop a 32:9 recording
LinkedIn Pages accept video from 1:2.4 to 2.4:1 and up to 4096x2304. A 5120x1440 ultrawide capture fails both. Crop it with Sume video filter to fit.
Written by Sume