Nodes/AceChatComfyUI/Ace Chat List Models (Ace Data Cloud)
ComfyUI Node

Ace Chat List Models (Ace Data Cloud)

Learn the Valid Model IDs Before You Pay for One

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Ace Chat List Models (Ace Data Cloud)
    • model_ids_json
    • count
    ◄filter_text►

    This is the cheap node in the pack, and it's the one you run first. Ace Chat List Models does a single read-only GET against Ace Data Cloud's /v1/models endpoint with your key and hands you back the model IDs your key can currently see. No chat generation, no Credits burned on inference. It exists because its sibling node takes a free-text model ID instead of a dropdown - deliberately, so new IDs aren't blocked by a stale package enum - which means nothing in the pack can tell you what a valid ID looks like. This node is that answer.

    Think of it as the discovery step most API-wrapper nodes skip (external-api-nodes.md): instead of guessing whether the vendor spells it gpt-4.1-mini or gpt-4.1_mini, you ask.

    What it does

    client.py builds the same Authorization: Bearer header the completion node uses, calls https://api.acedata.cloud/v1/models with a 10-second connect and 30-second read timeout, and parses the OpenAI-style {"data": [...]} envelope. It then does two things worth knowing about:

    • Sorts and de-duplicates the IDs, keeping only entries where data[].id is a non-empty string. So you get a clean alphabetical list, not the raw server order.
    • Applies your filter_text client-side, as a case-insensitive substring match against the whole ID (filter_text.casefold() in model.casefold()). It's not a prefix match and not a glob, so mini finds every ID containing "mini" anywhere, which is handy and occasionally noisy.

    Unlike the chat call, this one retries: up to three attempts on connection failure with 0.5s and 1s backoff. Non-200 responses map to the same messages the completion node uses - 401/403 for key or access problems, 429 for rate limiting.

    The input and outputs

    One input, filter_text, a plain string, default empty (list everything). That's it - no pagination knob, no "chat-compatible only" toggle.

    Two outputs:

    • model_ids_json - a JSON array of strings, exactly what you'd json.loads or eyeball, and wireable into any text consumer since it's a plain STRING.
    • count - an INT, the number of IDs after filtering. It tells you at a glance whether your filter is too broad (count = 108) or too narrow (count = 0, so check your spelling before blaming the API).

    It's an output node, so the panel prints "Ace chat model IDs: N" plus the reminder to copy an exact chat-compatible ID into Chat Completion - run it standalone and read the panel, or wire a PreviewAny in like the repo's example does. Run it, copy an exact ID into the model_id field of Ace Chat Completion, and check that model's price on the vendor's page before you queue anything. The pack's end-to-end notes record a live key seeing 108 IDs, so expect a long list.

    Install

    Same pack, same install, no models to download. ComfyUI-Manager → Custom Nodes → search "Ace Chat", confirm publisher acedatacloud, install, restart. The pack's e2e results list registry_published: false as of the day it was written, so if Manager finds nothing, clone it:

    cd /path/to/ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/AceChatComfyUI.git
    cd AceChatComfyUI
    python -m pip install -r requirements.txt
    

    requirements.txt is just requests>=2.31,<3, which ComfyUI already has. Then the key, in the environment of the ComfyUI process itself, and a restart:

    export ACEDATACLOUD_API_KEY='paste-your-key-here'
    python main.py
    

    ACEDATACLOUD_API_TOKEN is accepted too. Both nodes fail with "Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart" if it's missing, which is the honest version of the error - this is an env var, not a node field, on purpose. Keys in node widgets end up in shared workflows and screenshots.

    Things that trip people up

    It still needs a key. "Read-only" means no paid generation, not anonymous. No key, no list.

    It's an output node, so it re-runs every queue. Same as everything else in the pack - ComfyUI treats output nodes as always-execute and this class defines no IS_CHANGED (comfyui-node-plumbing.md). That's harmless here (a list request, no Credits) but it does mean a network round-trip on every prompt you queue while it's in the graph. Bypass or mute the node once you've copied your ID.

    The list is not a menu of chat models. The README warns that it can include IDs belonging to the vendor's other API surfaces, so a real ID is not automatically a chat-compatible one - pick wrong and Chat Completion comes back with a 404 or an access error rather than a sensible message. The list tells you what exists; the vendor's model page tells you what it's for and what it costs.

    Errors are broad but useful. 401/403 means the key is bad or lacks access. A JSON body that isn't the expected {"data": [...]} shape raises "unexpected model list" - that's the vendor changing the endpoint, worth an issue report rather than a workaround.

    CategoryAce Data Cloud/Chat

    Inputs (1)

    NameTypeDefaultDescription
    filter_textSTRING—

    Outputs (2)

    NameTypeDescription
    model_ids_jsonSTRING—
    countINT—