Seedance 2.0 Mini is the low-cost tier of ByteDance's Seedance 2.0 family, released in June 2026. It produces 4-15 second clips at 480p or 720p. The mode is picked from the fields you send: text-to-video, image-to-video from a first frame with an optional last frame, or reference-to-video with 1-9 images, up to 3 clips and 3 audio tracks. Audio generation is optional and off by default, which suits pipelines that add their own sound.
Best for
- Background loops and B-roll for social posts
- Motion previews for storyboards
- Animating product stills at scale
- Apps that generate many short clips for their users
Prompting tips
- Sending
image_urlselects image-to-video; sendingimage_urlsselects reference mode. Do not mix them. - Set
generate_audio: trueif you need sound; it stays off unless you ask. - Keep one subject and one action per clip for the cleanest results at 720p.
- The default ratio is 16:9, so set 9:16 for vertical platforms.
FAQ
How much does Seedance 2.0 Mini cost?
Seedance 2.0 Mini costs from $0.0366 per second. You pay only for delivered clips; failed generations are not charged.
Does Seedance 2.0 Mini generate audio?
It can, but audio is off by default. Turn it on with generate_audio: true.
Should I use Mini or Seedance 2.0 Fast?
Both stop at 720p. Seedance 2.0 Fast keeps audio on by default and shares the full Seedance 2.0 request shape, while Mini is positioned as the family's low-cost tier. Compare estimated_cost for your exact settings.
How to call Seedance 2.0 Mini via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-mini",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "seedance-2.0-mini",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"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://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_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": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"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));
Parameters
| 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 |
The same schema is available from GET /v1/models/seedance-2.0-mini.









