ByteDance Create Image Asset
Register your face so Seedance can reuse it — the asset node
- image
- asset_id
- group_id
This is the strangest node in the batch, and the one most likely to confuse you on first contact, so let's just say what it does: ByteDance Create Image Asset uploads a photo of a person and registers it with ByteDance's Seedance 2.0 personal-asset system, so that Seedance video generation can reference that specific person later. It's not a generation node. It produces no image. It outputs two strings - asset_id and group_id - and those IDs are the keys you'll feed into Seedance video prompts to say "and use this person's face."
The weirdest part is the onboarding. If you leave group_id empty - which you will the first time - the node kicks off a real-person authentication flow: it asks ByteDance to create a verification session, prints a link on the node, and you open that link in a browser and complete a live face verification (an H5 page, phone in hand, the works). Once that passes, ByteDance returns a group_id and the node registers your image asset under that group. The node polls the session until your browser verification completes, and it shows you progress text telling you exactly what to do. It feels like something from a banking app, because it basically is - ByteDance legally needs to verify the person whose likeness is being registered.
Mechanically it's a partner node like the rest: image uploaded to Comfy's proxy storage at api.comfy.org, then registered via ByteDance's asset API. Same credits-on-your-Comfy-account billing. There's also validation before anything runs: the input image must be 300–6000px on each side with an aspect ratio between 0.4:1 and 2.5:1, or the node refuses.
Inputs: image (the person to register - clean, well-lit, face visible) and group_id (reuse an existing Seedance group ID to skip the re-verification for the same person; leave empty for the H5 flow on a first registration).
Outputs: asset_id and group_id, both STRINGs. The tooltip in the source is unusually practical: "Please save the asset_id and group_id for reuse." This is not a suggestion - the whole workflow depends on you holding onto those IDs, because re-verifying your face every run would be absurd. Keep them in a text node, a global variable, or your notes.
Why does this exist? Seedance 2.0's personal-asset system is how ByteDance keeps a specific person consistent across videos without a LoRA - the asset is the character reference, and the face verification is the compliance gate for using a real person's likeness. The honest caveat: this node only makes sense if you're actually building the Seedance personal-asset pipeline - you register once, then use the IDs in the video workflow. If you're not doing character-consistent Seedance video, this node is pure setup with no payoff. If you are, it's the unavoidable first step, and it works - just budget a minute of face-verification awkwardness.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Image to register as a personal asset. | |
| group_id | STRING | Reuse an existing Seedance asset group ID to skip repeated human verification for the same person. Leave empty to run real-person authentication in the browser and create a new group. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| asset_id | STRING | — |
| group_id | STRING | — |