Skip to content

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, query GET $URL/v1/videos/{task_id}
  • Asset library / face verification: POST $URL/sc/?Action=<Action>&Version=2024-01-01, see below

Supported models ​

ModelPositioning
doubao-seedance-2-5-2606282.5 flagship, best quality and consistency
doubao-seedance-2-0-2601282.0 standard
doubao-seedance-2-0-fast-2601282.0 fast
doubao-seedance-2-0-mini-2606152.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).

ModelWith reference video (CNY / 1M tokens)Without reference video (CNY / 1M tokens)
doubao-seedance-2-5-26062842 (1080p 46)70 (1080p 77)
doubao-seedance-2-0-26012828 (1080p 31, 4k 16)46 (1080p 51, 4k 26)
doubao-seedance-2-0-fast-26012816.527.75
doubao-seedance-2-0-mini-2606155.69.2

Parameters (create task) ​

FieldTypeRequiredDescription
modelstringYesOne of the models above
contentarrayNoMultimodal 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
resolutionstringNo480p/720p/1080p/4k, default 720p
ratiostringNo16:9/9:16/1:1/4:3/3:4/21:9, default 16:9
durationintegerNoVideo duration in seconds, default 5
generate_audiobooleanNoGenerate audio, default true
seedintegerNoRandom seed
watermarkbooleanNoAdd watermark
camera_fixedbooleanNoFix the camera
callback_urlstringNoTask completion callback

Examples ​

Text to video ​

bash
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) ​

bash
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 role by intent: use first_frame when the image drives the video as its first frame; use reference_image for 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:

bash
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_video cannot be combined with first_frame/last_frame; ② the reference video duration counts toward input tokens (the input seconds in 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 ​

bash
curl $URL/v3/video/tasks/{task_id} \
  -H "Authorization: Bearer $YOUR_API_KEY"

State machine: queued → running → succeeded / failed / cancelled / expired.

FieldTypeDescription
idstringPlatform task ID
statusstringOne of the states above
content.video_urlstringResult video URL on success
usageobjectActual usage (completion_tokens/total_tokens); billing uses this
upstream_usageobjectRaw usage (for reconciliation)
errorobjectcode/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.

ActionDescription
CreateAssetGroup / GetAssetGroup / ListAssetGroups / UpdateAssetGroup / DeleteAssetGroupAsset group management (GroupType=AIGC)
CreateAsset / GetAsset / ListAssets / UpdateAsset / DeleteAssetAsset management (currently AssetType=Image)
CreateVisualValidateSession / GetVisualValidateResultFace verification session (RPC, see below)

Notes:

  • CreateAsset requires your own GroupId, and the URL must be publicly reachable — it is downloaded and validated in real time, failing with InvalidParameter.DownloadFailed otherwise;
  • 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 GetAsset anytime to get a fresh URL;
  • Filter.GroupType is required for ListAssetGroups / ListAssets (AIGC).
bash
# 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:

  1. Create session: POST $URL/sc/api/seedance/face-verifications (optional return_url in body). It returns verification_id and h5_url — store the verification_id and open h5_url in a browser to complete verification;
  2. Query result: GET $URL/sc/api/seedance/face-verifications/{verification_id}. When status=verified the response contains group_id (bound to your account, ready for asset uploads and task references). Being redirected back to return_url does 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.

© 2026 Euno AI. All rights reserved.