Seedance
Seedance 2.0 text-to-video, image-to-video, and video continuation
Seedance 2.0 supports text-to-video, image-to-video, video continuation, and audio-driven video, with a standard model and a lower-latency fast variant.
All tasks are asynchronous: submit, poll the task status, then download the result. The full lifecycle is documented on the Video Generation page.
Model Lineup
seedance-2.0 — standard version, quality first.
seedance-2.0-fast — fast version, lower latency. Does not support 1080p.
Submit a Generation Task
Routes by the model field in the request body to the matching model.
Task creation is not idempotent, so failover retries are disabled for video routes.
/v1/videosCompatibility aliasPOST/v1/video/generationsRequest
schemaJSON body.
modelstringRequiredSeedance model ID.
seedance-2.0seedance-2.0-fastpromptstringOptionalVideo description prompt. Required for pure text-to-video; optional when a visual input is provided via image, images, or metadata.content — at least one of prompt or a visual input is required.
imagestringOptionalImage-to-video reference, used as the first frame. Accepts URL or base64.
imagesarray<string>OptionalMultiple reference images. Accepts URLs or base64.
durationintegerOptionalVideo duration in seconds: an integer in 4–15, or -1 to let the model choose automatically. The top-level field takes precedence over metadata.duration.
secondsstringOptionalString form of duration (digits only).
metadataobjectOptional
Seedance-specific parameter container.
metadata.resolutionstringOptionalResolution. seedance-2.0-fast does not support 1080p.
480p720p1080pmetadata.ratiostringOptionalAspect ratio. adaptive follows the input image.
16:94:31:13:49:1621:9adaptivemetadata.durationintegerOptionalDuration in seconds: an integer in 4–15, or -1 for automatic. Overridden by the top-level duration field.
metadata.seedintegerOptionalRandom seed, -1 to 2^32 - 1. -1 means random.
metadata.watermarkbooleanOptionalWhether to add a watermark.
metadata.generate_audiobooleanOptionalWhether to generate synchronized audio.
metadata.service_tierstringOptionalService tier.
autodefaultprioritymetadata.execution_expires_afterintegerOptionalTask expiry in seconds, such as 172800.
metadata.return_last_framebooleanOptionalAlso return the last frame image.
metadata.callback_urlstringOptionalCallback URL invoked when the task finishes.
metadata.frames / metadata.camera_fixed / metadata.draftinteger | booleanOptionalAccepted for forward compatibility but not effective on the seedance-2.0 series; safe to omit.
metadata.content[]array<object>Optional
Multimodal inputs for advanced workflows: video continuation, audio-driven video, and multi-image references.
content[].typestringOptionalInput type.
textimage_urlvideo_urlaudio_urlcontent[].textstringOptionalPrompt text when type is text.
content[].image_url.urlstringOptionalImage URL when type is image_url.
content[].video_url.urlstringOptionalSource video URL when type is video_url (video continuation).
content[].audio_url.urlstringOptionalAudio URL when type is audio_url (audio-driven video).
content[].rolestringOptionalRole of an image item; required for each image in multi-image inputs.
first_framelast_framereference_imageResponse
schemaSubmission receipt. Fields are returned at the top level of the JSON body (no data wrapper).
idstringOptionalTask ID (task_xxx). Same value as task_id, kept for OpenAI SDK compatibility.
task_idstringOptionalTask ID used for polling and download.
objectstringOptionalAlways video.
modelstringOptionalModel name from the request.
statusstringOptionalInitial task status, usually QUEUED.
SUBMITTEDQUEUEDIN_PROGRESSSUCCESSFAILUREprogressintegerOptionalProgress 0–100, usually 0 right after submission.
created_atintegerOptionalTask creation time (Unix seconds).
The top-level duration field takes precedence over metadata.duration.
Download results via GET /v1/videos/{task_id}/content instead of copying result URLs into long-lived storage.
Both success and business failures return HTTP 200. A failed call carries an error object — { "error": { "message", "type", "code" }} — instead of the receipt fields; check for the error field to tell them apart.
Query and Download
Poll the task until it reaches SUCCESS or FAILURE (every 10–15 seconds, never below 5 seconds), then download the result. The download endpoint supports Range requests (HTTP 206) for resumable download and seek-while-playing.
/v1/videos/{task_id}Compatibility aliasGET/v1/video/generations/{task_id}/v1/videos/{task_id}/contentResponse
schemaCore fields below. The full task detail schema, status lifecycle, and polling guidance are documented on the Video Generation page.
statusstringOptionalTask status.
SUBMITTEDQUEUEDIN_PROGRESSSUCCESSFAILUREprogressstringOptionalProgress percentage string, such as "50%".
result_urlstringOptionalResult video download URL, present when status is SUCCESS. Has the form /v1/videos/{task_id}/content.
fail_reasonstringOptionalFailure reason, present when status is FAILURE.
