Skip to content

Seedance 2.0 / 2.5 Video Generation

Use the OpenAI-compatible video task API to call Seedance 2.0 through Service Inference. The API is asynchronous: submit a task, receive a task_id, then poll the task until the video is ready.

Endpoints

OpenAI-compatible entry

OperationMethodPath
Upload assetPOST/v1/sd/assets
Query assetGET/v1/sd/assets/{asset_id}
Create video taskPOST/v1/video/generations
Query task statusGET/v1/video/generations/{task_id}
Download video contentGET/v1/videos/{task_id}/content

The download path is /v1/videos/{task_id}/content (note it is videos, not video/generations).

Volcano / Ark-compatible entry (recommended for Ark clients)

If you already integrate against the Volcano Ark API, use the paths below. Request and response bodies match Ark; only base_url and key are platform-specific. The three prefixes are equivalent:

OperationMethodEquivalent paths (pick any)
Create video taskPOST/api/v3/contents/generations/tasks
/v3/contents/generations/tasks
/ark/api/v3/contents/generations/tasks
Query task statusGET/api/v3/contents/generations/tasks/{task_id}
/v3/contents/generations/tasks/{task_id}
/ark/api/v3/contents/generations/tasks/{task_id}
Upload assetPOST/api/v3/sd/assets
/v3/sd/assets
/ark/api/v3/sd/assets
(also /v1/sd/assets)
Query assetGET/api/v3/sd/assets/{asset_id}
/v3/sd/assets/{asset_id}
/ark/api/v3/sd/assets/{asset_id}
(also /v1/sd/assets/{asset_id})

Path spelling

Some partner docs write /v3/contents/generations/tasks (dropping /api). This platform mounts both /v3 and /api/v3; they are equivalent. See Seedance Volcano / Ark Native Entry for full field docs.

Authentication:

http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Available Models

ModelDescriptionResolutions
dreamina-seedance-2-0-260128Standard Seedance 2.0480p, 720p, 1080p, 4k
dreamina-seedance-2-0-hcReal-person / avatar (Base); supports asset://480p, 720p, 1080p, 4k
dreamina-seedance-2-0-fast-260128Fast version480p, 720p
dreamina-seedance-2-0-fast-hcFast real-person / avatar; supports asset://480p, 720p
dreamina-seedance-2-0-mini-260615Mini version480p, 720p
dreamina-seedance-2-0-mini-hcMini real-person / avatar; supports asset://480p, 720p
dreamina-seedance-2-5-hcSeedance 2.5 real-person / avatar; supports asset://480p, 720p
doubao-seedance-2-0-260128Compatible alias480p, 720p, 1080p, 4k
doubao-seedance-2-0-fast-260128Fast compatible alias480p, 720p

If your deployment uses model mapping, you may call the public model name shown by the site; it will be forwarded to the mapped upstream Seedance model.

Use any *-hc model for real-person / identity-locked video

If your reference image contains a real person, or you want to reference an asset:// resource uploaded via the asset API section below, use any *-hc model, including dreamina-seedance-2-5-hc. Non-hc models trigger a privacy safety block (InputImageSensitiveContentDetected) on real-person images and cannot read asset:// resources (they return asset ... is not found).

Request Parameters

ParameterTypeRequiredDescription
modelstringYesModel name
promptstringYesVideo generation prompt
imagestringNoSingle public image URL or asset:// reference
imagesstring[]NoMultiple public image URLs or asset:// references
sizestringNoResolution: 480p, 720p, 1080p, or 4k (Fast/Mini: 480p/720p only); billing defaults to 720p
durationintegerNoVideo duration in seconds
secondsstringNoDuration as a string; overrides duration when present
metadata.resolutionstringNoUpstream resolution; takes priority over size
metadata.ratiostringNoAspect ratio. Supports adaptive, 16:9, 9:16, 1:1, and other model-supported values. For image-to-video, adaptive follows the reference image's aspect ratio
metadata.generate_audiobooleanNoWhether to generate audio
metadata.watermarkbooleanNoWhether to add a watermark
metadata.return_last_framebooleanNoReturn the last frame for continuation
metadata.execution_expires_afterintegerNoTask execution timeout in seconds
metadata.callback_urlstringNoServer-reachable completion callback URL
metadata.contentarrayNoUpstream content items for audio, video, or other references

