Dreamina Seedance 2.0 vs Seedance 1.5 Pro
Welches und wann — kuratiertes Fazit, keine Benchmark-Tabelle
Das ältere seedance-1-5-pro-251215 ist das günstigere, $2.4 pro Million Videotokens gegenüber $7, und endet bei 1080p mit Clips von 4–12 s. dreamina-seedance-2-0-260128 kauft Spannweite: 480p bis 4K mit 10-Bit-Ausgabe in 4K und Clips von 4–15 s. Bildrate, nativer Ton, die sechs Seitenverhältnisse und Bild-zu-Video über erstes/letztes Bild sind gleich — nehmen Sie also das 1.5 pro für die Kosten bei 1080p und darunter.
Preise
| Dreamina Seedance 2.0 | Seedance 1.5 Pro | Δ | |
|---|---|---|---|
| Pro 1M Video-Token | $7 | $2.4 | 2.9× |
Preise aus dem Live-Katalog zum Zeitpunkt des Builds; jede Modellseite enthält die aktuelle Übersicht.
Wo sie stehen — Preis pro 1M Video-Tokens über alle 5 Videogenerierung-Modelle mit dieser Abrechnungseinheit (logarithmische Skala)
Fähigkeiten
| Dreamina Seedance 2.0 | Seedance 1.5 Pro | |
|---|---|---|
| Natives Audio | ja | ja |
Spezifikationen
| Dreamina Seedance 2.0 | Seedance 1.5 Pro | |
|---|---|---|
| Input-Modalitäten | Text Bild | Text Bild |
| Ausgabemodalitäten | Video | Video |
| Veröffentlicht | 2026-01 | 2025-12 |
| Auflösung | 480p – 4K (10-bit at 4K) (Bereich) | 480p / 720p / 1080p (feste Auswahl) |
| Cliplänge | 4–15 s (Bereich) | 4–12 s (Bereich) |
| Bildrate | 24 fps | 24 fps |
| Seitenverhältnisse | 6 (incl. 16:9, 9:16, 1:1) | 6 (incl. 16:9, 9:16, 1:1) |
| Eingabemodi |
|
|
| Format | .mp4 | .mp4 |
Die Spezifikationen sind aus der Dokumentation der jeweiligen Anbieter übernommen; eine Zeile, die ein Anbieter nicht veröffentlicht, wird weggelassen und nicht abgeleitet. Vollständige Quellen: Dreamina Seedance 2.0 · Seedance 1.5 Pro
Ein Prompt, beide Modelle — gemessen über das Gateway
Vom Modell zurückgegeben 1280×720 Dauer 5s Latenz 133 s
Vom Modell zurückgegeben 1280×720 Dauer 5s Latenz 49 s
Ein Prompt, ein Request pro Modell, keine Retries und kein Cherry-Picking — das erste Ergebnis, das jedes Modell zurückgegeben hat. Weder Größe noch Dauer wurden festgelegt: Jedes Modell verwendete seinen eigenen Standardwert, da ein auf alle zugeschnittener Request keinem gerecht werden würde. Die Dateien hier wurden für das Web neu kodiert, beurteilen Sie also Komposition und Prompt-Treue, nicht die Komprimierung.
Mit einer Zeile zwischen ihnen wechseln
Beide IDs befinden sich in jedem Tab unten — das hervorgehobene Zeilenpaar ist die einzige Änderung. Gleicher Endpunkt, gleicher Schlüssel, gleiche Request-Struktur.
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": "seedance-1-5-pro-251215", # diese Zeile einkommentieren, die darüberliegende auskommentieren
"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: "seedance-1-5-pro-251215", // diese Zeile einkommentieren, die darüberliegende auskommentieren
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": "seedance-1-5-pro-251215", # diese Zeile einkommentieren, die darüberliegende auskommentieren
"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": "seedance-1-5-pro-251215", // diese Zeile einkommentieren, die darüberliegende auskommentieren
"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": "seedance-1-5-pro-251215", // diese Zeile einkommentieren, die darüberliegende auskommentieren
"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
Welches ist günstiger, Dreamina Seedance 2.0 oder Seedance 1.5 Pro?
Seedance 1.5 Pro ist günstiger bei pro 1m video-token ($2.4 vs. $7, 2.9× Unterschied). Andere Zeilen können in die andere Richtung deuten — die obige Tabelle enthält alle Daten, und die tatsächlichen Kosten hängen von Ihrem Mix ab.
Kann ich Dreamina Seedance 2.0 gegen Seedance 1.5 Pro ohne zwei Integrationen A/B-testen?
Ja. Beide werden über denselben OpenAI-kompatiblen Endpunkt mit einem API-Schlüssel bereitgestellt — der Wechsel ist eine einzeilige Änderung des Modell-Strings, sodass Sie einen Bruchteil des Traffics an jedes Modell leiten und die Rechnungen direkt vergleichen können.
Welche Cliplängen und Auflösungen unterstützen sie?
Die obige Spezifikationstabelle listet die von jedem Modell veröffentlichten Auflösungen und Cliplängen auf und markiert, ob es sich bei einem Wert um eine feste Auswahl an Optionen oder einen kontinuierlichen Bereich handelt — beide sehen ähnlich aus und sind unterschiedlich bepreist, da sich die sekundenbasierte Abrechnung mit der Länge multipliziert.