Open-house reel from 12 listing photos: one Timeline render, $0.10
12 listing photos at 3 seconds each make a 36-second vertical reel in one Sume Timeline render: one voice spine, fades, blur fit, ceil(36/60) = 1 minute, $0.10.

To turn 12 listing photos into an open-house reel, import the photos and one voice track to Sume, then send one POST /v1/timeline-1.0/render with 12 video[] slots of 3 seconds each. The audio is 36 seconds, so the render bills ceil(36 / 60) = 1 minute at $0.10 per output minute. The result is one 1080x1920 MP4. Photos are static holds, so the job needs no video model.
What the call looks like
Every URL in a render must already be a media.sume.com artifact or asset of your workspace. Import the photos first with POST /v1/media-imports. Then describe the program: the voice file is the audio spine and sets the length, and each photo is a slot with a start time and a duration.
Twelve slots is a useful number. Timeline's render.strategy default is auto, and it chunks a render past 12 segments. Sume refuses strategy: "single" above 12 slots with render_strategy_unsafe. A 12-photo reel stays at the largest size that single allows.
{
"audio": { "url": "https://media.sume.com/artifacts/artf_vo/tour.wav", "duration_seconds": 36 },
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_p01/front.jpg", "start": 0, "duration": 3, "fit": "blur" },
{ "source_url": "https://media.sume.com/artifacts/artf_p02/kitchen.jpg", "start": 3, "duration": 3, "fit": "blur",
"transition": { "type": "fade", "duration": 0.25 } }
],
"output": { "fade_out_seconds": 0.5 }
}Landscape photos in a vertical frame
Listing photos are almost always landscape, and the default output is 1080x1920. The fit field on each slot decides what happens. cover crops to fill, contain letterboxes, stretch distorts, and blur fills the empty bars with a blurred copy of the same photo. For rooms, blur keeps the whole room in frame, and cover loses the sides of a wide living room.
| Field | Value for this reel | Rule from the docs |
|---|---|---|
video[0].start | 0 | Must be 0; later starts must increase |
video[].duration | 3 | At least 0.2 s each |
video[].fit | blur | cover is the default |
video[].transition | fade, 0.25 s | Only on slots after the first; at most 1 s |
output.fade_out_seconds | 0.5 | 0 to 5 s; fades plus length must fit the output |
audio.duration_seconds | 36 | 1 to 1800 s |
Stills are held, not animated
The docs say that a still is a static hold. You can send a motion field, but the job ignores it and reports motion_ignored as a soft warning. If you want a push-in on the kitchen, make a clip first with a video model and use that clip as the slot. A reel of 12 plain holds is a slideshow, and for many listings that is the honest product.
The price arithmetic
Timeline costs $0.10 per ceil(output minute). The reserve is ceil(audio.duration_seconds / 60). It uses worker ffmpeg and no provider inference.
| Photos x seconds | Audio seconds | Billable minutes | Render price |
|---|---|---|---|
| 12 x 3 | 36 | 1 | $0.10 |
| 20 x 3 | 60 | 1 | $0.10 |
| 25 x 3 | 75 | 2 | $0.20 |
| 40 x 3 | 120 | 2 | $0.20 |
Check it before you pay
POST /v1/timeline-1.0/plan runs the schema and URL checks and the compiler, then returns billable_minutes and estimated_cost_usd_micros without creating a job or reserving credits. A plan cannot predict padded or looped short-source warnings, so read warnings[] on the real result.
Render needs an Idempotency-Key. The default mode is async and returns 202. Pass mode: "sync" to wait up to 30 seconds for a 200. Then read video_url from GET /v1/jobs/:id/result. The voice-over itself is a separate job and is not in the $0.10.
Sources
Related posts
More in Use cases
- A real person's photo avatar reading a script: YouTube disclosure
A Sume avatar made from a real person's photo and given a script can show them saying words they never said, which YouTube says needs a disclosure label.
- Photographer portfolio reel from stills with Omni Flash
Turn 10 portfolio photos into a 60-second reel with Gemini Omni Flash: six seconds each, $7.50 at 720p on Sume, with 360p drafts first at $2.25.
- Pinterest video titles show 40 characters: burn the hook in
Pinterest shows the first 40 characters of a video ad title in the feed (30 for CJK) and hides the description. Burn the hook in with Sume captions.
- Pixel art and isometric video with Omni Flash: prompts
Prompt wording for pixel-art and isometric looks in Gemini Omni Flash, what Google's page says the model cannot control, and the cost of a draft on Sume.
Written by Sume