The top-level prompt is converted to a text content item. image and images are converted to image_url reference content items.

metadata.content[] types and roles

typeURL fieldCommon rolePurpose
image_urlimage_url.urlreference_imageSubject, identity, composition, or style reference
image_urlimage_url.urlfirst_frameFix the first frame
image_urlimage_url.urllast_frameFix the last frame
video_urlvideo_url.urlreference_videoMotion, camera, or video-style reference
audio_urlaudio_url.urlreference_audioAudio reference; with a person image, supports speech, singing, or lip sync

Media URLs may be public HTTP(S) links. HC models can also use asset://<asset_id>. Order is meaningful, so describe each reference's purpose in the prompt.

Text-to-Video Example

bash
curl https://api.ezmodel.cloud/v1/video/generations \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-260128",
    "prompt": "A cinematic shot of a glass perfume bottle on a marble table, soft morning light, slow camera push in",
    "size": "720p",
    "duration": 4,
    "metadata": {
      "ratio": "16:9",
      "generate_audio": false,
      "watermark": false
    }
  }'

Response:

json
{
  "task_id": "mvt-512d4ffd9ce54256",
  "status": "pending"
}

Image-to-Video Example

bash
curl https://api.ezmodel.cloud/v1/video/generations \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-fast-260128",
    "prompt": "Make the product rotate slowly, keep the label sharp and readable",
    "image": "https://example.com/product.png",
    "size": "720p",
    "seconds": "4",
    "metadata": {
      "ratio": "1:1"
    }
  }'

Multiple Reference Assets

Use metadata.content when you need to pass audio or additional reference assets. The type, image_url, audio_url, and video_url content items are forwarded to the upstream request.

json
{
  "model": "dreamina-seedance-2-0-hc",
  "prompt": "Generate a relaxed lifestyle video matching the reference audio mood",
  "images": [
    "https://example.com/ref-1.jpg",
    "https://example.com/ref-2.jpg"
  ],
  "duration": 4,
  "metadata": {
    "resolution": "480p",
    "ratio": "9:16",
    "generate_audio": true,
    "content": [
      {
        "type": "audio_url",
        "audio_url": {
          "url": "https://example.com/ref.mp3"
        },
        "role": "reference_audio"
      }
    ]
  }
}

For a real-person or avatar singing/lip-sync workflow, upload the person image first, use its asset:// URL, select an HC model, and add a reference_audio item.

First Frame, Last Frame, and Continuation

json
{
  "model": "dreamina-seedance-2-0-hc",
  "prompt": "Move smoothly from the indoor opening shot to the night skyline",
  "duration": 4,
  "metadata": {
    "resolution": "720p",
    "ratio": "16:9",
    "return_last_frame": true,
    "execution_expires_after": 3600,
    "callback_url": "https://example.com/callbacks/seedance",
    "content": [
      {"type": "image_url", "image_url": {"url": "https://example.com/first.jpg"}, "role": "first_frame"},
      {"type": "image_url", "image_url": {"url": "https://example.com/last.jpg"}, "role": "last_frame"}
    ]
  }
}

return_last_frame is forwarded to the generation service. When the upstream returns a final frame, the completed task response includes a top-level last_frame_url; use that HTTPS URL as first_frame in a continuation request.

Reference Video and Video Modification

There is no separate video-edit endpoint. To modify motion, camera work, scene, or style, create a new task and pass the source video as reference_video:

json
{
  "model": "dreamina-seedance-2-0-hc",
  "prompt": "Keep the person and main motion; change the scene to a rainy night street with steadier camera work",
  "duration": 5,
  "metadata": {
    "resolution": "720p",
    "ratio": "16:9",
    "content": [
      {"type": "video_url", "video_url": {"url": "https://example.com/source.mp4"}, "role": "reference_video"}
    ]
  }
}

You may also upload the source with AssetType: "Video" and use its asset:// URL. Use an HC model for real-person or identity-locked video.

