Nodes/QwenImageComfyUI/Qwen Image 3 (Ace Data Cloud)
ComfyUI Node

Qwen Image 3 (Ace Data Cloud)

Qwen Image 3 in ComfyUI without a GPU — and the catch nobody mentions

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Qwen Image 3 (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄model(from JSON/default)►

    Qwen Image 3 has no weights you can download. No fp8, no GGUF, nothing to point a loader at - the hosted endpoint or Qwen's own chat is the whole door. So if you want its text rendering and instruction following sitting next to your local upscaler inside a Comfy graph, a node like this one is your only route in.

    What it is, precisely: an HTTP client with your key in it. It doesn't sample anything on your machine, it builds a JSON request, POSTs it to api.acedata.cloud, and hands you back a task ID. The picture shows up later, through a different node.

    Where it sits in the bigger picture

    The Qwen-Image family is Alibaba's Apache-2.0 image line - a 20B MMDiT that renders text better than anything smaller, with an Edit branch that became the open instruction-editing default after late 2025. But its newest branch went closed: Qwen-Image-2.0 unified generation and editing into 7B and shipped API and chat only in February 2026, no weights, and 3.0 carries on down that road. Locally, 3.0 does not exist.

    So the honest use case is: you want the model, you can't have the model. Fine for a text-in-image job when a 20B-class download isn't happening, or if you have no GPU at all. If you can run a local model, run the local model - the hosted tier is metered per call, your prompts and reference images leave your machine, and the filter is the provider's, not yours.

    How the node actually works

    The parameters_json box is the request. The model dropdown is a shortcut that overwrites the model field inside that JSON - leave it on (from JSON/default) and the JSON wins.

    Here's the part worth internalizing: the pack carries a copy of the published API contract and validates your JSON against it before anything is sent, so a typo'd field name or a bad number costs you nothing. Then it forces the request to async and submits. Which means the correct success output from this node is:

    status: pending
    task_id: 3f1c...
    media_urls_json: []
    

    That is not a bug. Submission and delivery are two different nodes in this pack; wire task_id into Qwen Image Retrieve Task and get your image there.

    The JSON fields a beginner will actually set:

    • prompt - required, up to 18,000 characters. Write sentences. This is an LLM-encoded model; tag soup and (face:1.4) do nothing for it.
    • size - "1024*1024" by default, and note the asterisk, not an x. The contract's pattern is ^[0-9]+\*[0-9]+$.
    • image_urls - 1 to 3 references, if you're editing rather than generating.
    • n (1–6), seed, negative_prompt, prompt_extend with a mode of direct or agent, enable_thinking, watermark. Handy, second-order.

    The six outputs are status, task_id, media_urls_json, first_media_url, result_json and trace_id. It's an output node, so it runs as a terminal - you'll see the status lines in the node itself.

    Install

    ComfyUI Manager → search Qwen Image → confirm publisher acedatacloud and package Qwen Image by Ace Data Cloud → install → restart. Or from source:

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

    The requirements are just requests and jsonschema - no model downloads, no CUDA anything. Then set ACEDATACLOUD_API_KEY (or ACEDATACLOUD_API_TOKEN) in the ComfyUI process environment and restart. That means the same shell you launch ComfyUI from, or a proper Windows environment variable - not a node widget. Keep keys out of workflow JSON, screenshots and issue reports; shared workflows leak them.

    Where people get burned

    The key has to be in the process environment. Miss it and you get a flat Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart. on the first run. This is the number one first-run failure.

    Paid submissions are never retried. Reads are retried three times on a connection error; a write is one attempt, full stop. So if the connection drops mid-submit, you may have a job running that you can't see. Preserve any task ID you got, check the request history (or query the batch-retrieve node) before you hit queue again. Re-running blind is how people pay twice.

    Error messages are scrubbed on purpose. The raised exception won't contain the service payload, by design. trace_id is how you and support find the actual request - copy it before complaining.

    Unknown keys vanish silently. The request body is rebuilt from the contract's own property list, so a mistyped negatve_prompt isn't rejected, it's just dropped. Same for empty strings. If a field seems to do nothing, check the spelling first.

    A missing prompt gives you a vague error. The validator reports the failure against the object, not the field: Invalid parameters: does not meet the API's required constraint. Read it as "something required is missing."

    One last thing, since this node carries a credential and calls the network by design - that's exactly the shape of the thing that got weaponized once in this ecosystem. Install it from the registry listing under the acedatacloud publisher, not a random mirror, and price a run before you batch it.

    CategoryAce Data Cloud/Qwen Image

    Inputs (2)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    modelCOMBO(from JSON/default)3 options: (from JSON/default), qwen-image-3.0, qwen-image-3.0-pro

    Outputs (6)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    media_urls_jsonSTRING—
    first_media_urlSTRING—
    result_jsonSTRING—
    trace_idSTRING—