Dreamina Seedance 2.0 Fast is the speed-and-cost tier of ByteDance's Seedance 2.0 series on BytePlus ModelArk; BytePlus says it inherits the core functions and advantages of the flagship with faster generation, and the official tutorial recommends it when top-tier quality is not required and a balance of cost and generation speed matters most.
- Input
- text image
- Output
- video $5.6/M
Price in context
Where the price sits among 5 comparable models
The bar shows how this model’s price compares with every other model of the same kind on Synthorai. The cheapest and the most expensive are named at each end. These are base rates; batch, region and cache-write discounts are on the pricing page.
Specs & limits
Video
| Resolution | 480p / 720p A fixed set of options, not a range. |
|---|---|
| Clip length | 4-15 s A continuous range, not a fixed set. |
| Frame rate | 24 fps |
| Aspect ratios | 6 (incl. 16:9, 9:16, 1:1) |
| Video inputs | text-to-video · first/last-frame image-to-video |
| Native audio | Yes, generates sound |
| Format | .mp4 |
Model
| Modalities | text + image → video |
|---|
- Speed/cost tier of the Dreamina Seedance 2.0 series, officially recommended for a balance of cost and generation speed when top-tier quality is not required
- same capability set as the flagship (t2v, first/last-frame i2v, generate_audio, multimodal reference, video editing/extension) with output capped at 480p/720p
- 24 fps, 4-15 s, six aspect ratios, .mp4
- version date 260128 encoded in the model id
One prompt, measured through the gateway
Dreamina Seedance 2.0 Fast
Model returned 1280×720 Length 5s latency 137 s
One prompt, one request per model, no retries and no cherry-picking - the first result each model returned. Neither size nor duration was pinned: each model used its own default, because a request shaped to fit all of them would flatter none. Files here are re-encoded for the web, so judge composition and prompt adherence, not compression.
Use Dreamina Seedance 2.0 Fast in 30 seconds
Asynchronous job API: create a task and poll it, or hold the request open with 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-fast-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-fast-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-fast-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-fast-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-fast-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).About Dreamina Seedance 2.0 Fast
- It shares the flagship's capability set row for row: text-to-video, first-frame and first-and-last-frame image-to-video, multimodal reference from images, video, and audio, video editing, video extension, and optional synchronized audio through generate_audio, which is on by default.
- Output is capped at 480p or 720p, 24 fps, 4-15 seconds, in six aspect ratios, and that resolution ceiling is the one documented functional difference from the flagship, along with the absence of the priority queue parameter; there is no 1080p or 4K path here.
- Duration also accepts -1 to let the model choose its own length, generated audio is mono as it is across the series, and the watermark flag is off unless you set it.
- That profile fits ad variants, social clips, and iteration loops where turnaround beats resolution.
- The series' restriction on reference material containing real faces applies equally, and like the flagship it has no draft mode and no camera-lock control.
- On Synthorai it runs behind the same asynchronous /v1/videos job API as the rest of the video catalog, with create-and-poll or Prefer: wait semantics.
FAQ
Is the Dreamina Seedance 2.0 Fast API free to try?
Yes: new accounts get 10 trial calls and up to $1 in free credit, no card required. That's enough to try Dreamina Seedance 2.0 Fast against your real workload before adding a payment method.
What is Dreamina Seedance 2.0 Fast best at?
Shares the flagship's capability set; 480p/720p output with optional audio; balance of cost and generation speed. See the About section for the full picture from the vendor's own release notes.
How much does Dreamina Seedance 2.0 Fast cost?
Dreamina Seedance 2.0 Fast costs $5.6 per million video tokens on Synthorai (video tokens ≈ width × height × 24fps × seconds ÷ 1024). Only successful generations are billed: pay-as-you-go, no platform markup, no subscription.
How do I generate videos with the Dreamina Seedance 2.0 Fast API?
POST to /v1/videos on Synthorai with model="dreamina-seedance-2-0-fast-260128" to create an asynchronous job, then poll the task (or hold the request open with a Prefer: wait header) until the video URL is ready. No vendor SDK is needed.
How do I get access to Dreamina Seedance 2.0 Fast?
Point your existing OpenAI SDK at base_url="https://synthorai.io/v1", set model="dreamina-seedance-2-0-fast-260128", and you're done. One API key covers every model on the gateway.
Related models
Compare
Every value on this page is transcribed from the vendor's own documentation, linked above, and carries the date it was checked. Prices are compared across the catalogue; specification values that vendors define differently are shown with the difference stated rather than charted. Nothing here is measured by us, and nothing is scored.