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.

5 min readSume
All posts

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.

Timeline slot fields for a listing reel, as of 2026-10-08 (docs.sume.com/models/timeline)
FieldValue for this reelRule from the docs
video[0].start0Must be 0; later starts must increase
video[].duration3At least 0.2 s each
video[].fitblurcover is the default
video[].transitionfade, 0.25 sOnly on slots after the first; at most 1 s
output.fade_out_seconds0.50 to 5 s; fades plus length must fit the output
audio.duration_seconds361 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.

Render cost by reel length at $0.10 per output minute, as of 2026-10-08
Photos x secondsAudio secondsBillable minutesRender price
12 x 3361$0.10
20 x 3601$0.10
25 x 3752$0.20
40 x 31202$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

All Use cases posts

Written by Sume