ComfyUI Node

RunWareAPI

SDXL and SD1.5 in the cloud, via Runware's websocket

By BetaDoggo·Created 2 years ago·Updated 6 months ago· 38
RunWareAPI
    • IMAGE
    positive_prompt
    negative_prompt
    width1024
    height1024
    steps20
    api_key
    seed1337
    cfg7.0
    model_air
    loras

    RunWareAPI is the pack's third provider, and it's the one for the old reliable models. Where the fal nodes give you Flux, AuraFlow, and other modern architectures, Runware specializes in SD 1.5 and SDXL - the models you actually know and have LoRAs for. You type a positive and negative prompt, pick a model, and get back an IMAGE generated on Runware's servers. For someone on a low-end GPU who still wants their SDXL fine-tune workflow, this is the node.

    The mechanism is different from the fal nodes, and it's worth knowing because it explains the input field that confuses everyone: model_air. Runware's API speaks in CivitAI AIR model identifiers - the AIR ID system CivitAI uses to address models and LoRAs on the platform. The code's own comment points you to Runware's model explorer for the list. So model_air isn't a friendly name like "SDXL 1.0"; it's an ID string in the format CivitAI uses to identify a model (something like air:model_id style). You'll need to grab the right ID for the checkpoint you want, because there's no dropdown here.

    How it works

    Instead of HTTP submission, Runware uses a websocket: the node opens a connection to wss://ws-api.runware.ai/v1, authenticates with your key, sends an imageInference request, waits for the result, and closes. It's synchronous and simple - and it's also the reason troubleshooting here is a bit different from the fal nodes: the websocket handshake and the auth are part of the same fragile path.

    Like any CFG model, SDXL/SD1.5 respond to cfg (default 7.0 - the classic SDXL starting point) and a real negative_prompt. This is the most "traditional ComfyUI-feeling" node in the pack, because all your old prompting habits apply.

    The inputs that matter

    • positive_prompt / negative_prompt - both real. This is not Flux; negatives work and matter.
    • model_air - the CivitAI AIR ID of the checkpoint. This is the one you must look up; there's no preset.
    • width / height - 512–2048, 16px steps. Respect the model's native resolution (512² for SD1.5, 1024² for SDXL).
    • steps - default 20.
    • cfg - default 7.0.
    • seed, api_key - standard.
    • loras (optional) - a JSON string from the pack's RunwareAddLora helper node, which stacks LoRAs by their AIR IDs.

    Single IMAGE output.

    Install

    Same pack, same drill:

    cd ComfyUI/custom_nodes
    git clone https://github.com/BetaDoggo/ComfyUI-Cloud-APIs
    

    or Manager → search "ComfyUI-Cloud-APIs", restart. Runware's key goes in a .txt file in keys/ like the others - though note Runware's auth is a websocket handshake, not an env var, so a malformed key file fails at connect time rather than at generation time.

    Troubleshooting

    • Websocket connect/auth errors - cleanest sign your key file is bad. Re-copy it; make sure there's no stray whitespace or newline.
    • "model not found" / empty results - you've got a wrong or malformed model_air ID. Double-check it against Runware's model explorer.
    • SDXL output looks soft or garbled - you're generating at a resolution the model wasn't trained for. SDXL wants ~1024²; SD1.5 wants ~512².
    • LoRAs not applying - the loras field needs the JSON from RunwareAddLora. Check the helper's output is actually wired in.

    The pack is archived, and Runware has since shipped its own official ComfyUI integration - if this node gives you trouble, that official pack is the more maintained path, though it won't share this node's exact inputs.

    CategoryComfyCloudAPIs

    Inputs (10)

    NameTypeDefaultDescription
    positive_promptSTRING
    negative_promptSTRING
    widthINT1024512–2048
    heightINT1024512–2048
    stepsINT201–100
    api_keyCOMBO1 options: nokey.txt
    seedINT13371–16777215
    cfgFLOAT7.00–30
    model_airSTRING
    lorasoptSTRING

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE