Seedance 2.5's headline feature is native audio: the soundtrack is generated together with the video in a single pass — no separate TTS step, no lip-sync post-processing. This tutorial shows exactly how to enable it and what the metering looks like.
import requests, time
BASE = "https://aiapi-pro.com/v1"
H = {"Authorization": "Bearer sk-novai-...", "Content-Type": "application/json"}
# 1) submit the generation task
task = requests.post(BASE + "/video/generations", headers=H, json={
"model": "doubao-seedance-2.5",
"prompt": "A street-food market at dusk, steam rising, vendor calling out, "
"sizzle of the wok, ambient crowd murmur",
"duration": 10,
"resolution": "720p",
"generate_audio": True,
}).json()
# 2) poll until finished (status: running -> succeeded)
while True:
r = requests.get(BASE + f"/video/generations/{task['task_id']}", headers=H).json()
if r["status"] in ("succeeded", "failed"):
break
time.sleep(10)
print(r["video_url"]) # MP4 with synchronized soundtrack
print(r["duration"], r["resolution"]) # echo of what was delivered
The same flow works as two curl calls — submit, then poll — which is how our playground drives it under the hood.
Upstream bills in tokens, not seconds. A real 10-second, 720p, audio-on generation returned:
{
"status": "succeeded",
"resolution": "720p",
"duration": 10,
"generate_audio": true,
"usage": { "completion_tokens": 216900, "total_tokens": 216900 }
}
On NovAI you never do that math: billing is a flat $0.32/second at 720p and $0.14/second at 480p, audio included, with automatic refunds on any failed generation.
The audio model listens to your prompt. Describe the soundscape explicitly — "rain on a tin roof, distant thunder, a dog barking once" — and it will stage those sounds against the visuals. Prompts with no audio description still get a plausible ambient track, but explicit cues produce markedly better sync.
Cost tip: iterate on framing and motion at 480p ($0.14/s), then render the final cut at 720p ($0.32/s). Two 480p drafts cost less than one 720p take.
Trial accounts can render one 5-second 480p clip per day with the $2 welcome credit; your first top-up of $1+ unlocks 720p, 15-second clips and unlimited daily renders.
Related: Seedance 2.5 per-second pricing · Seedance 2.5 API basics