Seedance V1 Pro generates coherent multi-shot 1080p videos from text with smooth, stable motion and strong prompt fidelity. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
就緒
$0.6每次運行·~16 / $10
A rugged coastline at sunset, with large waves crashing against dramatic sea stacks. The sky is a canvas of fiery orange and deep purple, and seabirds soar gracefully above the tumultuous water.
A beautiful scene with smooth camera movement and natural motion
A young man sits motionless in a subway car, surrounded by blurred figures rushing past. [Close-up shot] on his unblinking eyes, highlighting his isolation amidst the chaos.
A close-up portrait of a model wearing a fantastical headpiece made of chocolate shards and dried flowers. [Rotating side-slide shot] begins from the side, gradually revealing the sculptural headpiece in full. In the final seconds, the camera centers on her poised and elegant face.
A man bundled in warm clothing enjoys cheese fondue at a snowy campsite, while a dog gazes longingly at the melting cheese. [Handheld close-up shot] opens on the bubbling pot, the gooey cheese stretching slowly under the heat. As he lifts a piece of bread drenched in cheese, the dog droops its ears, eyes filled with longing. [Camera pulls back slightly] to reveal a cozy camp scene: falling snow, surrounding trees, and a parked jeep in the background.
Inside a café, a close-up of an elderly man sitting in contemplation. His gaze is focused, expression shifting from thoughtful to a faint smile. He brushes back his hair, clasps his hands under his chin, then lowers them and leans forward. His eyes seem to search—and find—an answer. Finally, he squints slightly, revealing a contented, knowing smile.
[Tracking mid-shot] of a man in a suit swiftly cutting through a crowd, his expression sharp and focused. The camera follows tightly, building a sense of urgency and pressure. He halts before a train door, takes a deep breath, and looks upward.
A dreamy field of daisies sways gently in the breeze. A light mist lingers in the background, wrapping the scene in soft enchantment.
The camera enters a bright and cozy band rehearsal room—empty of people but full of instruments: guitars, amps, bass, drums. The scene is rich in realistic detail. [Slow pan] as the drumhead subtly quivers in the silence.
A lively street market in a historic European city, bustling with people Browse stalls filled with colorful fresh produce and artisan crafts. The aroma of freshly baked bread and roasted coffee fills the air.
A curious squirrel burying nuts in an autumn forest. Its bushy tail twitches as it digs, surrounded by a carpet of crisp, colorful leaves. The sunlight creates long shadows through the trees.
A majestic golden retriever, with sun-drenched fur and playful eyes, running through a field of vibrant green grass under a clear blue sky, golden hour lighting, cinematic photography.
An elderly gardener with weathered hands gently tending to vibrant rose bushes in a lush English garden. He smiles contentedly as he snips a dead bloom, the morning dew glistening on the petals.
Seedance v1 Pro T2V 1080p generates high-quality 1080p videos directly from a text prompt, optimized for smooth camera movement and natural motion. Describe the subject, action, scene, lighting, and camera intent, and the model produces a coherent clip suitable for premium story beats, marketing creatives, and cinematic concept previews. Enable camera_fixed when you want motion within the scene while keeping the framing steady.
| Duration | Price per video |
|---|---|
| 5s | $0.60 |
| 10s | $1.20 |
| 15s | $1.80 |
| 20s | $2.40 |
Write prompts like a director’s brief:
Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/bytedance/seedance-v1-pro-t2v-1080p with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Seedance v1 Pro T2v 1080p below.
set -euo pipefail
: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "16:9",
"duration": 5,
"camera_fixed": false,
"seed": -1
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/bytedance/seedance-v1-pro-t2v-1080p" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d "$REQUEST_BODY")
TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
-H "Authorization: Bearer $WAVESPEED_API_KEY")
RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
case "$STATUS" in
completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/bytedance/seedance-v1-pro-t2v-1080p";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');
async function requestJson(url, options = {}) {
const response = await fetch(url, options);
if (!response.ok) throw new Error(await response.text());
return response.json();
}
// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "16:9",
"duration": 5,
"camera_fixed": false,
"seed": -1
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
`https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;
// 2. Poll until the prediction finishes.
while (true) {
const resultBody = await requestJson(resultUrl, {
headers: { "Authorization": `Bearer ${apiKey}` },
});
const result = resultBody.data ?? resultBody;
if (result.status === "completed") {
console.log(result.outputs);
break;
}
if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
await new Promise(resolve => setTimeout(resolve, 2000));
}import json
import os
import time
from urllib.request import Request, urlopen
api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "16:9",
"duration": 5,
"camera_fixed": False,
"seed": -1
}
def request_json(url, data=None):
request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
with urlopen(request) as response:
return json.load(response)
# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/bytedance/seedance-v1-pro-t2v-1080p", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"
# 2. Poll until the prediction finishes.
while True:
result_body = request_json(result_url)
result = result_body.get("data", result_body)
status = result.get("status")
if status == "completed":
print(result.get("outputs", []))
break
if status in {"failed", "cancelled", "timeout"}:
raise RuntimeError(result)
if status not in {"created", "processing"}:
raise RuntimeError(f"Unexpected status: {status}")
time.sleep(2)Seedance v1 Pro T2v 1080p is a ByteDance model for video generation, exposed as a REST API on WaveSpeedAI. Seedance V1 Pro generates coherent multi-shot 1080p videos from text with smooth, stable motion and strong prompt fidelity. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.
POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/bytedance/bytedance-seedance-v1-pro-t2v-1080p.
Seedance v1 Pro T2v 1080p starts at $0.60 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.
Key inputs: `prompt`, `aspect_ratio`, `duration`, `seed`, `camera_fixed`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/bytedance/bytedance-seedance-v1-pro-t2v-1080p.
Median end-to-end generation time on WaveSpeedAI is around 158 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.
Commercial usage rights depend on the model's license, set by its provider (ByteDance). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.