Seedance_V3 Native (SC) Video Generation
Seedance_V3 Native (SC) (doubao-seedance-2-*-260xxx) provides Seedance 2.0 series video generation: the task API is compatible with the v3 native protocol (/v3/video/tasks), and it ships with its own asset library and face verification system (/sc/*).
Endpoints
- Create task (native-compatible payload):
POST $URL/v3/video/tasks - Query task:
GET $URL/v3/video/tasks/{task_id} - Unified entry (OpenAI Video style):
POST $URL/v1/videos, queryGET $URL/v1/videos/{task_id} - Asset library / face verification:
POST $URL/sc/?Action=<Action>&Version=2024-01-01, see below
Supported models
| Model | Positioning |
|---|---|
doubao-seedance-2-5-260628 | 2.5 flagship, best quality and consistency |
doubao-seedance-2-0-260128 | 2.0 standard |
doubao-seedance-2-0-fast-260128 | 2.0 fast |
doubao-seedance-2-0-mini-260615 | 2.0 lite |
Billing
Billed by the official token formula: tokens = (input seconds + output seconds) × output resolution pixels × fps / 1024, i.e. (is+s)*res/1000000 × tier price. Quota is pre-charged on submission and settled against the actual token usage when the task finishes (refund or top-up applied automatically).
| Model | With reference video (CNY / 1M tokens) | Without reference video (CNY / 1M tokens) |
|---|---|---|
doubao-seedance-2-5-260628 | 42 (1080p 46) | 70 (1080p 77) |
doubao-seedance-2-0-260128 | 28 (1080p 31, 4k 16) | 46 (1080p 51, 4k 26) |
doubao-seedance-2-0-fast-260128 | 16.5 | 27.75 |
doubao-seedance-2-0-mini-260615 | 5.6 | 9.2 |
Parameters (create task)
| Field | Type | Required | Description |
|---|---|---|---|
model | string | Yes | One of the models above |
content | array | No | Multimodal content array: {type:'text'|'image_url'|'video_url'|'audio_url'|'draft_task'}. Every image/video/audio item must carry role, one of: first_frame / last_frame / reference_image / reference_video / reference_audio. Missing roles are rejected by the upstream with InvalidParameter: role must be specified for image contents. first_frame/last_frame cannot be mixed with reference_* media in one task |
resolution | string | No | 480p/720p/1080p/4k, default 720p |
ratio | string | No | 16:9/9:16/1:1/4:3/3:4/21:9, default 16:9 |
duration | integer | No | Video duration in seconds, default 5 |
generate_audio | boolean | No | Generate audio, default true |
seed | integer | No | Random seed |
watermark | boolean | No | Add watermark |
camera_fixed | boolean | No | Fix the camera |
callback_url | string | No | Task completion callback |
Examples
Text to video
curl $URL/v3/video/tasks \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-5-260628",
"content": [
{ "type": "text", "text": "A cat wearing sunglasses walking down a neon street, slow push-in" }
],
"resolution": "720p",
"ratio": "16:9",
"duration": 5
}'Image to video (reference an asset)
curl $URL/v3/video/tasks \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-260128",
"content": [
{ "type": "text", "text": "Make the pattern glow, slow push-in" },
{ "type": "image_url", "image_url": { "url": "asset URL returned by the asset library" }, "role": "first_frame" }
],
"resolution": "720p",
"duration": 5
}'Pick
roleby intent: usefirst_framewhen the image drives the video as its first frame; usereference_imagefor subject/style reference without locking the first frame (up to 9 images).
Video reference to video (V2V continuation)
Pass an existing video as reference for continuation/evolution (up to 3 reference videos), with role: reference_video on the video item:
curl $URL/v3/video/tasks \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-260128",
"content": [
{ "type": "text", "text": "Continue the camera motion and subject movement from the reference video, move the scene to a seaside at dusk, keep the same color grading" },
{ "type": "video_url", "video_url": { "url": "https://example.com/ref.mp4" }, "role": "reference_video" }
],
"resolution": "720p",
"duration": 5
}'Notes: ①
reference_videocannot be combined withfirst_frame/last_frame; ② the reference video duration counts toward input tokens (theinput secondsin the billing formula), and tasks with a reference video are billed at the "with reference video" tier; ③ the video URL must be publicly reachable (re-hosting via the asset library is recommended).
Query task
curl $URL/v3/video/tasks/{task_id} \
-H "Authorization: Bearer $YOUR_API_KEY"State machine: queued → running → succeeded / failed / cancelled / expired.
| Field | Type | Description |
|---|---|---|
id | string | Platform task ID |
status | string | One of the states above |
content.video_url | string | Result video URL on success |
usage | object | Actual usage (completion_tokens/total_tokens); billing uses this |
upstream_usage | object | Raw usage (for reconciliation) |
error | object | code/message on failure |
Asset library (/sc)
RPC style — point your SDK base URL at $URL/sc; Bearer auth is the same as for tasks. Assets are strictly isolated per account: you can only access your own groups and assets, and listings return only your own resources.
| Action | Description |
|---|---|
CreateAssetGroup / GetAssetGroup / ListAssetGroups / UpdateAssetGroup / DeleteAssetGroup | Asset group management (GroupType=AIGC) |
CreateAsset / GetAsset / ListAssets / UpdateAsset / DeleteAsset | Asset management (currently AssetType=Image) |
CreateVisualValidateSession / GetVisualValidateResult | Face verification session (RPC, see below) |
Notes:
CreateAssetrequires your ownGroupId, and theURLmust be publicly reachable — it is downloaded and validated in real time, failing withInvalidParameter.DownloadFailedotherwise;- Image requirement: height between 300 and 6000 px, smaller images are rejected (
HeightTooSmall); - After upload the asset is re-hosted and returned as a reference URL (valid ~11.5 hours); call
GetAssetanytime to get a fresh URL; Filter.GroupTypeis required forListAssetGroups/ListAssets(AIGC).
# Create an asset group
curl "$URL/sc/?Action=CreateAssetGroup&Version=2024-01-01" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "Name": "my group", "GroupType": "AIGC" }'
# Upload an asset
curl "$URL/sc/?Action=CreateAsset&Version=2024-01-01" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "GroupId": "group-xxxx", "URL": "https://example.com/photo.jpg", "AssetType": "Image", "Name": "reference" }'
# Get asset (fresh reference URL)
curl "$URL/sc/?Action=GetAsset&Version=2024-01-01" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "Id": "asset-xxxx" }'Responses use the { "ResponseMetadata": {...}, "Result": {...} } envelope; errors appear in ResponseMetadata.Error (Code/Message).
Face verification (human likeness scenarios)
Before using a real person's likeness as reference, complete face verification once. On success you receive a dedicated LivenessFace asset group:
- Create session:
POST $URL/sc/api/seedance/face-verifications(optionalreturn_urlin body). It returnsverification_idandh5_url— store theverification_idand openh5_urlin a browser to complete verification; - Query result:
GET $URL/sc/api/seedance/face-verifications/{verification_id}. Whenstatus=verifiedthe response containsgroup_id(bound to your account, ready for asset uploads and task references). Being redirected back toreturn_urldoes NOT mean success — always confirm via the query API.
Sessions expire; create a new one when expired. A verification_id can only be queried by its owner.
FAQ
Q: How long does generation take?
Text-to-video usually takes 1–5 minutes; image-to-video and audio-enabled jobs take longer (up to ~15 minutes observed). Tasks time out at 20 minutes and are marked failed with a refund.
Q: Why does the final charge differ from the estimate?
Submission pre-charges an estimate based on resolution and duration; on completion the charge is settled against the actual token usage. For image-to-video, tokens are usually counted by output duration only, so the final charge is often lower than the estimate.
Q: Asset upload fails with DownloadFailed / HeightTooSmall?
The asset URL must be publicly reachable (it is fetched and validated in real time), and the image height must be between 300 and 6000 px.
