Dreamina Seedance 2.0 vs Dreamina Seedance 2.0 Mini
Lequel, quand — verdict de synthèse, pas un tableau de benchmarks
Le palier mini coûte moitié moins — $3.5 par million de tokens vidéo contre $7 — et c'est le plus récent des deux (2026-06 contre 2026-01), mais il ne rend qu'en 480p/720p là où le modèle de base atteint le 4K avec une sortie 10 bits. La durée des clips (4–15 s), la cadence (24 fps), les six ratios et l'audio natif sont identiques. Prenez le mini pour du volume en 720p, le modèle de base quand il vous faut la résolution.
Tarification
| Dreamina Seedance 2.0 | Dreamina Seedance 2.0 Mini | Δ | |
|---|---|---|---|
| Par 1M tokens vidéo | $7 | $3.5 | 2× |
Tarifs issus du catalogue en direct au moment de la compilation ; chaque page de modèle présente la fiche actuelle.
Où ils se situent — prix pour 1M de tokens vidéo sur l'ensemble des 5 modèles génération de vidéos pour cette unité de facturation (échelle logarithmique)
Capacités
| Dreamina Seedance 2.0 | Dreamina Seedance 2.0 Mini | |
|---|---|---|
| Audio natif | oui | oui |
Spécifications
| Dreamina Seedance 2.0 | Dreamina Seedance 2.0 Mini | |
|---|---|---|
| Modalités d'entrée | texte image | texte image |
| Modalités de sortie | vidéo | vidéo |
| Sortie | 2026-01 | 2026-06 |
| Résolution | 480p – 4K (10-bit at 4K) (plage) | 480p / 720p (ensemble fixe) |
| Durée du clip | 4–15 s (plage) | 4–15 s (plage) |
| Fréquence d'images | 24 fps | 24 fps |
| Ratios d'aspect | 6 (incl. 16:9, 9:16, 1:1) | 6 (incl. 16:9, 9:16, 1:1) |
| Modes d'entrée |
|
|
| Format | .mp4 | .mp4 |
Les spécifications sont transcrites à partir de la documentation de chaque fournisseur ; une ligne qu'un fournisseur ne publie pas est omise plutôt que déduite. Sources complètes : Dreamina Seedance 2.0 · Dreamina Seedance 2.0 Mini
Un prompt, deux modèles — mesurés via la passerelle
Renvoyé par le modèle 1280×720 Durée 5s latence 133 s
Renvoyé par le modèle 1280×720 Durée 5s
Un prompt, une requête par modèle, aucun nouvel essai et aucune sélection sur le volet — le premier résultat renvoyé par chaque modèle. Ni la taille ni la durée n'ont été fixées : chaque modèle a utilisé sa propre valeur par défaut, car une requête conçue pour s'adapter à tous n'en mettrait aucun en valeur. Les fichiers ici sont réencodés pour le web, jugez donc la composition et le respect du prompt, pas la compression.
Basculez de l'un à l'autre avec une seule ligne
Les deux ids sont dans chaque onglet ci-dessous — la paire de lignes en surbrillance est la seule modification. Même endpoint, même clé, même structure de requête.
import time
import requests
BASE = "https://synthorai.io/v1"
HEADERS = {"Authorization": "Bearer sk-syn-..."}
# 1) create the video generation job (POST /v1/videos)
task = requests.post(
f"{BASE}/videos",
headers=HEADERS,
json={
"model": "dreamina-seedance-2-0-260128",
# "model": "dreamina-seedance-2-0-mini-260615", # décommentez cette ligne, commentez celle du dessus
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5,
},
).json()
# 2) poll the job until it reaches a terminal state
while task["status"] in ("queued", "in_progress"):
time.sleep(5)
task = requests.get(f"{BASE}/videos/{task['id']}", headers=HEADERS).json()
# 3) completed → signed video URL (valid ~24h — download and store it promptly)
if task["status"] == "completed":
print(task["data"][0]["url"])
else:
print(task["error"])const HEADERS = {
Authorization: "Bearer sk-syn-...",
"Content-Type": "application/json",
};
interface VideoTask {
id: string;
status: "queued" | "in_progress" | "completed" | "failed" | "cancelled";
data?: Array<{ url: string }>;
error?: { code: string; message: string };
}
// 1) create the video generation job (POST /v1/videos)
const created = await fetch("https://synthorai.io/v1/videos", {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
model: "dreamina-seedance-2-0-260128",
// model: "dreamina-seedance-2-0-mini-260615", // décommentez cette ligne, commentez celle du dessus
prompt: "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
resolution: "720p",
duration: 5,
}),
});
let task = (await created.json()) as VideoTask;
// 2) poll the job until it reaches a terminal state
while (task.status === "queued" || task.status === "in_progress") {
await new Promise((r) => setTimeout(r, 5000));
const res = await fetch(`https://synthorai.io/v1/videos/${task.id}`, { headers: HEADERS });
task = (await res.json()) as VideoTask;
}
// 3) completed → signed video URL (valid ~24h — download and store it promptly)
if (task.status === "completed") console.log(task.data?.[0]?.url);
else console.error(task.error);# Create the job; "Prefer: wait" holds the request up to 60s and returns the
# completed task when generation finishes in time (else the queued task).
curl https://synthorai.io/v1/videos \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-H "Prefer: wait=60" \
-d '{
"model": "dreamina-seedance-2-0-260128",
# "model": "dreamina-seedance-2-0-mini-260615", # décommentez cette ligne, commentez celle du dessus
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5
}'
# Still queued / in_progress? Poll until completed → data[0].url (valid ~24h).
curl https://synthorai.io/v1/videos/vid_9f2e8c1a4b7d \
-H "Authorization: Bearer sk-syn-..."package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"time"
)
const base = "https://synthorai.io/v1"
type videoTask struct {
ID string `json:"id"`
Status string `json:"status"`
Data []struct {
URL string `json:"url"`
} `json:"data"`
}
func call(method, url string, body []byte) (t videoTask) {
req, _ := http.NewRequest(method, url, bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer sk-syn-...")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
json.NewDecoder(resp.Body).Decode(&t)
return t
}
func main() {
// 1) create the video generation job (POST /v1/videos)
payload, _ := json.Marshal(map[string]any{
"model": "dreamina-seedance-2-0-260128",
// "model": "dreamina-seedance-2-0-mini-260615", // décommentez cette ligne, commentez celle du dessus
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p",
"duration": 5,
})
task := call("POST", base+"/videos", payload)
// 2) poll the job until it reaches a terminal state
for task.Status == "queued" || task.Status == "in_progress" {
time.Sleep(5 * time.Second)
task = call("GET", base+"/videos/"+task.ID, nil)
}
// 3) completed → signed video URL (valid ~24h — download and store promptly)
if task.Status == "completed" {
fmt.Println(task.Data[0].URL)
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
// JDK built-in HttpClient — no extra dependency needed.
HttpClient http = HttpClient.newHttpClient();
// 1) create the job; "Prefer: wait=60" holds the request up to 60s and
// returns the completed task when generation finishes in time
HttpRequest create = HttpRequest.newBuilder(URI.create("https://synthorai.io/v1/videos"))
.header("Authorization", "Bearer sk-syn-...")
.header("Content-Type", "application/json")
.header("Prefer", "wait=60")
.POST(HttpRequest.BodyPublishers.ofString("""
{"model": "dreamina-seedance-2-0-260128",
// {"model": "dreamina-seedance-2-0-mini-260615", // décommentez cette ligne, commentez celle du dessus
"prompt": "a watercolor lighthouse at dawn, waves rolling in, camera pulling back",
"resolution": "720p", "duration": 5}"""))
.build();
String task = http.send(create, HttpResponse.BodyHandlers.ofString()).body();
System.out.println(task); // {"id":"vid_…","status":…} — completed → data[0].url
// 2) still queued / in_progress? Poll GET https://synthorai.io/v1/videos/{id} until the
// status turns completed, then download data[0].url (valid ~24h).FAQ
Lequel est le moins cher, Dreamina Seedance 2.0 ou Dreamina Seedance 2.0 Mini ?
Dreamina Seedance 2.0 Mini est moins cher sur par 1m tokens vidéo ($3.5 contre $7, avec un écart de 2.0×). D'autres lignes peuvent indiquer l'inverse — le tableau ci-dessus contient la fiche complète, et le coût réel dépend de votre combinaison.
Puis-je faire un test A/B de Dreamina Seedance 2.0 par rapport à Dreamina Seedance 2.0 Mini sans deux intégrations ?
Oui. Les deux sont servis via le même endpoint compatible OpenAI avec une seule clé API — le basculement est un changement de chaîne de modèle en une ligne, vous pouvez donc diriger une fraction du trafic vers chacun et comparer les factures directement.
Quelles durées de clip et résolutions prennent-ils en charge ?
Le tableau des spécifications ci-dessus dresse la liste des résolutions et des durées de clip publiées pour chaque modèle, et indique si une valeur est un ensemble fixe d'options ou une plage continue — les deux se ressemblent mais ont un prix différent, car la facturation à la seconde se multiplie par la durée.