Seedance 2.0 Mini, released in June 2026, is the cheapest way into ByteDance's Seedance 2.0 family. It outputs 480p or 720p and leaves sound off unless you switch it on, which suits apps and pipelines that add their own audio anyway. The mode depends on the fields you fill in, so there is nothing extra to configure.
What you can make
- Background loops and B-roll for social posts.
- Moving storyboards that show how a shot will flow.
- Large numbers of animated product photos.
- Short clips generated on demand inside your own app.
Settings that matter
- Length: 4 to 15 seconds.
- Resolution: 480p or 720p.
- Modes: text only;
image_urlfor animating a start frame, optionally with an end frame;image_urlsfor reference mode with 1 to 9 images, up to 3 clips and 3 audio tracks. Pick one, do not send both image fields. - Sound: off by default. Add
generate_audio: truewhen you need it. - Aspect ratio: 16:9 by default; set 9:16 for vertical feeds.
- Clean results at 720p: one subject and one action per clip.
Starter prompt
A paper airplane glides across a sunny classroom and lands on a desk, camera follows it at desk height, gentle slow motionKeep the "camera follows" part and swap the object and place; one clear movement reads best at this resolution.
Questions
What does Seedance 2.0 Mini cost?
from $0.0784 per second. You are billed only for clips that arrive; a failed generation costs nothing.
Why does my clip have no sound?
Audio is off on Mini by default. Send generate_audio: true to have it generated.
Mini or Seedance 2.0 Fast?
Both stop at 720p. Seedance 2.0 Fast has sound on by default and uses the full 2.0 request shape, while Mini is the low-cost tier. See Mini vs Fast and compare the estimates for your settings.
Seedance 2.0 Mini in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-mini",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "seedance-2.0-mini",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "seedance-2.0-mini",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 20000 chars | |
aspect_ratio | string | 16:9 9:16 1:1 4:3 3:4 21:9 adaptive | 16:9 |
resolution | string | 480p 720p | 720p |
duration | integer | 4-15 | 5 |
generate_audio | boolean | false | |
image_url | string | ||
end_image_url | string | ||
image_urls | array | max 9 | |
video_urls | array | max 3 | |
audio_urls | array | max 3 |
Fetch this list as JSON with GET /v1/models/seedance-2.0-mini.