Assets (asset://) and Real-Person / Identity-Locked Video

Besides passing image URLs directly, Seedance can upload an image / video / audio as an upstream asset first, then reference it in a generation request via asset://<asset_id>. Asset references select the with_ref price tier and are the recommended input for real-person / avatar video (any *-hc model).

EZModel currently uses the SD direct-upload channel; no Asset Group is required:

Asset pathStatusModels
/v1/sd/assets and equivalent V3 pathsAvailabledreamina-seedance-*-hc
/v1/asset-groups + /v1/assetsRetired, not exposedHistorical Dreamina group flow
/v1/doubao-sd-1/assetsNot exposedDoubao-specific asset flow

For HC identity assets, call the upload endpoint below directly. GroupId may be null; clients do not need to create or return a Group.

1. Upload an asset

Endpoints (pick any):

  • POST /v1/sd/assets
  • POST /api/v3/sd/assets
  • POST /v3/sd/assets
  • POST /ark/api/v3/sd/assets
bash
curl https://api.ezmodel.cloud/v3/sd/assets \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "URL": "https://example.com/avatar_front.jpg",
    "Name": "avatar_front",
    "AssetType": "Image"
  }'
FieldTypeRequiredDescription
URLstringYesSource URL; must be a public HTTPS link the upstream can download directly (no cookies, no anti-hotlinking)
NamestringNoAsset name
AssetTypestringYesAsset type: Image / Video / Audio

Response (data.Id is the asset ID):

json
{
  "success": true,
  "data": {
    "Id": "asset-20260723164039-k5d5l",
    "base_resp": { "status_code": 0, "status_msg": "success" }
  }
}

2. Query an asset

Endpoints (pick any): GET /v1/sd/assets/{asset_id}, GET /api/v3/sd/assets/{asset_id}, GET /v3/sd/assets/{asset_id}, GET /ark/api/v3/sd/assets/{asset_id}.

Assets are isolated by account: you can only query assets uploaded by the same API Key owner. Accessing another account's asset returns 404 asset not found (no existence leak).

bash
curl https://api.ezmodel.cloud/v3/sd/assets/asset-20260723164039-k5d5l \
  -H "Authorization: Bearer $YOUR_API_KEY"
json
{
  "success": true,
  "data": {
    "Id": "asset-20260723164039-k5d5l",
    "Status": "Active",
    "AssetType": "Image",
    "Name": "avatar_front",
    "URL": "<upstream asset url>",
    "GroupId": null,
    "base_resp": { "status_code": 0, "status_msg": "success" }
  }
}

3. Generate video with an asset (hc model)

Put asset://<asset_id> into image / images and submit with any *-hc model:

bash
curl https://api.ezmodel.cloud/v1/video/generations \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-hc",
    "prompt": "The man in a black suit looks confidently at the camera and nods with a slight smile, soft business lighting, keep the identity consistent",
    "images": ["asset://asset-20260723164039-k5d5l"],
    "duration": 5,
    "size": "480p",
    "metadata": { "ratio": "9:16", "generate_audio": false, "watermark": false }
  }'

It returns a task_id like any other task; poll via Query Task Status and fetch via Download Video Content.

Common errors

  • asset ... is not found: non-hc models cannot read asset:// resources; use any *-hc model (-hc / -fast-hc / -mini-hc).
  • InputImageSensitiveContentDetected.PrivacyInformation: non-HC models block real-person images; use an HC model for real-person / avatar assets.
  • resource download failed: the asset URL cannot be downloaded by the upstream; use a public, reachable HTTPS link (for example an object-storage presigned URL).

Query Task Status

bash
curl https://api.ezmodel.cloud/v1/video/generations/mvt-512d4ffd9ce54256 \
  -H "Authorization: Bearer $YOUR_API_KEY"

Task states map to queued, processing, completed/success, and failed. On completion, read the video URL and usage.total_tokens:

json
{
  "task_id": "mvt-512d4ffd9ce54256",
  "status": "SUCCESS",
  "url": "https://.../seedance.mp4",
  "usage": {"completion_tokens": 40594, "total_tokens": 40594}
}

EZModel supports querying one task by task_id; it does not expose GET /v1/video/tasks task listing. Persist returned task IDs in your application.

Callbacks

