One continuous natural-history five-second shot in a dense Amazon rainforest canopy in humid late-morning light. A single adult scarlet macaw with accurate red, yellow, and blue plumage crouches on a dead branch, then pushes off, opens both wings, and flies through a wide gap between two trunks. The camera pans gently to follow as the bird becomes smaller among layered leaves. Maintain believable wingbeat rhythm, body weight, and claw release. No other birds, no people, no cuts, no lettering, no logos, no brands, no advertising, no watermark.
Seedance 1.0 Pro Text to Video API
bytedance/seedance/v1/pro/text-to-videoSeedance 1.0 Pro Text to Video transforms natural language prompts into high-fidelity cinematic video, with 720p and 1080p resolutions, 5-second and 10-second durations, and realistic physical motion simulation. It faithfully adheres to detailed scene prompts up to 10,000 Unicode characters while preserving consistent subject appearance, lighting, and environmental continuity across smooth camera movements.
Examples
REST API Spec
Quick Start
API structure examples, not actual generation results. Replace the example prompt and media URLs.
Step 1: Configure API authentication
Obtain an API key from the dashboard and include Authorization: Bearer <API_KEY> in every request header.
- Submission Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Auth Header
- Authorization: Bearer VIDGO_API_KEY
Step 2: Submit a generation task
POST /api/generate/submit. Pass model and optional callback_url at the root level, with generation parameters inside input.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "bytedance/seedance/v1/pro/text-to-video",
"input": {
"prompt": "One continuous cinematic five-second shot inside a Nordic night sleeper-train compartment. An adult Nordic woman with fair skin and a charcoal wool sweater sits in three-quarter profile at the window, her hands resting on her lap. Outside, a blizzard and dark conifer trunks stream past. Begin as a medium shot of her quiet face and the window, then slowly push in until the glass fills the frame. Warm amber cabin lamps and cold blue snowlight must stay physically consistent on the glass as layered reflections. Keep her anatomy, sweater knit, and seat geometry stable. No cuts, no other passengers, no readable text, no logos, no brands, no advertising, no watermark.",
"resolution": "720p",
"duration": 5
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Step 3: Poll for task completion
Poll status with task_id; continue while not_started or running, and stop on finished or failed. Read video URLs from data.files[].file_url on success, or data.error_message on failure.
Status Endpoint
GET https://api.vidgo.ai/api/generate/status/{task_id}Poll status using task_id; continue while not_started or running, stop when finished or failed. On success, read data.files[].file_url; on failure, read data.error_message.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "ZWY8D7HA9YAXUSPM",
"status": "running",
"created_time": "2026-09-22T19:06:20"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}Complete end-to-end script example
Expand to view a production-ready script with retry logic, error handling, and timeout safeguards.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "bytedance/seedance/v1/pro/text-to-video",
"input": {
"prompt": "One continuous cinematic five-second shot inside a Nordic night sleeper-train compartment. An adult Nordic woman with fair skin and a charcoal wool sweater sits in three-quarter profile at the window, her hands resting on her lap. Outside, a blizzard and dark conifer trunks stream past. Begin as a medium shot of her quiet face and the window, then slowly push in until the glass fills the frame. Warm amber cabin lamps and cold blue snowlight must stay physically consistent on the glass as layered reflections. Keep her anatomy, sweater knit, and seat geometry stable. No cuts, no other passengers, no readable text, no logos, no brands, no advertising, no watermark.",
"resolution": "720p",
"duration": 5
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneRequest Parameters (input object)
Pass model and optional callback_url at the root and these fields inside input. Only the documented fields and types are accepted; defaults apply only when omitted. Unknown fields, aspect ratio, audio, start/end frames and fixed lens fields are rejected, including null or empty values.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| prompt | string | Yes | — | Required string containing 1–10,000 Unicode characters after trimming surrounding whitespace. Non-string and blank prompts are rejected. |
| resolution | string | No | 720p | Only the strings 720p and 1080p are supported. Defaults to 720p only when omitted; aliases, different casing, surrounding whitespace, null and empty strings are rejected. |
| duration | integer | No | 5 | Only numeric integers 5 and 10 seconds are supported. Defaults to 5 only when omitted; strings, booleans, null and fractional values are rejected. Numeric 5.0 is equivalent to 5. |
Response Fields (query result)
Task details returned when polling GET /api/generate/status/{task_id}:
| Field | Type | Description |
|---|---|---|
| code | integer | Business response code, 200 on success. |
| data.task_id | string | Globally unique asynchronous task identifier. |
| data.status | string | Execution status: not_started, running, finished, or failed. |
| data.files | array | Generated video files upon completion, each with file_url and file_type. |
| data.error_message | string | null | Error description if task fails. |
Task Lifecycle
Clients should inspect the status field and stop polling when reaching finished or failed:
not_startedTask received and queued for execution.
runningGeneration is in progress.
finishedGeneration complete; retrieve video URL from data.files.
failedGeneration failed; inspect data.error_message; deducted credits are refunded per standard policy.
Polling & Error Handling
- Recommended Polling IntervalThe playground increases the polling interval from 2 seconds up to 10 seconds and stops on finished or failed.
- Network Fluctuations & RetriesA failed status query does not mean generation failed. Retry the status query for the same task without resubmitting.
- Asynchronous Webhook CallbackProvide callback_url at the root of the request payload to receive the completed task result automatically via POST.
Specifications
| Specification | Value | Description |
|---|---|---|
| Model ID | bytedance/seedance/v1/pro/text-to-video | Root-level model field. |
| Resolution | 720p / 1080p | Only the strings 720p and 1080p are supported. Defaults to 720p only when omitted; aliases, different casing, surrounding whitespace, null and empty strings are rejected. |
| Duration | 5 / 10s | Only numeric integers 5 and 10 seconds are supported. Defaults to 5 only when omitted; strings, booleans, null and fractional values are rejected. Numeric 5.0 is equivalent to 5. |
Seedance 1.0 Pro Text to Video
Seedance 1.0 Pro Text to Video is ByteDance's high-fidelity text-to-video generation model designed for commercial storyboarding, cinematic conceptualization, and creative video storytelling. Creators and developers can produce vivid, physically grounded scenes directly from natural language prompts, with flexible 720p and 1080p resolutions and 5- or 10-second clips.
Why Choose This?
Pure Text-Driven CreativityConstruct dynamic scenes, lifelike character actions, and cinematic environments directly from natural language prompts without reference assets.
Physically Grounded Motion SimulationFaithfully simulate real-world physics, fluid inertia, and natural lighting shifts to ensure coherent movements without morphing or temporal stutter.
Flexible Resolution and Duration TiersProduce 5-second quick cuts or 10-second narrative scenes in standard 720p or high-definition 1080p master quality.
10,000-Character Prompt CapacityTake advantage of an extensive 10,000 Unicode character limit to detail multi-beat direction, environmental depth, and camera motion.
Predictable Per-Generation PricingSimple per-generation credit rates starting at 21 credits ($0.105) for 720p at 5 seconds, with automatic credit refunds if generation fails.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | Required string containing 1–10,000 Unicode characters after trimming surrounding whitespace. Non-string and blank prompts are rejected. |
| resolution | Optional | Only the strings 720p and 1080p are supported. Defaults to 720p only when omitted; aliases, different casing, surrounding whitespace, null and empty strings are rejected. Default 720p1080p |
| duration | Optional | Only numeric integers 5 and 10 seconds are supported. Defaults to 5 only when omitted; strings, booleans, null and fractional values are rejected. Numeric 5.0 is equivalent to 5. Default 510 |
How to Use
Define Subject and Scene AtmosphereEstablish focal character appearance, setting details, and mood in the opening sentences to anchor the visual composition.
Outline Camera Motion and Action FlowDescribe subject actions chronologically and specify explicit camera directions such as smooth dolly pushes, tracking pans, or crane shots.
Select Resolution and Output DurationChoose between 5 seconds for rapid clips or 10 seconds for narrative sequences, alongside 720p standard or 1080p HD quality.
Review Credits and Submit TaskTrigger generation from the playground or dispatch an asynchronous POST request via the REST API to receive a unique task_id.
Poll Progress and Download VideoQuery task status with your task_id until finished, then retrieve the secure MP4 download link from the response files array.
Pricing
Per-generation pricing by resolution and duration, identical for text-to-video and image-to-video. 1 credit = $0.005.
| Usage | Rate | Details |
|---|---|---|
| 720p · 5 seconds | 21 credits / $0.105 | Per video generation |
| 720p · 10 seconds | 42 credits / $0.210 | Per video generation |
| 1080p · 5 seconds | 43 credits / $0.215 | Per video generation |
| 1080p · 10 seconds | 86 credits / $0.430 | Per video generation |
Best Use Cases
Commercial Storyboard PrototypingTranslate script lines into dynamic motion previews to validate pacing, camera angles, and visual impact before physical production.
Social Media and Digital ContentProduce eye-catching, high-resolution short-form video content rapidly for digital campaigns and social channels.
Film and Narrative Concept VisualizationTurn screenplay paragraphs into 5-to-10-second cinematic scenes to assist directors and animators with blocking and tone exploration.
Worldbuilding and Sci-Fi Concept ArtBreathe life into imaginative landscapes, futuristic vehicles, and fantastical phenomena in high-definition video.
Pro Tips
- Separate Subject Motion from Camera Movement: Describing character actions and camera trajectories in distinct clauses helps the model execute cinematic movements accurately.
- Leverage the 10,000-Character Capacity: Utilize the generous input ceiling to detail ambient lighting, weather conditions, textural nuances, and camera focal depth.
- Prototype in 720p Before Rendering 1080p: Validate movement dynamics and framing economically at 720p 5s (21 credits) before producing your final 1080p version.
- Use Specific Physical Action Verbs: Favor concrete dynamic descriptions such as 'strides steadily forward' or 'water ripples outward' over generic superlatives.
- Establish Consistent Lighting and Setting: Clearly specify atmospheric details like golden hour, overcast daylight, or neon nightscapes to enhance cinematic coherence.
Notes
- Text-Only Input Specification: This endpoint is strictly for text-to-video generation, accepting a prompt string up to 10,000 Unicode characters after trimming surrounding whitespace.
- Valid Resolution and Duration Parameters: Supported resolutions are 720p (default) and 1080p; supported durations are 5 seconds (default) and 10 seconds as integers.
- Asynchronous Task Lifecycle and Refund Guarantee: Each submission returns a task_id for polling or webhook callback delivery; failed tasks are automatically refunded in full.
Related Models
Seedance 1.0 Pro Text to Video API frequently asked questions
What is the Seedance 1.0 Pro Text to Video API?
Seedance 1.0 Pro Text to Video is a ByteDance model for text-to-video generation. It produces high-fidelity videos in 720p and 1080p resolutions directly from natural language prompts, supporting 5-second and 10-second durations with realistic physical dynamics and camera trajectory control. Built on ByteDance's advanced video generation architecture, it preserves lighting consistency and temporal coherence while strictly adhering to sequential action and spatial descriptions. You can call it programmatically or try it from the playground above.
Does Seedance 1.0 Pro Text to Video support 10-second videos?
Yes. The model provides both 5-second and 10-second duration settings (defaulting to 5 seconds). Choosing 10 seconds allows for richer narrative progression, multi-stage character movement, and smoother camera transitions within a single generation.
What resolutions does Seedance 1.0 Pro Text to Video support?
This endpoint supports 720p and 1080p output resolutions. Omitted resolution parameters default to 720p; select 1080p when generating high-definition assets for commercial displays or cinematic productions.
How long can text prompts be for Seedance 1.0 Pro Text to Video?
After trimming surrounding whitespace, prompts can range from 1 to 10,000 Unicode characters. This generous ceiling lets you provide comprehensive scene descriptions, lighting instructions, character actions, and multi-beat camera framing.
How is Seedance 1.0 Pro Text to Video priced?
Pricing is billed per generation based on resolution and duration (1 credit = $0.005). At 720p, 5 seconds costs 21 credits ($0.105) and 10 seconds costs 42 credits ($0.210). At 1080p, 5 seconds costs 43 credits ($0.215) and 10 seconds costs 86 credits ($0.430). Unsuccessful tasks are automatically refunded.
Can you control camera motion with prompts in Seedance 1.0 Pro Text to Video?
Yes. You can include standard cinematic camera terminology in your prompt (such as 'slow camera push in', 'tracking shot following the character', or 'aerial panoramic pan'), and the model will synchronize camera movement with the subject's action.
How do you maintain scene continuity during character actions in Seedance 1.0 Pro Text to Video?
Anchor the character appearance and surrounding setting clearly at the beginning of your prompt, then describe actions chronologically. Avoid conflicting camera directions or abrupt cuts within the same clip to maintain seamless temporal continuity.















