Seedance 2.5
Integrate
bytedance/seedance-2.5/draft/complete
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/bytedance/seedance-2.5/draft/complete?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"draft_id": "your-draft-id"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/bytedance/seedance-2.5/draft/complete?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"draft_id": "your-draft-id"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"draft_id": "your-draft-id",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bytedance/seedance-2.5/draft/complete", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "bytedance/seedance-2.5/draft/complete",
"input": {
"draft_id": "your-draft-id"
}
}
Call the Seedance 2.5 model (bytedance/seedance-2.5/draft/complete) through the Doitong API. Docs for agents: https://doitong.com/developers/models/bytedance/seedance-2.5/draft/complete.md
POST https://api.doitong.com/v1/run/bytedance/seedance-2.5/draft/complete?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"draft_id": "your-draft-id"
}
If the response status is "queued" or "running", poll GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 until it is "succeeded"; the files are in outputs[].url. POST https://api.doitong.com/v1/quote/bytedance/seedance-2.5/draft/complete with the same body returns the exact price before the run.
This request: ≈$9.15 9,150 API credits Run it on this page
Your new API key. It is shown only now and is already in the code and in the API key field below. Keep it secret: never put it in code that runs in a browser.
Made on Doitong
Public works made with Seedance 2.5 by the Doitong community. Reuse a prompt in one click.
Video
A close-up portrait of a striking cyberpunk woman with sleek dark hair partially wet and falling around her face. She’s wearing glossy, high-tech neon visor goggles with a vivid color gradient — bright yellow, orange, and pink reflecting glowing city lights. Her expression is confident and...
Video
Ultra-realistic scene featuring miniature construction workers in orange vests and hard hats, actively working on a giant [pizza]. The tiny workers are using small tools, cranes, and machines to [assemble]. The [pizza] is placed on a metal surface or kitchen countertop. Steam or particles rise...
Video
Two sandboarders racing down massive golden sand dunes, carving aggressively in wide S-curves, heading directly toward the camera in a low, dramatic angle. They are captured in mid-motion, kicking up thick trails of sand behind their boards. Both riders wear full protective sandboarding suits in...
Video
A high-fashion cinematic video scene in slow motion, set on a wide white desert with fine rippled sand under a deep blue sky. A tall Black male model and a woman walk together in full-body view, directly toward the camera. The male model wears a dramatic flowing red trench coat, matching tailored...
Video
A fashionable young woman with black hair, walking confidently down a modern city street. She is wearing stylish everyday fashion — a black turtleneck top, oversized gray blazer, and wide-leg black trousers with chunky black boots. Her outfit is monochrome, mostly black and gray, with minimalist...
Video
Scene: On a large metal grill surface, miniature construction workers in orange safety vests and hard hats are preparing a giant steak. The raw meat, marbled and richly textured, rests across the hot grill. Some workers are spreading seasoning using tiny wheelbarrows filled with salt and pepper,...
Video
Subject: Young woman with closed eyes Context: Surrounded by goldfish swimming in the air Action: Portraiture in a dreamy aesthetic Style: Ethereal, artistic, reminiscent of fine art photography Camera motion (optional): Composition (optional): Shallow depth of field Ambiance (optional): Soft...
Video
один непрерывный кинематографический план от кадра 1 к кадру 2 без падения стекол. Кристалл над белым креслом вначале неподвижно парит, внутри светится золотисто-белое ядро. По мере трансформации по граням распространяется сеть трещин, оболочка раскалывается на крупные стеклянные пластины,...
Video
Create a 6-second cinematic vertical science-fiction thriller video in 9:16 format. A 35-year-old male astronaut named Alex Rain lies unconscious on the metallic floor of a damaged spaceship emergency corridor. He has short dark hair, light stubble, tired blue-gray eyes, pale skin and an...
Video
photorealistic, live-action film, real actress, ARRI Alexa look, desaturated cold tones, soft natural lighting, subtle dust in air, volumetric haze, consistent city destruction young fragile woman, pale skin, long dark ash-blonde hair, slightly messy, dirty torn gray nightgown, barefoot, natural...
Video
Subject: Young man with a beard, large iridescent soap bubbles. Context: Outdoor park at sunset, blurred green foliage. Action: Man gently blows a large bubble from suds on his hand, bubbles float up in slow motion. Style: Cinematic, dreamlike, magical realism, ultra realistic. Camera motion:...
Video
A cute young woman with curly red hair and freckles, wearing a simple white t-shirt, sitting in a stylish, modern café. She is about to take a bite of a large juicy burger, holding it with both hands. The lighting is warm and cinematic, with soft ambient glows from hanging lights in the...
Video
Вертикальное видео 9:16, продолжительность 10 секунд. Кинематографичная реалистичная анимация, уютная кухня вечером, тёплое освещение. За небольшим столом сидят два красивых взрослых пушистых котика — влюблённая пара. Крупный рыжий кот с белой грудкой и густыми чёрными закрученными усами одет в...
Video
Промпт для видео: трансформация 1 → 2 без падения стекол, один непрерывный план Исходные кадры Фото 1: точный первый кадр — кристалл парит над белым креслом, внутри негромко светится золотисто-белое ядро. Фото 2: точный последний кадр — человекоподобное кристаллическое существо по форме...
Video
Создать трендовое вертикальное кинематографичное видео с реалистичным сохранением внешности обоих людей с приложенных фотографий: максимально точно передать черты лиц, причёски, комплекцию и узнаваемость каждого персонажа, без подмены лиц и искажения анатомии. Парень с первой фотографии — за...
Video
Видео в стиле Дисней. ([0.0-4.0S] SCENE 1: PROBLEM SHOT SIZE: WIDE CAMERA: DOLLY IN ПО ОСИ КУШЕТКИ, EYE LEVEL, КАМЕРА СО СТОРОНЫ НОГ КУШЕТКИ, ОСТАЁТСЯ НА ОДНОЙ СТОРОНЕ ЛИНИИ ДЕЙСТВИЯ ACTION: ЗОЛУШКА ПОЧТИ ПЛЕТЁТСЯ ЧЕРЕЗ КАБИНЕТ ИЗ ОБЛАСТИ ОТКРЫТОЙ ДВЕРИ К БЕЛОЙ КУШЕТКЕ, ПЛЕЧИ ОПУЩЕНЫ, ШАГИ...
Build a request
Controls are generated from the model schema. The code and the price update as you change them.
/run/bytedance/seedance-2.5/draft/complete?wait=20
quote → $9.15
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/bytedance/seedance-2.5/draft/complete?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"draft_id": "your-draft-id"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/bytedance/seedance-2.5/draft/complete?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"draft_id": "your-draft-id"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"draft_id": "your-draft-id",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bytedance/seedance-2.5/draft/complete", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "bytedance/seedance-2.5/draft/complete",
"input": {
"draft_id": "your-draft-id"
},
"wait_seconds": 20
}
}
}
Run this request
Your key stays in this browser: it is sent only to the Doitong API and saved (localStorage) only if you tick Remember. Get an API key
About Seedance 2.5
Takes a `draft_id` from an earlier Seedance 2.5 draft run and renders the final video. The id stays valid for seven days and only for the original caller. Output is fixed at 1080p, and the codec can be auto, H264 or H265. It returns the video and seed.
Parameters
draft_idrequired
resolutionoptional
codecoptional
Output
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "bytedance/seedance-2.5/draft/complete",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 9150,
"usd": "9.15",
"charged": 9150,
"refunded": 0
},
"input": {
"draft_id": "your-draft-id"
},
"output": {
"video": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
"content_type": "video/mp4",
"file_name": "0-output.mp4",
"file_size": 1843200
},
"seed": 42,
"draft_id": "string"
},
"outputs": [
{
"type": "video",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
"content_type": "video/mp4",
"file_size": 1843200,
"width": 1280,
"height": 720,
"duration": 5,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Fields of output
- video
- object {url, content_type, file_name, file_size}Video file produced by generation.
- seed
- integerSeed value applied during generation.
- draft_id
- string | nullDraft identifier for completion under the same account within seven days; the response contains null instead if draft mode is disabled.
More models: Video to Video
For AI agents: this page as Markdown is at https://doitong.com/developers/models/bytedance/seedance-2.5/draft/complete.md. All models and guides: https://doitong.com/developers/llms.txt