Nodes/ComfyUI-BytePlus-ModelArk/BytePlus Asset Library
ComfyUI Node

BytePlus Asset Library

Find the asset:// URI you forgot to write down

By byteplus-sa·Created 8 days ago·Updated about 8 hours ago· 3
BytePlus Asset Library
    • asset_uris
    • assets_json
    ◄group_typeAIGC►
    ◄group_id►
    ◄statusActive►
    ◄name►
    ◄max_results20►
    ◄project_namedefault►

    Seedance 2.0 and 2.5 will happily generate video from a reference you never upload: a face you've already registered with BytePlus as a private asset. That's the whole point of the asset library - you register authorized media once (your own virtual portrait, or a real person who passed BytePlus's verification) and then call it by ID forever after. Which is great until you can't remember the ID. This node is the lookup.

    It's the least glamorous node in the pack and the one that saves the most time. Think of it as ls for your private asset library: point it at a group, filter by name, get back asset:// URIs you can wire straight into Seedance's reference sockets.

    How it works

    Under the hood the pack signs a ListAssets request with your IAM access key and secret (the asset library is the one corner of this pack that isn't covered by the plain ModelArk API key), sending a Filter built from the fields you set, plus a MaxResults page size. You get the matching assets back two ways: asset_uris, one asset://<ID> per line, and assets_json, the same thing as structured JSON with names and types.

    The node is declared as an output node, so it actually runs when you press Run even if nothing downstream is connected to it. That's handy - you can use it as a "what have I got?" panel and read the result in the UI, no other nodes required.

    The inputs that matter

    Most of the time you'll touch two.

    • name plus max_results = 1 is the filter-to-one-asset trick. Set name to something you know is unique in the group, drop max_results to 1, and asset_uris becomes a single URI you can connect to an asset_N input on BytePlus Seedance 2.5 Reference to Video (or copy the ID into first_frame_asset_id / last_frame_asset_id on the first-last-frame node).
    • group_type picks the table you're looking in: AIGC for virtual portraits you created yourself, LivenessFace for verified real people. group_id narrows to one group, and it's the one you want if a person has several assets and names are ambiguous. Use one group per person; that's how the create nodes are designed too.
    • status defaults to Active, which is the right default - a Processing asset isn't usable in Seedance yet. all is there when you're hunting for something that failed and want to see the wreckage.
    • max_results (1–100) and project_name are the boring ones. Leave project_name alone unless your ModelArk project isn't default.

    Installing it

    Standard for the pack - ComfyUI Manager, search BytePlus ModelArk, or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/byteplus-sa/ComfyUI-BytePlus-ModelArk
    pip install -r ComfyUI-BytePlus-ModelArk/requirements.txt
    

    Use the Python that runs ComfyUI, then restart. The dependency is the BytePlus Ark SDK (byteplus-python-sdk-v2[ark]); if it's missing or too old the pack loads nothing and prints the install command in the console rather than pip-installing itself.

    Then set up credentials in Settings → BytePlus: the ModelArk API key, its region (ap-southeast-1 or eu-west-1), and - for this node specifically - the asset library IAM AK/SK row. Those live in user/.env if you prefer hand-editing:

    BYTEPLUS_API_KEY=your-modelark-key
    BYTEPLUS_REGION=ap-southeast-1
    BYTEPLUS_ACCESS_KEY=your-iam-ak
    BYTEPLUS_SECRET_KEY=your-iam-sk
    

    You also need Dreamina Seedance Advanced Creation Rights on the account, otherwise there's no library to list.

    Where people get burned

    The IAM key is the sharp edge. Use a sub-user whose policy allows only the asset library - the pack's error handling distinguishes InvalidAccessKey from AccessDenied from throttling (FlowLimitExceeded), so the message usually tells you which of the three you hit. If you see an auth error and you're sure the key is right, check the region and the policy, not the ModelArk key.

    Second: real people. BytePlus verifies them through a QR-code flow in the ModelArk console and has no API for it, so this node will never show a LivenessFace asset that you haven't already verified by hand. Do that in the console first, then paste the group ID here.

    Third, and it catches everyone once: the URI only means anything to nodes that take asset references. asset://… pasted into a plain image input does nothing useful.

    CategoryBytePlus ModelArk

    Inputs (6)

    NameTypeDefaultDescription
    group_typeCOMBOAIGC2 options: AIGC, LivenessFace
    group_idSTRINGOnly assets in this group (optional).
    statusCOMBOActive4 options: all, Active, Processing, Failed
    nameSTRINGFilter by asset name (optional).
    max_resultsINT201–100—
    project_nameSTRINGdefault—

    Outputs (2)

    NameTypeDescription
    asset_urisSTRING—
    assets_jsonSTRING—