ByteDance Seedance 2.0. Text / image / multimodal reference, billed on 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 these models (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": trueReference assets are cited POSITIONALLY in the prompt: the first entry of reference_image_urls is 图片1 / @image1, the second is 图片2, and so on; reference_video_urls follows the same pattern as 视频1 / @video1. The number follows the order of the array you send and has nothing to do with filenames — to make one image the hero, either put it first or refer to it by the position it actually occupies. Telling each asset what to supply and what NOT to supply beats sending more of them.
Real 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.