Seedance 2.0 custom channel A — full multimodal video generation (text / image / multimodal reference) with HD 720p / 1080p output, plus an asset library (asset://) for reusable characters. Three tiers: 2.0 / Fast / Mini.
All requests carry the API key in the header:
Authorization: Bearer YOUR_API_KEY| Field | Required | Type | Description |
|---|---|---|---|
| Model | API name | Resolution | ~ $/s (720p / 1080p) |
| Seedance 2.0 | seedance2-a/seedance-2.0-a | 720p / 1080p | $0.147 / $0.365 |
| Seedance 2.0 Fast | seedance2-a/seedance-2.0-fast-a | 720p | $0.118 /s |
| Seedance 2.0 Mini | seedance2-a/seedance-2.0-mini | 720p | $0.073 /s |
Billed on actual generation tokens (the table shows approximate per-second values). Duration 4-15s.
/api/v1/video/generations# Text-to-video (model: seedance-2.0-a / -fast-a / -mini)
curl -X POST https://apimodels.app/api/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance2-a/seedance-2.0-a",
"prompt": "a hummingbird hovering near a bright flower, slow motion",
"resolution": "720p",
"aspect_ratio": "adaptive",
"duration": 5,
"generate_audio": true
}'
# Image-to-video (first frame) — pass first_frame_url (+ last_frame_url for first/last)
# "first_frame_url": "https://.../frame.jpg"
# Multimodal reference — up to 9 images + 3 videos + 3 audios:
# "reference_image_urls": ["https://.../a.jpg"],
# "reference_video_urls": ["https://.../v.mp4"],
# "reference_audio_urls": ["https://.../a.mp3"]
# Web search tool: "web_search": true
# Real-person / reusable characters — use an asset:// reference (see Asset Library):
# "reference_image_urls": ["asset://asset-2026...-xxxx"]
# Poll for the result
curl "https://apimodels.app/api/v1/video/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"| Field | Required | Type | Description |
|---|---|---|---|
| Mode | Input fields | ||
| Text-to-video | prompt | ||
| Image-to-video (first frame) | first_frame_url | ||
| First + last frame | first_frame_url + last_frame_url | ||
| Multimodal reference | reference_image_urls (≤9) + reference_video_urls (≤3) + reference_audio_urls (≤3) | ||
| Edit / extend video | reference_video_urls (source) + prompt | ||
| Audio / web search | generate_audio (默认 true) / web_search | ||
| Real person / reusable character | asset:// reference (see Asset Library) |
| Field | Required | Type | Description |
|---|---|---|---|
| Field | Type | Description | |
| model | string | seedance2-a/seedance-2.0-a / -fast-a / seedance-2.0-mini | |
| prompt | string | Prompt (optional when a visual input is provided) | |
| resolution | string | 720p | 1080p | |
| aspect_ratio | string | 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive | |
| duration | number | 4-15 seconds | |
| generate_audio | boolean | Generate native audio, default true | |
| first_frame_url / last_frame_url | string | First / last frame for image-to-video | |
| reference_image_urls / _video_urls / _audio_urls | string[] | Multimodal references — https:// or asset:// | |
| web_search | boolean | Web search tool |
Photorealistic faces are rejected by upstream moderation when passed as a direct reference image. To reuse a consistent character, upload the image to the asset library to get an asset:// reference, then use it as a reference in generation. Assets are isolated per token (API key); each successful upload costs $0.01.
# 1) Create a group (once)
curl -X POST https://apimodels.app/api/v1/assets/groups \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "my-characters"}'
# → { "data": { "id": 1, "group_name": "group-..." } }
# 2) Create an asset from a public image URL (charged $0.01)
curl -X POST https://apimodels.app/api/v1/assets \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"url": "https://example.com/portrait.png", "asset_type": "Image", "name": "host", "group_id": 1}'
# → { "data": { "id": "asset-2026...-xxxx", "asset_url": "asset://asset-2026...-xxxx" } }
# 3) Poll until Active
curl -X POST https://apimodels.app/api/v1/assets/get \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"id": "asset-2026...-xxxx"}'
# 4) Use asset_url in a generation (see above): "reference_image_urls": ["asset://asset-2026...-xxxx"]| Field | Required | Type | Description |
|---|---|---|---|
| Endpoint | Description | ||
| POST /v1/assets/groups | Create a group (returns a local group id) | ||
| GET /v1/assets/groups | List the current token groups | ||
| POST /v1/assets | Create an asset (url + asset_type + group_id) → asset:// | ||
| POST /v1/assets/get | Get one asset (poll until Active) | ||
| POST /v1/assets/list | List assets (paginated) | ||
| POST /v1/assets/update | Rename an asset | ||
| POST /v1/assets/delete | Delete an asset | ||
| POST /v1/assets/groups/delete | Delete a group and its assets |
Standalone video super-resolution — upscale a low-res video to 720p / 1080p / 2k / 4k. Billed by input duration; billed seconds = max(ceil(duration), 5). Per-second: 720p $0.03, 1080p $0.045, 2k $0.075, 4k $0.12.
# Standalone video super-resolution → 720p / 1080p / 2k / 4k
curl -X POST https://apimodels.app/api/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"model": "video-upscale", "videoUrl": "https://example.com/in.mp4", "targetResolution": "1080p"}'Try it in the Playground