Seedance Official Relay Video API
Resolution, duration, ratio, reference media, virtual portrait library, drafts, last frame, web search, task cancellation and video edit/extension rules for Seedance 2.0 Mini, 2.0, 2.0 Fast and 2.5.
This page specifies the Seedance Official Relay video models. They share the POST /v1/videos create and GET /v1/videos/{id} polling flow with the other video models; authentication, media upload, polling states, downloads and error handling are covered in the Complete Video API Standard. This page lists only the fields and rules specific to this group.
Updated 2026-10-13. These models relay the official Volcengine Seedance API and are a different model group from Seedance Official Edition and SD Cloud Edition; parameters and capabilities do not carry over. These models do not support
callback_url: a request with a non-emptycallback_urlreturns 400 and creates no task and no charge (an empty string is treated as not set); pollGET /v1/videos/{id}for results.
Models
The table lists the model IDs of this group. They are visible only to API keys with the corresponding group enabled; otherwise GET /v1/models does not return them.
| Model | Model ID | Resolution | Duration | Default duration | Image / video / audio limits |
|---|---|---|---|---|---|
| Seedance 2.0 Mini (multi-resolution) | doubao-seedance-2.0-mini | 480P / 720P | -1 or 4–15s | 5s | 9 / 3 / 3 |
| Seedance 2.0 (multi-resolution) | doubao-seedance-2.0 | 480P / 720P / 1080P / 4K | -1 or 4–15s | 5s | 9 / 3 / 3 |
| Seedance 2.0 Fast (multi-resolution) | doubao-seedance-2.0-fast | 480P / 720P | -1 or 4–15s | 5s | 9 / 3 / 3 |
| Seedance 2.5 (multi-resolution) | doubao-seedance-2.5 | 480P / 720P / 1080P | -1 or 4–30s | -1 (automatic) | 30 / 10 / 10 |
The earlier model IDs doubao-seedance-2-0-mini-260615, doubao-seedance-2-0-260128, doubao-seedance-2-0-fast-260128 and doubao-seedance-2-5-260628 remain callable and are identical to the models of the same name above. They are no longer shown in the model marketplace; use the IDs in the table for new integrations.
Common rules
- Resolution: choose the output tier with
resolutionfrom the table above (case-insensitive, for example720por4k). The default is720p. - Duration: whole seconds in
duration(orseconds);-1lets the model choose the duration. - Aspect ratio:
ratio(oraspect_ratio) accepts16:9,4:3,1:1,3:4,9:16,21:9andadaptive. The default isadaptive(follow the input media).sizealso accepts a ratio or a resolution tier (for example16:9or1080p); a value that conflicts withratio,aspect_ratioorresolutionreturns 400. - Prompt: may be omitted when references or keyframes are supplied; a request with neither returns 400.
- Generated audio: set
generate_audio(boolean) tofalseto turn audio off; audio is on by default. - Optional fields:
watermark(boolean;trueadds an "AI 生成" (AI-generated) watermark in the bottom-right corner, off by default),priority(integer 0–9, queue priority) andreturn_last_frame(boolean, see Last frame). - Unsupported fields:
seed,camera_fixed,framesandservice_tierreturn 400;draftis supported only by Seedance 2.5, see Drafts and final videos.
Billing
These models are billed on the output tokens reported by the model platform after the task finishes, at the unit price tier matching "resolution × with or without a reference video". Nothing is pre-charged at submission: the usage log first shows a submission record "操作 …" (operation) with an amount of 0, and after the task finishes a "任务用量表达式结算" (usage settlement) record charges the actual usage.
When the model chooses the duration (duration is -1, or Seedance 2.5 is sent without a duration), the seconds in the submission record are an estimate based on the maximum duration and appear as "seconds: 30(预估)" (estimate); the settlement record is what you are actually charged. Failed or cancelled tasks are not charged.
Reference media
- Put reference images in
images, reference videos inmetadata.referenceVideosand reference audio inmetadata.referenceAudios. - The singular fields also work:
imageandinput_referenceas reference images,videoas a reference video andaudioas reference audio. The same media sent in several fields counts once. - Each item can be a URL string or
{ "url": "...", "role": "..." }. - Images accept public
https://URLs ordata:URIs; audio accepts publichttps://URLs ordata:URIs. - Reference videos accept only public
https://URLs, nothttp://,data:, Base64 or local files; for a local video, first obtain a URL through Local media upload. The link must be reachable without login and stay valid until the task finishes. - The 2.0 family (Mini, 2.0, Fast) cannot take reference audio alone; add a reference image or video.
- Keep total reference video and audio length within 15 seconds each for the 2.0 family and 30 seconds each for 2.5; longer media may be rejected by the model platform after submission.
- You can also use the Volcengine Ark
contentarray directly (text,image_url,video_urlandaudio_urlitems; an imagerolecan befirst_frame,last_frameorreference_image), either at the top level or insidemetadata.
{
"model": "doubao-seedance-2.0",
"prompt": "The person from the image dances to the reference audio, moving like the reference video",
"duration": 8,
"resolution": "1080p",
"ratio": "16:9",
"images": ["https://cdn.example.com/dancer.jpg"],
"metadata": {
"referenceVideos": ["https://cdn.example.com/dance-motion.mp4"],
"referenceAudios": ["https://cdn.example.com/music.mp3"]
}
}Virtual portrait library (asset mode)
By default, reference media is submitted directly to the generation API for review. You can instead place media in the virtual portrait library first and use it for generation once it passes library review:
- Set
"image_source_mode": "asset"for images and"video_source_mode": "asset"for reference videos (videos must still be publichttps://URLs). Both fields can go at the top level or inmetadataand are independent of each other. - Local images uploaded with
multipart/form-dataare placed in the virtual portrait library and submitted in asset mode automatically, with no extra setting; see File upload. - Library review only checks whether the media is usable; it is not real-name, face or liveness verification. There is currently no authorized enrollment flow for real people, and photos of real people may fail review in asset mode as well.
- There is currently no standalone media management (separate upload, media list or media IDs), so every generation request must include its media.
{
"model": "doubao-seedance-2.5",
"prompt": "The person in image 1 wears the necklace from image 2 and turns slowly in a bright studio",
"duration": 6,
"resolution": "720p",
"ratio": "9:16",
"image_source_mode": "asset",
"images": [
{ "url": "https://cdn.example.com/model.png", "role": "reference_image" },
{ "url": "https://cdn.example.com/necklace.png", "role": "reference_image" }
]
}Multiple reference images keep their submission order. State in the prompt what "image 1", "image 2" and so on each contain, so people and objects are not mixed up.
First and last frames
Put keyframes in metadata.firstFrame and metadata.lastFrame; they count toward the image limit.
lastFramerequiresfirstFrame.- Keyframes cannot be combined with reference images, videos or audio.
- With keyframes, Seedance 2.5 (multi-resolution) requires
ratioto beadaptive(or omitted).
{
"model": "doubao-seedance-2.0-fast",
"prompt": "Transition smoothly from an empty square at dawn to the same view at night with the lights on",
"duration": 5,
"resolution": "720p",
"metadata": {
"firstFrame": "https://cdn.example.com/start.jpg",
"lastFrame": "https://cdn.example.com/end.jpg"
}
}Seedance 2.5 video editing and extension
When Seedance 2.5 (multi-resolution) receives a reference video, omni_reference_task_type selects the task:
| Value | Meaning | Requirements |
|---|---|---|
auto (default) | the model decides from the media | the output length follows the input video (duration is treated as -1) |
reference | reference generation | — |
edit | video editing | a reference video, adaptive ratio and duration of -1 |
extend | video extension | a reference video and adaptive ratio |
output_format can be mp4 or mov. Both fields apply to 2.5 only; the 2.0 family returns 400.
{
"model": "doubao-seedance-2.5",
"prompt": "Turn the daytime scene into a rainy night and keep the person's movement",
"omni_reference_task_type": "edit",
"duration": -1,
"ratio": "adaptive",
"metadata": {
"referenceVideos": ["https://cdn.example.com/source.mp4"]
}
}Drafts and final videos (Seedance 2.5)
Seedance 2.5 (multi-resolution) can first generate a low-cost 480p draft and, once you are happy with it, generate a 1080p final video from that draft. Other models do not support drafts.
- Generate a draft: add
"draft": trueto the request; the output is fixed at 480p. A draft cannot also setreturn_last_frame. - Wait for the draft to succeed: poll
GET /v1/videos/{id}as usual and review the draft once the status iscompleted. - Generate the final video: put a single
draft_taskincontent, withidset to the draft task'sid(thetask_…returned when the draft was created). The final video is fixed at 1080p and inherits the prompt, media, duration, ratio, audio and other settings from the draft. Do not resendprompt, media,duration,ratio,generate_audio,omni_reference_task_typeorreturn_last_frame; doing so returns 400.
{
"model": "doubao-seedance-2.5",
"content": [
{ "type": "draft_task", "draft_task": { "id": "task_REPLACE_WITH_YOUR_DRAFT_TASK_ID" } }
],
"watermark": false
}- Only successful draft tasks created by your own account can be used; generate the final video within 7 days of creating the draft.
- The draft and the final video are two separately billed tasks. The final video is billed at the 1080p tier, and if the draft used a reference video, the final video is likewise billed at the with-reference-video tier.
Last frame
Set "return_last_frame": true in the request. After the task succeeds you can fetch the last frame of the video as an image, for continuing the shot or as the first frame of the next clip:
curl https://api.88api.ai/v1/tasks/task_xxx/artifacts \
-H "Authorization: Bearer sk-your-api-key"In the returned artifacts, the item whose key is last_frame is the last-frame image; download it from its content_url (also with your API key). The last frame is not included in the GET /v1/videos/{id} response. The image format is whatever the download's Content-Type says; it is not guaranteed to be PNG.
Web search
The Seedance 2.0 family and 2.5 support web search through tools, which suits prompts that need real-time information:
{
"model": "doubao-seedance-2.0",
"prompt": "Based on today's weather in Shanghai, generate a street-view video of the Bund",
"duration": 5,
"resolution": "720p",
"tools": [{ "type": "web_search" }]
}toolssupports only{"type": "web_search"}.- The model decides from the prompt whether to actually search. Searches are billed per search only when they actually happen (see the pricing notes in the console for the unit price); there is no extra charge when no search is made.
Cancelling a task
A task that is still queued and has not started generating can be cancelled:
curl -X DELETE https://api.88api.ai/v1/videos/task_xxx \
-H "Authorization: Bearer sk-your-api-key"- A successful cancellation returns
{"id": "task_xxx", "object": "video", "status": "cancelled", "cancelled": true}. The task then shows as failed (reason "任务已被用户取消", cancelled by the user) and is not charged. - A task that has started preparing or generating, or has already finished, cannot be cancelled and returns 409
task_not_cancellable; keep querying the task result instead. DELETE /v1/video/generations/{id}has the same effect.
Official task ID
Once Volcengine Ark accepts the task, GET /v1/videos/{id} returns official_task_id (for example cgt-20261012120000-abcde), and the console task log also shows the official task ID. When you need a generation issue checked, provide both the task id and the official task ID. The field is not returned while the task is still queued and has not been accepted.
File upload
You can upload local images directly with multipart/form-data, including several at once: repeat the same field name (for example image), and the files map to "image 1", "image 2" and so on in submission order. Uploaded images are placed in the virtual portrait library automatically and submitted in asset mode.
curl https://api.88api.ai/v1/videos \
-H "Authorization: Bearer sk-your-api-key" \
-F model=doubao-seedance-2.5 \
-F "prompt=The person in image 1 wears the necklace from image 2 and turns slowly" \
-F duration=6 \
-F resolution=720p \
-F "image=@./model.png" \
-F "image=@./necklace.png"- When you use local files, do not also send images in
images,image,input_referenceorcontent. - Each file can be up to 64 MB and the whole request up to 128 MB.
- Local videos and audio cannot be uploaded directly with
multipart/form-data: first obtain anhttps://URL through Local media upload, then put it in the reference video or reference audio field; reference audio can also be adata:Data URI.
SD Cloud Edition Video API
Resolution-based billing for SD2.0 and SD2.5, plus duration, ratio, reference media, keyframe and audio rules.
Google Video API
Resolution, duration, keyframe, reference media, video editing and extension rules for Veo 3.1, Veo 3.1 Fast, Gemini Omni Flash and Gemini Omni 1.1.