Seedance 2.0 Mini Eco is the economy tier of ByteDance's Seedance 2.0 Mini, using the Seedance 2.0 request surface. It generates 4-15 second clips at 720p or 1080p from text, images, first and last frames or reference media (up to 9 images, 3 clips and 3 audio tracks). Picture quality may be below the standard Mini, and generation typically takes 50-100 seconds longer. Generated audio is on by default. Choose it when you want 1080p from the Mini line and can wait for results.
Best for
- 1080p batch renders from the Mini line
- Queue-based pipelines that process jobs overnight
- Product animations from still photos
- Bulk reference-driven clips for catalogs
Prompting tips
- Use webhooks rather than tight polling loops; see /docs/webhooks.
- With 1-2 images the model animates from them; 3 or more act as references.
- Frame roles cannot be combined with reference clips or audio in the same request.
- Keep prompts under about 500 characters and lead with the main action.
FAQ
How much does Seedance 2.0 Mini Eco cost?
The current rate is from $0.0451 per second. The estimate is returned before the task starts, and failed generations are not charged.
Is automatic duration available on Mini Eco?
Support for duration: -1 is not documented for this variant, so set a length between 4 and 15 seconds.
How does Mini Eco differ from Seedance 2.0 Mini?
Mini Eco adds 1080p and drops 480p, turns audio on by default, and is slower with possibly lower picture quality. Seedance 2.0 Mini is the standard Mini.
How to call Seedance 2.0 Mini Eco 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-eco",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "adaptive",
"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-eco",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "adaptive",
"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-eco",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "adaptive",
"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 | adaptive |
resolution | string | 720p 1080p | 720p |
duration | integer | 4-15 | 5 |
generate_audio | boolean | true | |
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-eco.









