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 anasset://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
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
Advanced usage with multiple assets
- Multiple reference images: put several
image_urlitems incontent(0–9 images, each withrole: "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 samecontentarray — only images containing photorealistic faces must go throughasset://. - Reference video / audio: you can also add 0–3
video_urlitems (role: "reference_video") and 0–3audio_urlitems (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 asgroupIdwhen ingesting. The generation-side code is identical to this page.
Common errors
Related pages
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