Seedance Integration Guide (Volcano Ark Compatible)
This page is for partners integrating Seedance against the Volcano Ark API.
Delivery mode: fully compatible with Volcano Ark — same paths, request bodies, and response bodies; only base_url and key are platform-issued.
1. Basics
| Item | Value |
|---|---|
| Base URL | https://www.ezmodel.cloud (also https://api.ezmodel.cloud) |
| Auth | Authorization: Bearer {platform API Key} |
| Content-Type | application/json |
| Video tasks | POST/GET /v3/contents/generations/tasks (also /api/v3/..., /ark/api/v3/...) |
| Asset library | POST/GET /v3/sd/assets (also /api/v3/sd/..., /ark/api/v3/sd/..., /v1/sd/...) |
The three prefixes are equivalent:
| Use | Recommended | Equivalents |
|---|---|---|
| Create / query video | /v3/contents/generations/tasks | /api/v3/contents/generations/tasks/ark/api/v3/contents/generations/tasks |
| Upload / query asset | /v3/sd/assets | /api/v3/sd/assets/ark/api/v3/sd/assets/v1/sd/assets |
2. Models
| Model | Description | Resolutions |
|---|---|---|
dreamina-seedance-2-0-260128 | Standard | 480p / 720p / 1080p / 4k |
dreamina-seedance-2-0-hc | Real-person / avatar (Base); supports asset:// | 480p / 720p / 1080p / 4k |
dreamina-seedance-2-0-fast-260128 | Fast | 480p / 720p |
dreamina-seedance-2-0-fast-hc | Fast real-person / avatar; supports asset:// | 480p / 720p |
dreamina-seedance-2-0-mini-260615 | Mini | 480p / 720p |
dreamina-seedance-2-0-mini-hc | Mini real-person / avatar; supports asset:// | 480p / 720p |
dreamina-seedance-2-5-hc | Seedance 2.5 real-person / avatar; supports asset:// | 480p / 720p |
Private virtual-avatar or real-person assets must use any
*-hcmodel.
3. Asset library
Virtual-avatar and real-person assets share one API. AssetType is the media type (Image / Video / Audio), not a person category.
EZModel uses the SD direct-upload flow; no Asset Group is required. GroupId may be null, and the historical /v1/asset-groups + /v1/assets flow is retired. Asset and video endpoints use the same Bearer API key.
Upload
POST /v3/sd/assets
Authorization: Bearer {API_KEY}
Content-Type: application/json
{
"URL": "https://example.com/avatar.jpg",
"Name": "avatar_front",
"AssetType": "Image"
}Success:
{
"success": true,
"data": {
"Id": "asset-20260726161146-sh9fq",
"base_resp": { "status_code": 0, "status_msg": "success" }
}
}Query
GET /v3/sd/assets/{asset_id}
Authorization: Bearer {API_KEY}Assets are isolated by account. Another account's Key querying the same id gets HTTP 404 (asset not found). Referencing another account's asset:// in generation is rejected before upstream and is not billed.
4. Create video
ratio supports adaptive, 16:9, 9:16, 1:1, and other model-supported values. For image-to-video, use "ratio": "adaptive" to follow the reference image's aspect ratio. On the OpenAI-compatible /v1/video/generations endpoint, send the same value as metadata.ratio.
POST /v3/contents/generations/tasksText-to-video:
{
"model": "dreamina-seedance-2-0-260128",
"content": [
{"type": "text", "text": "A cinematic shot of a glass perfume bottle on a marble table"}
],
"duration": 4,
"resolution": "720p",
"ratio": "16:9"
}With asset (hc):
{
"model": "dreamina-seedance-2-0-hc",
"content": [
{"type": "text", "text": "The man in a black suit looks confidently at the camera"},
{"type": "image_url", "image_url": {"url": "asset://asset-20260726161146-sh9fq"}}
],
"duration": 5,
"resolution": "480p",
"ratio": "9:16"
}For singing or lip sync, add the HC identity image as reference_image and the audio as reference_audio. Use first_frame / last_frame roles for frame control and reference_video to create a modified version of an existing video. Optional create fields include return_last_frame, execution_expires_after, and callback_url; when upstream supplies it, the query response exposes a top-level last_frame_url.
Submit response: {"id":"mvt-...","status":"queued"}.
5. Query status
GET /v3/contents/generations/tasks/{task_id}On success, content.video_url is a platform CDN direct link (no auth). Response shape matches Ark; only the URL host differs. CDN transfer failure falls back to an authenticated proxy URL. Upstream origin URLs are never exposed.
Statuses: queued / processing / succeeded / failed.
6. Acceptance checklist
| # | Check | Expected |
|---|---|---|
| 1 | POST /v3/sd/assets with a public image | 200, data.Id |
| 2 | GET /v3/sd/assets/{id} with same Key | 200, Status=Active |
| 3 | Same {id} with another account Key | 404 |
| 4 | POST /v3/contents/generations/tasks with hc + asset:// | 200, queued |
| 5 | HC + reference_image + reference_audio | Task accepted for singing/lip-sync workflow |
| 6 | first_frame + last_frame | Both roles are accepted and forwarded |
| 7 | reference_video | A new task is created using the source video as edit reference |
| 8 | Create with callback_url | Field accepted; query the task after notification for the final result |
| 5 | Poll until done | succeeded, content.video_url reachable |
| 6 | Open video_url without auth | video/mp4 |
