ByteDance Seedance 2.0, direct on the Volcengine Ark official channel. Text / image / multimodal reference, billed on official token usage. Raw real-person material works (a moderation rejection triggers an automatic asset-library retry); to reuse a fixed person across tasks, register it in the asset library (account: "official") for an asset:// reference.
| Field | Required | Type | Description |
|---|---|---|---|
| Model | API name | Resolution | Billing (per second) |
| Seedance 2.0 Official | seedance-2.0-official | 480p / 720p / 1080p | $0.092 / $0.197 / $0.492 |
| Seedance 2.0 Fast Official | seedance-2.0-fast-official | 480p / 720p | $0.071 / $0.153 |
| Seedance 2.0 Mini Official | seedance-2.0-mini-official | 480p / 720p | $0.044 / $0.095 |
The table shows approximate per-second values (upstream bills on generation tokens; the charge follows the tokens actually produced). Duration 4-15s, charged only on success.
Aliases: seedance-2.0 / seedance-2.0-fast / seedance-2.0-max / seedance-2.0-max-fast all map to this official channel (the retired chenyu channel was migrated here — standard = seedance-2.0-official, fast = seedance-2.0-fast-official). Real-person always uses the asset:// flow below with account:"official".
/api/v1/video/generations# Text-to-video (model: seedance-2.0-official / -fast-official / -mini-official)
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast-official",
"prompt": "a hummingbird hovering near a bright flower, slow motion",
"resolution": "720p",
"aspect_ratio": "16:9",
"duration": 5
}'
# Real-person: register the face in the asset library first (see below), then
# reference it. Raw real faces also work — an upstream moderation rejection
# triggers an automatic asset-library retry; asset:// skips that and is reusable:
# "reference_image_urls": ["asset://asset-2026...-xxxx"]
# Image-to-video: "first_frame_url" (+ "last_frame_url"); web search: "web_search": trueReal faces passed as a plain reference may trip moderation — we then auto-register the material and retry transparently. For reusable people (and to skip that step), register the face in the asset library and pass the asset:// in reference_image_urls. The group MUST be created with account: "official" (same account/project as official generation) for the asset to resolve; each upload costs $0.01.
# 1) Create a group ON THE OFFICIAL account (account: "official")
curl -X POST https://api.apimodels.app/v1/assets/groups \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "my-people", "account": "official"}'
# → { "data": { "id": 1, "account": "official", ... } }
# 2) Register a face from a public URL. The call WAITS until the asset is confirmed
# usable (~3s), so the returned id is ready to use right away. Charged $0.01 ONLY
# on success — if the image can't be fetched or fails moderation you get HTTP 422
# and are NOT charged.
curl -X POST https://api.apimodels.app/v1/assets \
-H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"url": "https://example.com/face.jpg", "asset_type": "Image", "group_id": 1}'
# → { "data": { "id": "asset-2026...-xxxx", "asset_url": "asset://asset-2026...-xxxx", "status": "Active" } }
# (on failure: HTTP 422, not charged)
# 3) Use asset_url directly in generation (reference_image_urls) — no polling needed.
# Optional status re-check:
# curl -X POST https://api.apimodels.app/v1/assets/get -H "Authorization: Bearer YOUR_API_KEY" \
# -H "Content-Type: application/json" -d '{"id": "asset-2026...-xxxx"}'| Field | Required | Type | Description |
|---|---|---|---|
| Endpoint | Description | ||
| POST /v1/assets/groups | Create a group with account:"official" → official account/apimodel | ||
| POST /v1/assets | Register a face from a URL → asset:// ($0.01), inherits the group account | ||
| POST /v1/assets/get | Get one asset (poll until Active) | ||
| POST /v1/assets/delete | Delete an asset |
Try it in the Playground
Register the face in the asset library (account "official") to get an asset:// reference, then pass it in reference_image_urls. Raw real faces are rejected by moderation; asset:// passes.