Dreamina Seedance 2.0 vs Dreamina Seedance 2.0 Fast
Qual usar e quando
Mesma família, mesmos clipes de 4-15 s a 24 fps com áudio nativo e seis proporções; o nível fast custa $5.6 por milhão de tokens de vídeo contra $7, 20% a menos, e limita a resolução a 480p/720p onde o modelo base vai de 480p a 4K com saída de 10 bits em 4K. O modelo base também aceita imagem-para-vídeo pelo primeiro quadro, além de primeiro/último. Escolha o nível fast para rascunhos e formatos sociais, o modelo base quando o quadro precisar passar de 720p.
Preços
| Dreamina Seedance 2.0 | Dreamina Seedance 2.0 Fast | Δ | |
|---|---|---|---|
| Por 1M tokens de vídeo | $7 | $5.6 | 1.3× |
Tarifas do catálogo em tempo real, lidas no momento do build; a página de cada modelo traz a tabela de preços atual.
Onde cada um fica: preço por 1M tokens de vídeo entre os 5 modelos de geração de vídeo com esta unidade de cobrança (escala logarítmica)
Capacidades
| Dreamina Seedance 2.0 | Dreamina Seedance 2.0 Fast | |
|---|---|---|
| Áudio nativo | sim | sim |
Especificações
| Dreamina Seedance 2.0 | Dreamina Seedance 2.0 Fast | |
|---|---|---|
| Modalidades de entrada | texto imagem | texto imagem |
| Modalidades de saída | vídeo | vídeo |
| Lançamento | 2026-01 | 2026-01 |
| Resolução | 480p - 4K (10-bit at 4K) (intervalo) | 480p / 720p (conjunto fixo) |
| Duração do clipe | 4-15 s (intervalo) | 4-15 s (intervalo) |
| Taxa de quadros | 24 fps | 24 fps |
| Proporções de tela | 6 (incl. 16:9, 9:16, 1:1) | 6 (incl. 16:9, 9:16, 1:1) |
| Modos de entrada |
|
|
| Formato | .mp4 | .mp4 |
As especificações são transcritas da documentação de cada provedor; quando um provedor não publica um dado, a linha é omitida, e não inferida. Fontes completas: Dreamina Seedance 2.0 · Dreamina Seedance 2.0 Fast
Um prompt, os dois modelos, medidos pelo gateway
Retornado pelo modelo 1280×720 Duração 5s latência 133 s
Retornado pelo modelo 1280×720 Duração 5s latência 137 s
Um prompt, uma requisição por modelo, sem novas tentativas e sem escolher o melhor resultado: é o primeiro que cada modelo retornou. Nem o tamanho nem a duração foram fixados; cada modelo usou seu próprio padrão, porque uma requisição ajustada para servir a todos não mostraria o melhor de nenhum. Os arquivos foram recodificados para a web, então avalie a composição e a aderência ao prompt, e não a compressão.
Troque de um para o outro mudando uma linha
Os dois ids estão em todas as abas abaixo; o par de linhas destacado é a única alteração. O endpoint, a chave e o formato da requisição são os mesmos.
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-fast-260128", # descomente esta linha, comente a linha acima
"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-fast-260128", // descomente esta linha, comente a linha acima
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-fast-260128", # descomente esta linha, comente a linha acima
"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-fast-260128", // descomente esta linha, comente a linha acima
"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-fast-260128", // descomente esta linha, comente a linha acima
"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).Perguntas frequentes
Qual é mais barato, Dreamina Seedance 2.0 ou Dreamina Seedance 2.0 Fast?
Dreamina Seedance 2.0 Fast sai mais barato na linha “Por 1M tokens de vídeo” ($5.6 contra $7, 1.3× de diferença). Outras linhas podem pender para o outro lado: a tabela acima mostra todos os preços, e o custo real depende do seu mix de uso.
Posso fazer um teste A/B de Dreamina Seedance 2.0 contra Dreamina Seedance 2.0 Fast sem duas integrações?
Sim. Os dois são servidos pelo mesmo endpoint compatível com OpenAI, com uma única chave de API. Para trocar, basta mudar uma linha, a string do modelo; assim você pode direcionar uma parte do tráfego para cada um e comparar as contas diretamente.
Quais durações de clipe e resoluções eles suportam?
A tabela de especificações acima traz as resoluções e durações de clipe publicadas de cada modelo e indica se um valor é um conjunto fixo de opções ou um intervalo contínuo. Os dois parecem iguais, mas pesam de forma diferente no preço, já que a cobrança por segundo é multiplicada pela duração.