Skip to main content

Short answer

Two questions, two answers:
  1. No, it does not auto-upload. Reference images are NOT automatically pushed to the asset library when you call Seedance 2.0. You must separately upload through the asset library API to get an asset:// ID, then reference it in the video generation request.
  2. Yes, the deepfake filter triggers. Reference images with realistic human faces passed directly will be blocked by upstream content safety. Sending real-person photos for video generation will fail.
Choose the correct workflow based on your character type:
  • Virtual avatar (AI-generated realistic human, no real-world counterpart): use the “Virtual avatar ingest” path → get asset:// ID → reference it
  • Real human face (celebrity, model, end-user photo): complete liveness scan first → ingest with the person-specific groupId → get asset:// ID → reference it
  • Output from Seedance in the last 30 days: can be used as a reference for re-creation (the platform-allowed path)

Detailed explanation

Why can’t I pass face images directly?

Seedance 2.0 cannot accept reference images with realistic human faces directly (deepfake filter). This is an upstream content-safety restriction, not an apiyi policy.

The correct workflow

1

Determine the asset type

Identify which category your image falls into:
  • Anime / stylized characters: no realistic face, no ingest required — pass a public URL or base64 directly
  • Virtual avatars (AI-generated realistic humans): go through “Virtual avatar ingest” — fully automatic, no review
  • Real human faces (celebrity, model, end-user): liveness scan is required first
2

Upload to the asset library to get an asset:// ID

3

Reference the asset ID in the video generation request

In the Seedance 2.0 request’s content, put asset://<Id> into image_url, and use “image 1” in the prompt to refer to the character. See Seedance 2.0 Video Generation API.
Two keys — don’t mix them up:
  • Asset library KEY (created at icover.ai): only for upload / ingest / list / delete
  • APIYI SeeDance2 token (created at api.apiyi.com, must have the SeeDance2 group enabled): only for the video generation endpoint
Details in Asset library.

Real-person asset special flow

Real-person photos cannot bypass the deepfake filter by “just uploading to the library” — the subject themselves must complete a liveness scan (log into their Volcano account and pass facial recognition). This locks down portrait rights at the source; no proxy is allowed.
1

Generate the liveness link

Have the subject scan the QR code / open the link on their phone and complete the liveness check via their Volcano account
2

Query the liveness result

Get the subject-specific real-person asset group groupId
3

Ingest with the groupId

Upload the asset with that group’s groupId. After the face-consistency check passes, you’ll receive the asset:// ID. The same subject reuses the same group for different looks — no re-verification needed
Real person ≠ AI-generated realistic human. AI-generated realistic-looking humans that have no real-world counterpart (e.g., generated by Nano Banana) are “virtual avatars” — go through “Virtual avatar ingest” directly, no authorization step. Only photos of real people count as “real human faces” — uploading such a photo is not equivalent to authorization; the subject must complete the liveness scan.

FAQ

No. asset:// asset IDs are permanent — ingest once, reference forever. However, the content.video_url returned after a successful generation is a 24-hour signed URL — download and re-host immediately after the task succeeds.
Yes. You can upload multiple images into the same asset group (side views, multi-face, blurry may fail — clear front views recommended). An asset:// ID is asset-group level, not per-image — all images in the same group share the same ID.
No. Virtual avatar ingest, real-person verification, and other private asset library capabilities are included with the Seedance 2.0 API at no extra annual fee.
Upstream content-safety filter blocks it. A 400 doesn’t charge your balance, but the request is rejected — finish the asset library ingest first, then reference the asset:// ID.