Nodes/OpenRouter Studio/OpenRouter Studio · Image
ComfyUI Node

OpenRouter Studio · Image

Every closed image model on OpenRouter, one node, your own key

By tahabahrami·Created about a month ago·Updated about a month ago· 0
OpenRouter Studio · Image
    • images
    • masks
    • local job id
    • metadata JSON
    • artifact paths JSON
    • actual cost USD
    model
    strict_validationtrue
    save_raw_artifactstrue
    reference_max_megapixels16
    request_timeout_seconds600
    studio_reference_manifest
    rerun_nonce0

    This is the node for the models you can never download. Nano Banana Pro, GPT Image, Recraft V3, whatever the OpenRouter image catalogue is advertising this week - all reachable from a normal ComfyUI graph and billed to your own OpenRouter key. No Comfy credits, no reseller subscription. If you've wanted a closed image model inside your local pipeline, this is the bring-your-own-key door.

    Let's be upfront about the tradeoff, because it's the same one every API wrapper makes: the model is not on your machine. Your prompt and reference images leave it, the model's content filter applies with no community bypass, and per-call cost adds up faster than people expect. The reason you reach for this anyway is the reason nobody can argue with - Nano Banana has no weights. An API node is the only door for that, and the community's line on the whole category is basically "fine for a model you can't run, wrong default for one you can." Keep that frame and this node is honest value.

    How it works

    The clever bit is the catalogue-driven form. The model input is a live combo populated from OpenRouter's media catalogue (merged with a bundled snapshot at startup). Pick a model and the whole panel repopulates with just the controls that model actually advertises - FLUX gets steps and guidance, Recraft gets style controls, OpenAI models get moderation - instead of one lowest-common-denominator form. That's what strict_validation (on by default) enforces: it rejects a control the selected model doesn't advertise before you spend money on a request that would fail anyway.

    Reference slots appear in the model panel (reference_1, reference_2…) and take normal IMAGE wires. Oversized local references are downscaled before upload per reference_max_megapixels (default 16). You can also use @image_ref1 shortcuts in the prompt - a local convenience the node expands into plain language before submission. Note that a blank prompt is rejected outright: a reference is visual context, not a substitute for instructions.

    Two inputs beginners usually leave alone but should know about: studio_reference_manifest is local-only Reference Inspector metadata that Studio manages automatically (it's never sent to OpenRouter), and rerun_nonce is the answer when re-running an identical workflow just hands you back the same result - bump it to force a genuinely fresh request. request_timeout_seconds (default 600) is how long a single generation POST may take.

    Outputs

    • images (IMAGE) and masks (MASK) - decoded from the response. The mask is alpha/padding-derived, handy for compositing or feeding a real inpaint pass.
    • local job id, metadata JSON, artifact paths JSON, actual cost USD.

    Raw bytes are saved to ComfyUI/output/openrouter_studio/. SVG results (Recraft, notably) are preserved as raw .svg and rasterized with resvg-py just for the preview - so you get the vector, not a degraded raster.

    Install

    Needs ComfyUI 0.28.0+ (Manager shows the requirement before you install). In Manager, search node packs for OpenRouter Studio, Install, restart. The "One key. The whole studio." screen opens automatically - paste your OpenRouter key and Connect. That's it: no model downloads, and the dependencies are light (Pillow, resvg-py, typing-extensions). The key lives in your ComfyUI user directory (__openrouter_studio/credentials.json), never in the workflow JSON.

    Troubleshooting

    • Model or option missing: right-click any OpenRouter Studio node → Refresh OpenRouter catalogue. If OpenRouter is unreachable the pack falls back to its last cache, then the bundled snapshot.
    • A run ended without a definitive response: this pack deliberately never auto-retries a generation POST (OpenRouter documents no idempotency contract, so a retry could bill you twice). Check OpenRouter activity before resubmitting.
    • Credential file "too permissive": chmod 600 the exact path in the error message.
    • SVG generated but preview failed: the raw .svg is still in the output directory.

    Honest caveat: the pack is new (v0.3.0, August 2026), so there's no battle-tested community reputation behind it yet. It's arbitrary Python that holds your key and calls the network by design - read the repo before trusting it, exactly as you should with any API pack. For "I need a closed image model inside my graph without Comfy's credit storefront," this is the cleanest path around.

    CategoryOpenRouter Studio/Image

    Inputs (7)

    NameTypeDefaultDescription
    modelCOMBOEvery image model in the current OpenRouter image catalogue.
    strict_validationBOOLEANtrueReject controls not advertised for the selected model or endpoint before submission.
    save_raw_artifactsBOOLEANtrueSave returned PNG/JPEG/WebP/SVG bytes in ComfyUI/output/openrouter_studio.
    reference_max_megapixelsFLOAT161–80Oversized local references are downscaled before upload.
    request_timeout_secondsINT60030–3600
    studio_reference_manifestSTRINGLocal-only Reference Inspector metadata. OpenRouter Studio manages this automatically; it is never sent to OpenRouter.
    rerun_nonceINT00–2147483647Increment intentionally to request a fresh result with otherwise identical inputs.

    Outputs (6)

    NameTypeDescription
    imagesIMAGE
    masksMASK
    local job idSTRING
    metadata JSONSTRING
    artifact paths JSONSTRING
    actual cost USDFLOAT