Mattress Black Friday video ad: a dimmed bedroom clip and a price card

Make a mattress Black Friday ad with AI: one 8-second bedroom clip, a dim pass, and a price-card overlay on top, about $1.12 in Sume jobs.

5 min readSume
All posts

To make a mattress Black Friday video ad with AI, generate one short bedroom clip, dim it so type can sit on top, then lay a price-card still over it with Timeline compose. On Sume that is four jobs for one 8-second 720p ad: a Gemini Omni Flash 1.1 clip, one Ideogram 4.5 price card, one video filter encode and one compose, about $1.115 at the rates below. The whole ad is made of the clip's own audio and one still, so there is no editor in the loop.

The order matters. A dim pass is a pixel pass on one clip, and compose output length always comes from the video layer, so you dim first and compose last. Doing it the other way round would dim your price card too.

The four jobs and what each costs

Every number comes from Sume's own docs and price table, and you should confirm it in GET /v1/catalog before a campaign, because rates can change. Sume bills the provider list times 1.25 on the generation steps.

Mattress ad pipeline, one 8-second 720p clip (read 2026-10-05)
StepEndpointSume price
Bedroom clip, 8 s at 720pPOST /v1/video-router/generate, model gemini-omni-flash-1.18 x $0.125 = $1.00
Price card stillPOST /v1/images, model ideogram/ideogram-v4.5, medium$0.075
Dim 0.45POST /v1/video-filter$0.02
Overlay the cardPOST /v1/timeline-1.0/compose, operation overlay$0.02
Total$1.115

Dim first, overlay second

Gemini Omni Flash 1.1 takes 3 to 10 seconds at 360p, 720p, 1080p or 4K, in 16:9 or 9:16, and its native audio is always on. For a vertical ad, send aspect_ratio: "9:16". Prompt the room, not the claim: a made bed by a window at dusk, a slow push-in, no people lying down. Whether a mattress is firm or cools you down is something footage cannot prove, so keep outcome claims out of the prompt and out of the card text.

The video filter's dim op multiplies the luma of the whole clip: amount must be above 0 and at most 1, and 0.45 is the docs example. Black stays black and chroma does not change. Every write also needs an Idempotency-Key, and each job is async by default: poll GET /v1/jobs/:id/status, then read /result for the new artf_ URL that feeds the next step. Run the same body against /v1/video-filter/check first. The check is free, creates no job and reserves no credits, and it answers with valid, diagnostics and an estimate.

Overlay settings for a price card

The overlay layout keys are position (top, center or bottom), width_ratio (0.05 to 1, default 0.9) and margin_ratio (0 to 0.45 of height, default 0.05). The plate keeps its own aspect, and the still is held for the whole clip, so it cannot make the clip longer. If you send stack keys such as split or ratio with operation: "overlay", the API answers 400 compose_overlay_takes_no_stack_layout.

  • Put the price card at bottom with margin_ratio near 0.08 so a phone's gesture bar does not sit on it.
  • Keep width_ratio under 1 so the card has a visible edge against the dimmed room.
  • Both URLs must be this workspace's media.sume.com artifacts: import files first with POST /v1/media-imports, or use the returned artifact URLs.

Check the dim before you pay for it

import os
import requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
body = {
    "video_url": "https://media.sume.com/artifacts/artf_demo/bedroom.mp4",
    "ops": [{"op": "dim", "amount": 0.45}],
}
r = requests.post("https://api.sume.com/v1/video-filter/check", headers=H, json=body, timeout=60)
data = r.json()
print(r.status_code, data.get("valid"), data.get("next_action"))

Where it breaks

compose_video_has_no_audio is a warning, not a failure: a muted source still renders. A source over 300 seconds fails the filter with output_duration_exceeded, which a 10-second ad never hits. Compose caps its video layer at 300 seconds too.

Read the final compose result for video_url and duration_seconds, and check the duration is the 8 seconds you asked Omni for before you upload anywhere.

Add a music bed afterwards in Timeline 1.0 if you want one; the ad above keeps the clip's own sound. The same four-job shape works for any big-ticket item that photographs as a room, and the half-banner pattern covers the stack layout when you want the card above the clip instead of over it. For a brighter clip, see dimming a bright clip so captions read.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume