Yard sale announcement video: three stills, a voice, 62 cents
Make a yard sale video for a neighborhood group: three item stills, TTS, one Timeline render and burned-in date cues. Endpoint chain and cost, read 2026-10-10.

A yard sale video is cheap to make on Sume: three stills from the Image API, one text-to-speech voice-over, one Timeline 1.0 render and one overlay-caption job for the date and address come to about $0.62 (about $0.74 if you also generate a music bed). Nothing in the chain needs a video model.
The reason to avoid a video model here is that a yard sale post is read, not watched. Neighbors need the date, the street and two or three items worth the trip. A still with a held voice-over does that, and the text that matters is burned in by a caption job instead of being drawn by an image model. Prices below come from the Sume pricing code and golden tests (read 2026-10-10).
What is the endpoint chain?
Four calls, none of them long-running. Each is a job you poll or receive by webhook, and every write should carry an Idempotency-Key so a retry does not bill twice.
POST /v1/imageswithgoogle/nano-banana-2.1once per item: a clean 'for sale' still at the 1K tier. Feed your phone photo as a public HTTPS reference if you want the real item; checkGET /v1/images/modelsfor the reference limit.POST /v1/tts-1.0/generatewith a 350-character script,timestamps.words: trueso the result tells you how long the audio runs.POST /v1/timeline-1.0/renderwithaudio.urlfrom the TTS job and threevideo[]stills. Starts are 0, 7 and 14 seconds with a 20-second spine.POST /v1/video-captionswithcuescarrying 'Saturday 9 to 2' and the street, so the text is exact and no speech-to-text runs.
What does it cost?
The caption job is the largest line, and it is a flat fee per job. Timeline is billed per started output minute, so a 20-second video and a 59-second video cost the same.
| Step | Basis | Cost |
|---|---|---|
| 3 item stills | 3 x $0.10 (Nano Banana 2.1, 1K) | $0.30 |
| Voice-over | 350 characters x $0.0475 per 1,000 | $0.0166 |
| Timeline render | 20 s, 1 started minute x $0.10 | $0.10 |
| Date and address cues | 1 caption job | $0.20 |
| Total | $0.6166 | |
| Optional music bed | 1 Lyria 3.5 track via Music Router | $0.125 |
What are the limits?
Timeline needs every URL to be on media.sume.com and lets video coverage stop at most 0.5 seconds before the end of the spine, so take audio.duration_seconds from the last word timing and round up. The first slot must start at 0, and stills hold statically; a motion hint is accepted, ignored and reported as motion_ignored, not a failure.
The caption job reads cues with text, start and end. You can send only one of script_text, words, cues or segments, so choose cues for exact date text. Latin text defaults to the slam style; pick a quieter style if your street name is long. Details are on the Video captions and Timeline 1.0 pages.
Two practical points not in any API: do not put a phone number or a home address in a public post unless you mean to, and re-run only the caption job (not the render) when you change the time, because the clean video does not change. A recaption is $0.20, while a full rebuild is the whole table above.
When does a video model make sense instead?
If one item is the draw, a vintage bike or a piano, add a 5-second image-to-video job. Wan 3.0 at 480p is $0.0625 per second, so the extra clip is $0.3125. Put it in the second slot and keep the same spine. See voice-over on a silent video for the same render pattern, and a 30-second ad with voice, music and captions for a priced reference.
Pre-publish checklist
Before you post, play the render once with sound off. The caption job should carry the date and street on its own, because most neighborhood feeds autoplay muted.
Check that the spine is the length of the voice-over: every video[] start must sit inside it, and the final slot holds until the spine ends. If the voice runs 18.4 seconds, round the spine to 19 and let the last still hold.
- Set the voice speed with
generation_config.speed(0.6 to 1.5) instead of rewriting the script when it runs long. - Keep one
Idempotency-Keyper step so that re-running the script after a crash picks up the finished jobs. - Save the three still URLs; next week's sale reuses them with a new date cue.
Sources
Related posts
More in Use cases
- YouTube AI disclosure for AI music and voiceover: what to keep
YouTube asks creators to disclose meaningfully altered or synthetic realistic content. What to keep from Sume music and TTS jobs, and what Sume cannot decide.
- YouTube AI label: in the player or the description?
YouTube shows its altered-content label in the player for photorealistic AI and in the expanded description for animated or non-photorealistic AI.
- YouTube Shorts ads: 10-30 second vertical cuts from a longer clip
Google says action-oriented Shorts ads use 10-30 second vertical videos and add under 60-second ads. Cut a longer Sume clip to size with one trim.
- AI album cover generator: square art at 3000×3000
Generate square album art, then upscale: Apple recommends at least 3000×3000. On Sume, generate 2400×2400 and upscale it 1.25× to reach 3000×3000.
Written by Sume