Logo still over a Wan 3.0 clip: Timeline compose overlay costs $0.02

Burn a GPT Image 2.5 logo or price card over a Wan 3.0 clip with Timeline compose for a flat $0.02. Import both files first; the still lasts the whole clip.

5 min readSume
All posts

To put a generated logo or price card over a Wan 3.0 clip, run Timeline compose with operation: "overlay": it takes one still and one video and returns one MP4 for a flat $0.02 per job. Both files must already be media.sume.com artifacts or assets in your workspace, so import them first with POST /v1/media-imports.

The still stays on screen for the whole clip, and the output length always comes from the video layer, up to 300 seconds.

The three calls

First POST /v1/images for the card, then POST /v1/videos with wan-3.0 for the motion, then compose. Compose needs an Idempotency-Key, runs asynchronously by default, and you poll GET /v1/jobs/:id/status and /result. Send mode: "sync" to wait up to 30 seconds.

{
  "operation": "overlay",
  "image": {"url": "https://media.sume.com/artifacts/artf_demo/card.png"},
  "video": {"url": "https://media.sume.com/artifacts/artf_demo/clip.mp4"},
  "layout": {"position": "bottom", "width_ratio": 0.6, "margin_ratio": 0.05},
  "output": {"width": 1080, "height": 1920, "fps": 25}
}

Cost of the whole pipeline

A 5-second Wan 3.0 clip at 720p costs $0.6250 at $0.125 per second (the $0.10 list rate plus Sume's 25% margin). The $0.02 compose job brings the clip and overlay to $0.6450, plus the price of the card still, which depends on the quality you pick; see the Image API docs.

One finished 5-second 720p clip with an overlay card (read 2026-10-07)
StepEndpointCost
Card stillPOST /v1/imagesVaries by quality
Clip, Wan 3.0 720p, 5 sPOST /v1/videos$0.6250
Overlay composePOST /v1/timeline-1.0/compose$0.02
Total without the card$0.6450

Where compose fits in a batch

The $0.02 compose job is flat, so 20 clips with the same card cost $0.40 in compose fees, whatever the clip length. It also keeps the card pixel-exact, where a model prompted to draw a logo can distort it.

Use one card for the whole batch and import it once. Each compose job then needs only the new clip's URL, plus its own Idempotency-Key. Reuse of the key for the same payload is safe; reuse for a different payload is not.

  • Import the card once and reuse its artifact URL.
  • Give each job a unique Idempotency-Key.
  • Collect video_url from each result for the Timeline step.

Layout rules that bite

Overlay accepts position (top, center or bottom), width_ratio from 0.05 to 1 with a default of 0.9, and margin_ratio from 0 to 0.45. Stack keys such as split or ratio on an overlay return a 400. The default output is 1080x1920, so set output.width and height to match the timeline you assemble into.

If the video has no audio, compose warns with compose_video_has_no_audio but still renders. The compose docs list the other error codes.

Before you run a large batch, test one compose job with mode: "sync" to see the result inside 30 seconds, then switch to the default async mode for the rest. Check the result's duration_seconds against the clip you sent, since compose clamps a requested duration that goes past the end of the source and warns about it. A clean first job tells you the layout values are right, and the other 19 can run unattended with the same settings.

Sequence matters: finish and approve the clip first, then compose. Composing before approval means paying the flat fee again for every rejected take.

  • Use a PNG card; compose rejects a still that does not probe as a still.
  • Keep the card inside the safe area, since platform UI covers the bottom of vertical video.
  • Use stack instead when the card should sit beside the video, not on it.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume