/v1/asset.
This page explains how the library works and what’s required. For the exact
endpoints, parameters, and a try-it console, see
API Reference → Seedance Assets.
How the library is structured
- Asset Group — a container. For a real-human group, one group maps to one real person; for a virtual group, it’s a logical grouping (e.g. one character).
- Asset — a single file (image, video, or audio) inside a group. Only
assets that reach
Activestatus can be referenced in video generation.
asset://<asset_id>.
Two kinds of group
The upload and management operations are identical for both; they differ only in how the group is created.| Virtual (AIGC) | Real-human (LivenessFace) | |
|---|---|---|
| Use for | Fictional / AI characters, props, scenes | A real person’s likeness |
| Created by | A direct create call | A one-time face verification by that person |
| Why | No identity to protect | Portrait rights — consent is captured at the source |
Both libraries require Advanced Creation Rights; the capacity quota is
shared between them. The real-human library is available to invited accounts.
Asset file requirements
Assets are provided as a publicly accessible URL (no file upload, no base64). Limits:| Type | Formats | Constraints |
|---|---|---|
| Image | jpeg, png, webp, bmp, tiff, gif, heic/heif | aspect ratio (W/H) 0.4–2.5 · 300–6000 px per side · < 30 MB |
| Video | mp4, mov | 480p/720p/1080p · 2–15 s · ratio 0.4–2.5 · 300–6000 px · total pixels 409,600–2,086,876 · 24–60 fps · ≤ 50 MB |
| Audio | wav, mp3 | 2–15 s · ≤ 15 MB |
- Full-body reference: vertical, full-body frontal shot of the person.
- Facial close-up: vertical, neutral expression, framed above the shoulders, face filling roughly two-thirds of the frame.
Asset lifecycle (upload is asynchronous)
Uploading an asset returns immediately with anasset_id; the file is then
preprocessed in the background. Poll the asset until its Status settles:
- Processing — still preprocessing; keep polling.
- Active — ready; use it in video generation.
- Failed — preprocessing rejected it; inspect
Error(e.g. format/size, a content-moderation block, or — for real-human groups —FaceMismatch).
SLA on upload time is not guaranteed; video assets take longer than images.
The signed download
URL returned for an asset is temporary (~12 hours).Real-human verification flow
A real-person group is created by the person verifying themselves once. Your backend never handles their face data — it only orchestrates the flow:Start a session
Your backend asks OrcaRouter to start a verification session. You get back an
H5 link (a hosted face-check page) and a
session_id.The person verifies
You hand the H5 link to the end user. They open it on their own device — no
OrcaRouter login required — and complete the face check. They authorize once;
later, new looks for the same person can be added to the same group without
re-verifying.
The group is created
On success, the verification page redirects the end user’s browser back to an
OrcaRouter callback (handled automatically), and the new group is registered
for you. If you passed a
return_url, the user lands back on your page.Face consistency. When you upload an image into a real-human group, it’s
compared against the verified reference. A different person (or multiple faces
in one image) is rejected — the asset resolves to
Failed / FaceMismatch.
A group’s name and description can be set after creation via the update-group
operation.Quota
Your account has a maximum asset count (default 100, across all groups). Uploads past the cap are rejected with403.
Referencing an asset in video generation
Once an asset isActive, reference it by asset://<asset_id> in the
Seedance video request’s metadata.content[], and
point to it in the prompt by type + position ([Image 1], [Video 1],
[Audio 1]) — never by raw asset id:
Next
- API Reference → Seedance Assets — every endpoint, full parameters, and an interactive playground (this is where the request/response samples live).
- Seedance Video — the video-generation endpoint that consumes these assets.
