Seedance video uses an asynchronous task API. The create call returns a task object, not the finished video file.
Poll and download:
Send JSON. Put every field at the top level. Do not wrap these fields in metadata. images and videos accept only public http or https URLs. Base64 and data URIs are not supported. The links must stay available until the task finishes. Check GET /v1/models before calling. A duration or resolution outside the table fails the task.

Models

Request fields

image2video uses the first item in images as the first frame. frames2video uses the first item as the first frame and the second as the last frame. reference may include both images and videos. video_edit and video_extend put the source video in videos.

Text to video

Image to video

Reference image or video

First and last frame

Edit and extend

Only seedance-2.5 supports these modes. duration: -1 follows the source length:
Use video_extend to extend the clip.

Polling

Save id from the create response. Poll every 3–5 seconds until completed or failed:
Read url when the task completes. That URL is the video file. cost in the response is not the account charge; use the console usage record. On failure, read error.message. Download the bytes directly:

Prices

The charge is based on output seconds. Prices are CNY per second and follow the API key group, standard or stable. If the console model page and the bill disagree, the bill is the charge.