How to make a 30 second advertisement with AI
Make a 30-second ad as one 30-second clip, or as shots cut over a voiceover to exactly 30 s. On Sume, seedance-2.5 and wan-3.0 make 30 s in one clip.

To make a 30-second advertisement, write a script that fits comfortably inside 30 seconds, plan the shots that go under it, make the voiceover and the shots, then cut them together so the finished spot runs exactly 30 seconds. With AI on Sume, one generated clip can cover the whole spot on seedance-2.5 or wan-3.0, which accept up to 30 seconds, or several shots can be joined over the voiceover in a Timeline 1.0 render whose length you set to the second.
The Sume facts come from the Video generation, Timeline 1.0, and Generate avatar video docs and the Sume API reference, read on 2026-09-27; anything called current behavior is read from Sume's code. The per-model clip limits have their own post: AI video length limits by model.
What are the ways to make a 30-second ad with AI?
Pick a route by what the ad shows. Durations are whole seconds, and each model's supported_durations on GET /v1/videos/models lists what it accepts; apart from seedance-2.5 and wan-3.0, the models Sume lists stop at 15 seconds or less.
| Route | How it reaches 30 seconds | Sume call |
|---|---|---|
| One continuous shot | duration: 30 on seedance-2.5 (4–30 s) or wan-3.0 (2–30 s) | POST /v1/videos |
| Several shots | Two 15-second clips, or more shorter ones, joined over one voiceover or music track | POST /v1/videos, then POST /v1/timeline-1.0/render |
| A spokesperson on camera | One avatar video from a script Sume estimates at about 30 seconds (it accepts 4–60); the avatar speaks English in current code | POST /v1/avatar-1.0/talking-video |
How do I make the ad exactly 30 seconds long?
Some placements take only fixed lengths: Amazon, for example, lists 15, 30, 45, and 60 seconds for Prime Video ads in the US (Prime Video ad specs). A Timeline 1.0 render always runs exactly audio.duration_seconds, so set it to 30. The first slot starts at 0, and the slots must cover the spine to within 0.5 seconds. Every URL must be your workspace's media.sume.com file, such as an earlier Sume output.
Today a render's sound is the spine plus an optional soundtrack, not the clips' own audio. To keep a generated clip's sound, extract it with POST /v1/audio-detach and use it as the spine.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: spot-30s-001" \
-d '{
"audio": {
"url": "https://media.sume.com/artifacts/artf_demo/voiceover.wav",
"duration_seconds": 30
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/shot-a.mp4", "start": 0, "duration": 15 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/shot-b.mp4", "start": 15, "duration": 15,
"transition": { "type": "fade", "duration": 0.5 } }
],
"soundtrack": {
"url": "https://media.sume.com/artifacts/artf_demo/music.mp3",
"loop": true, "duck_db": 8, "fade_out_seconds": 2
},
"output": { "width": 1920, "height": 1080 }
}'How do I fit the voiceover into 30 seconds?
Voice the script first, because the voice sets the pace. POST /v1/tts-1.0/generate speaks a transcript; with timestamps.words: true, current code also returns the audio's duration_seconds and each word's start and end.
- Too long or too short: cut or add words, or set
generation_config.speed, a multiplier from 0.6 to 1.5. - One line needs a new take:
audio.parts[]joins up to 20 audio slices gaplessly, with no new TTS, so you can re-voice one line and keep the rest. - Music only:
audio.mode: "silence"with the track assoundtrackatgain_db: 0; a bed defaults to −16 dB. For a new track, the Music Router steers length from the prompt ("A 30-second track"), not from a duration field.
How do I make a 15-second version from the same shots?
Render again with audio.duration_seconds: 15, a 15-second voiceover, and the slots you want to keep. The shots are already Sume-hosted, so nothing is generated twice; only the new voiceover and the second render are billed. POST /v1/timeline-1.0/plan checks each document first: it is unbilled and returns the duration and billable minutes without creating a job.
What does a 30-second AI ad cost?
Each step is its own job, each plus a 5.5% agent fee by default:
- Shots: video generation is reserved on submit at the provider's list price × 1.25; each model's
pricing_skusonGET /v1/videos/modelshas its rate. - Voiceover: $0.0475 per 1,000 characters, spaces and punctuation included.
- Music: $0.125 per audio generation, whatever its length.
- Render: $0.10 per output minute on API pricing, so a 30-second or 15-second spot reserves one minute.
Sources
Related posts
More in Use cases
- Can AI make a video from a story? Yes, shot by shot
Yes: AI turns a story into video as a series of short shots. Approve a still per shot, animate it, voice the lines, then join the shots in order.
- Mobile app ad video generator API: creator demos, end cards
Make a mobile app ad with the Sume API: run sume-mobile-app-ugc with app screenshots, add a logo end card, and join both clips with Timeline 1.0.
- Combine multiple product photos into one AI image via API
Combine product photos into one AI image: attach a packshot per SKU to Sume's sume-editorial-product-set Format, or send them to POST /v1/images.
- Generate marketing assets from one product photo via Formats
Generate marketing assets from one product photo with Sume: one catalog Format run per asset, the same packshot attached, and a key and cap per run.
Written by Sume