One REST endpoint
POST /api/v1/videos to create a task, GET /api/v1/videos/{id} to poll, GET /api/v1/models to list models.
Text, image & reference inputs
Seedance 2.5 accepts up to 30 images, 10 videos, and 10 audio files, 50 total; each reference video / audio must last 2–15s and images must stay within 4K.
Per-second billing, auto refund
Seedance 2.5 is 50 GP/sec and 2.5 Character is 60 GP/sec; 2.0 is 20 GP/sec and 2.0 Character is 30 GP/sec.
Idempotent retries + async lifecycle
Submit with an Idempotency-Key: retrying after timeouts / 5xx never double-creates or double-charges, and tasks are recoverable by key. Poll for the finished video URL.
Get started in three steps
- 1Create a Sora2U account and generate an API key in your dashboard.
- 2Call POST /api/v1/videos with Authorization: Bearer <key> to start a task (add an Idempotency-Key so retries never double-charge).
- 3Poll GET /api/v1/videos/{id} until status is completed, then fetch the video.
cURL
curl https://sora2u.com/api/v1/videos \
-H "Authorization: Bearer $SORA2U_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "Cinematic dolly shot of a fox walking through autumn woods, soft golden light",
"duration": 30,
"aspect_ratio": "9:16",
"reference_urls": ["https://your-cdn.com/fox.jpg"]
}'Node.js
// 1. Create a generation task
const res = await fetch("https://sora2u.com/api/v1/videos", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.SORA2U_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "seedance-2.5", // 50 GP/sec; seedance-2.5-character is 60 GP/sec
prompt: "Neon city street at night, rain, reflective puddles, slow pan",
duration: 30,
aspect_ratio: "9:16",
reference_urls: ["https://your-cdn.com/city.jpg"],
}),
});
const { task } = await res.json();
// 2. Poll the task until it is completed
// GET https://sora2u.com/api/v1/videos/${task.id} -> status: pending | processing | completed | failedFull request fields, reference-media upload, error codes, and the task state machine are in the developer API docs.
Seedance API pricing
Per-second billing: Seedance 2.5 is 50 GP/sec and 2.5 Character is 60 GP/sec; 2.0 is 20 GP/sec, 2.0 Character is 30 GP/sec, and 1.5 is 10 GP/sec. Failed jobs auto-refund.
Frequently asked questions
Is there a Seedance API?
Yes. Sora2U exposes POST /api/v1/videos for Seedance 2.5, 2.5 Character, 2.0, 2.0 Character, and 1.5. It uses API-key auth (Authorization: Bearer) and bills per second in GP.
How much does the Seedance API cost?
Billing is per second: Seedance 2.5 is 50 GP/sec, 2.5 Character is 60 GP/sec, 2.0 is 20 GP/sec, 2.0 Character is 30 GP/sec, and 1.5 is 10 GP/sec. Failed jobs are auto-refunded.
Is the Seedance API free?
New accounts get free trial credits to test the API; after that it is pay-as-you-go per second. The Business plan adds higher quota, API access, and a commercial license.
How do I get a Seedance API key?
Sign up, open the API keys section of your dashboard, generate a key, and send it as Authorization: Bearer <key>. The full reference (task creation, reference media, error codes, task state machine, and Node.js / Python samples) lives at /developer/api.
What can the Seedance API generate?
Text-to-video, image-to-video, and video/audio reference workflows. Seedance 2.5 accepts up to 30 images, 10 videos, and 10 audio files, 50 references total, with each reference video/audio lasting 2–15s and reference images staying within 4K. Use GET /api/v1/models for live capabilities and limits.
