Dreamina Seedance 2.0 est le modèle phare de génération vidéo de ByteDance sur BytePlus ModelArk, présenté dans le catalogue officiel comme le modèle vidéo principal, doté d'une synchronisation audiovisuelle haute fidélité, d'une qualité de mouvement élevée et d'une expression émotionnelle, et spécifiquement optimisé pour la publicité commerciale, la production cinématographique et télévisuelle, et le marketing sur les réseaux sociaux.
- Entrée
- texte image
- Sortie
- vidéo $7/M
Le prix en perspective
Position du prix parmi 5 modèles comparables
La barre situe le prix de ce modèle parmi tous les modèles du même type sur Synthorai. Le moins cher et le plus cher sont nommés à chaque extrémité. Ce sont des tarifs de base ; les remises liées au batch, à la région et aux écritures de cache figurent sur la page des tarifs.
Spécifications et limites
Vidéo
| Résolution | 480p - 4K (10 bits en 4K) Une plage continue, pas un ensemble fixe. |
|---|---|
| Durée du clip | 4-15 s Une plage continue, pas un ensemble fixe. |
| Fréquence d'images | 24 fps |
| Ratios d'aspect | 6 (dont 16:9, 9:16, 1:1) |
| Entrées vidéo | text-to-video · image-to-video à première image et à première/dernière image |
| Audio natif | Oui, génère le son |
| Format | .mp4 |
Modèle
| Modalités | texte + image → vidéo |
|---|
- Fleuron de la série Dreamina Seedance 2.0 de ByteDance, le modèle de génération vidéo principal du catalogue, avec une synchronisation audio-vidéo haute fidélité
- text-to-video et image-to-video à première image ou à première et dernière images
- sortie 480p-4k (encodage 10 bits en 4k), 24 fps, 4-15 s, six formats d'image, .mp4
- generate_audio pour une sortie sonore
- la série liste également la référence multimodale (image/vidéo/audio), l'édition vidéo et l'extension vidéo
- date de version 260128 encodée dans l'id du modèle
Un prompt, mesuré via la passerelle
Dreamina Seedance 2.0
Renvoyé par le modèle 1280×720 Durée 5s latence 133 s
Un prompt, une requête par modèle, sans nouvel essai ni tri des résultats : c'est le premier résultat renvoyé par chaque modèle. Ni la taille ni la durée n'ont été imposées. Chaque modèle a utilisé sa valeur par défaut, car une requête calibrée pour convenir à tous n'en mettrait aucun en valeur. Les fichiers sont réencodés pour le web : jugez la composition et le respect du prompt, pas la compression.
Utilisez Dreamina Seedance 2.0 en 30 secondes
API asynchrone à base de tâches : créez une tâche puis interrogez-la, ou maintenez la requête ouverte avec Prefer: wait. POST /v1/videos
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",
"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",
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",
"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",
"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",
"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).À propos de Dreamina Seedance 2.0
- Il génère des clips .mp4 de 4 à 15 secondes à 24 fps, dans des résolutions allant de 480p jusqu'à la 4K (encodage 10 bits), selon six formats d'image, à partir de prompts textuels, d'images de première image ou de première-et-dernière image, ou de références multimodales, avec du son synchronisé disponible via le commutateur generate_audio.
- Des trois paliers 2.0, lui seul atteint le 1080p et la 4K, et lui seul accepte une valeur priority pour le placement dans la file ; BytePlus recommande de son côté de l'utiliser lorsque la qualité de génération prime.
- La référence multimodale accepte jusqu'à neuf images, trois vidéos totalisant quinze secondes et trois clips audio, et l'édition ainsi que l'extension vidéo sont prises en charge, l'extension pouvant enchaîner jusqu'à trois segments.
- L'audio généré est en mono, et il est activé par défaut.
- Les éléments de référence contenant des visages réels sont limités à un ensemble documenté de sources conformes.
- Synthorai le sert via l'API de jobs asynchrone /v1/videos.
- Créez une tâche, puis interrogez-la (ou maintenez la requête ouverte avec Prefer: wait) jusqu'à ce que l'URL signée de la vidéo soit prête.
FAQ
Peut-on essayer l'API Dreamina Seedance 2.0 gratuitement ?
Oui : les nouveaux comptes reçoivent 10 appels d'essai et jusqu'à $1 de crédit gratuit, sans carte bancaire. De quoi essayer Dreamina Seedance 2.0 sur votre charge de travail réelle avant d'ajouter un moyen de paiement.
Quels sont les points forts de Dreamina Seedance 2.0 ?
Synchronisation audio-vidéo haute fidélité ; sortie de 480p à 4K, 4-15 secondes ; entrée texte, première image et première/dernière images. La section À propos en donne un aperçu complet, tiré des notes de version du fournisseur.
Combien coûte Dreamina Seedance 2.0 ?
Sur Synthorai, Dreamina Seedance 2.0 coûte $7 par million de tokens vidéo (tokens vidéo ≈ largeur × hauteur × 24fps × secondes ÷ 1024). Seules les générations réussies sont facturées : paiement à l'usage, sans majoration de plateforme, sans abonnement.
Comment générer des vidéos avec l'API Dreamina Seedance 2.0 ?
Envoyez une requête POST à /v1/videos sur Synthorai avec model="dreamina-seedance-2-0-260128" pour créer une tâche asynchrone, puis interrogez-la (ou maintenez la requête ouverte avec l'en-tête Prefer: wait) jusqu'à obtenir l'URL de la vidéo. Aucun SDK du fournisseur n'est nécessaire.
Comment obtenir l'accès à Dreamina Seedance 2.0 ?
Dans votre SDK OpenAI actuel, indiquez base_url="https://synthorai.io/v1" et model="dreamina-seedance-2-0-260128", et c'est tout. Une seule clé API donne accès à tous les modèles de la passerelle.
Modèles associés
Comparer
Chaque valeur de cette page est reprise de la documentation du fournisseur (lien ci-dessus) et porte la date de sa vérification. Les prix sont comparés à l'échelle du catalogue. Quand les fournisseurs ne définissent pas une spécification de la même façon, la différence est signalée et la valeur n'est pas mise en graphique. Nous ne mesurons rien ici et nous n'attribuons aucune note.