Skip to main content
This page focuses on the code path: turn a local image into an asset:// asset ID, then reference it to generate a character-consistent video — one script, end to end. For endpoint-by-endpoint documentation and the zero-code web UI see the Asset Library; for the full parameter table of the generation endpoint see the Video Generation API.

When you need asset references

When generating character-consistent videos, Seedance 2.0 does not accept reference images containing photorealistic human faces directly (anti-deepfake filtering). You must first ingest the portrait as a trusted asset, get an asset://xxx asset ID, and reference it in the generation request — keeping the character’s face and clothing consistent across episodes and shots. Find your case first:

Prerequisites

Two different keys — do not mix them up:
  • Asset Library KEY (created under Settings → Asset Library KEY on icover.ai, sk-...): for uploading / ingesting / querying assets; see Step 0 of the Asset Library page.
  • APIYI SeeDance2 token (created on api.apiyi.com, sk-..., with the SeeDance2 group enabled): for the video-generation endpoint.

The pipeline at a glance

Local image → 1) presign a direct-upload URL and PUT the file to get a public URL → 2) ingest the asset and get an asset Id → 3) poll until Active (about 13 seconds per image) → 4) reference asset://<Id> in the generation request, referring to it as “Image 1” in the prompt → 5) poll the task until succeeded → 6) download content.video_url (the signed link expires in 24 hours — save it immediately). If you already have a public image URL, skip step 1. Asset IDs are permanent — ingest once, reference forever.

Complete code

Refer to assets as “Image 1”, “Image 2” in the prompt (matching their order in the content array) — never write the raw asset ID in the prompt.

Advanced usage with multiple assets

  • Multiple reference images: put several image_url items in content (0–9 images, each with role: "reference_image") and refer to them as “Image 1”, “Image 2” in order. For one character, referencing a full-body frontal shot plus a neutral frontal face close-up together gives the best consistency.
  • Mixing sources: asset:// IDs, public URLs, and Base64 (data:image/png;base64,...) can be mixed in the same content array — only images containing photorealistic faces must go through asset://.
  • Reference video / audio: you can also add 0–3 video_url items (role: "reference_video") and 0–3 audio_url items (role: "reference_audio"); at least one image or one video is required, and audio must be sent together with an image or video.
  • Real-person assets: first run the fully automated real-person verification flow — the actor completes liveness verification and you get a dedicated real-person asset group GroupId; pass it as groupId when ingesting. The generation-side code is identical to this page.

Common errors

Seedance 2.0 Overview

Model selection, pricing, resolution tables, and FAQ

Video Generation API

Full parameter table, the four generation modes, and response format

Asset Library

All asset-library endpoints, the zero-code web UI, and real-person verification