metadata.callback_url is forwarded to the generation service. Use a public HTTPS endpoint, return 2xx quickly, and handle duplicate delivery idempotently. After receiving a callback, query GET /v1/video/generations/{task_id} once more and treat the task status, video URL, and usage.total_tokens as final.

On success, the video URL is usually a platform CDN direct link (no auth required; shareable and embeddable). If CDN transfer temporarily fails, the gateway falls back to the local proxy /v1/videos/{task_id}/content (auth required). Neither case exposes the upstream origin URL.

Download Video Content

After the task is completed, use the returned video URL directly (recommended; CDN links need no auth) or download through the content proxy:

bash
curl -L https://api.ezmodel.cloud/v1/videos/mvt-512d4ffd9ce54256/content \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  --output seedance.mp4

The response is usually video/mp4 and supports range downloads. The download path is /v1/videos/{task_id}/content (note it is videos, not video/generations).

Price Tier Selection

Seedance selects the price tier from the request payload:

ItemRule
Resolutionmetadata.resolution takes priority, then size; if neither is set, billing defaults to 720p
with_refAny valid HTTP(S) or asset:// image, video, or audio reference
no_refText-only request with no reference media
Fast / Mini modelsOnly 480p and 720p are supported; do not request 1080p / 4k
Base modelsSupport 480p / 720p / 1080p / 4k

HTTP(S) image, video, and audio URLs and asset:// references all select with_ref. Public URLs must be directly downloadable without cookies or anti-hotlinking headers. If the service returns resource download failed, use another URL or a reachable object-storage URL.

Billing

Seedance 2.0 is settled by the upstream usage.total_tokens, priced in USD per 1M tokens. The system precharges when the task is submitted, then refunds or supplements the difference after the task is completed.

ModelTierPrice
Base (-260128 / -hc)480p_no_ref, 720p_no_ref$7.00 / 1M tok
Base480p_with_ref, 720p_with_ref$4.30 / 1M tok
Base1080p_no_ref$7.70 / 1M tok
Base1080p_with_ref$4.70 / 1M tok
Base4k_no_ref$4.00 / 1M tok
Base4k_with_ref$2.40 / 1M tok
Fast (-fast-260128 / -fast-hc)480p_no_ref, 720p_no_ref$5.60 / 1M tok
Fast480p_with_ref, 720p_with_ref$3.30 / 1M tok
Mini (-mini-260615 / -mini-hc)480p_no_ref, 720p_no_ref$3.50 / 1M tok
Mini480p_with_ref, 720p_with_ref$2.10 / 1M tok
Seedance 2.5 HC480p_no_ref, 720p_no_ref$10.70 / 1M tok
Seedance 2.5 HC480p_with_ref, 720p_with_ref$6.40 / 1M tok

*-hc models use the same price tiers as their standard siblings (the with_ref tier is the common case since they are mainly used with asset:// resources).

Formula:

text
final USD = usage.total_tokens / 1,000,000 * tier price
internal quota = final USD * 500000 * group ratio

Billing logs contain two kinds of rows: the task precharge row and the completion adjustment row. Reconciliation should merge the precharge and the adjustment for the same task; the merged net amount is the final cost.

Example: a Base 480p text-to-video task returns total_tokens = 40594 at $7.00 / 1M tok:

text
40594 / 1,000,000 * 7.00 = $0.284158

Notes

  • Fast / Mini models are configured for 480p and 720p only; do not request 1080p / 4k.
  • Base models support 4k.
  • Real-person / avatar reference images, or asset:// references, must use any *-hc model; non-hc models block real-person images and cannot read asset:// resources.
  • HTTP(S) and asset:// image, video, or audio references select with_ref; text-only tasks select no_ref.
  • Asset upload itself is not billed; billing starts only when the asset is used in a generation task.
  • Assets are isolated by account; different API Keys (different users) cannot see each other's assets.
  • metadata.resolution takes priority over the top-level size.
  • Video generation is asynchronous; do not wait for the final video in the create request.
  • Final billing follows the completed task usage. Failed tasks refund the precharged quota.
  • For Volcano Ark-style integration, see Seedance Volcano / Ark Native Entry.

企业合作联系:service@ezmodel.cloud