Nodes/ComfyUI-YogurtNodes/Provider: GRSAI
ComfyUI Node

Provider: GRSAI

The Relay Provider With No Paper Trail At All

By yogurt7771·Created 2 years ago·Updated 6 days ago· 3
Provider: GRSAI
    • provider
    ◄api_key►
    ◄base_url►
    ◄max_wait_seconds600►
    ◄proxy_url►
    ◄timeout0►

    Let's start with the evidence, because it frames everything else: "GRSAI" appears in zero threads of the entire reddit corpus this KB is built from. The pack that wraps it has zero mentions too. So this isn't a node you found through a tutorial - you either have a GRSAI key already, or you're evaluating relays and this one surfaced.

    That's not a knock. The reseller layer around Google's and OpenAI's image models is a crowded, mostly invisible market - kie.ai, laozhang, cometapi, apiyi and a long tail of near-identical proxies - and the graph-builder's job is just to get whichever one you picked wired into ComfyUI. This node is the pack's dedicated GRSAI pipe, and it's unusual in that it knows GRSAI's draw protocol specifically rather than pretending the endpoint is OpenAI-shaped.

    Why a relay at all

    Four reasons, and only three survive contact with reality: cost (volume discounts undercut the first-party rate), region (the official API isn't available or isn't payable where you are), billing (one key and a card instead of a cloud project and a billing account), and filtering (some relays run looser moderation). That last one is vendor marketing until proven - your prompt still gets handed to the vendor's model, which does its own refusing.

    The fields

    This provider has more dials than most, because generation on GRSAI is a task: you submit a draw job and poll it.

    • api_key - blank resolves to grsai (or grsai_api_key) in api_key.json, then GRSAI_API_KEY. Nothing found means a clear error rather than a mystery.
    • base_url - no default filled in the node; leave empty for the built-in endpoint (grsaiapi.com), or set it if your account points elsewhere. A grsai_base_url key in the JSON works as a fallback.
    • max_wait_seconds - default 600, range 30–3600. This is the ceiling on waiting for the draw task to finish. The pack's tooltip is explicit: maximum time to wait for the draw task.
    • proxy_url - optional; same http:// or socks5:// form as the rest of the pack.
    • timeout - per-request network timeout, seconds, 0 means no limit.

    Output: one provider socket. Wire it into Nano Banana or GPT Image - those are the families it routes for. Not every version in those dropdowns is available through GRSAI, and picking one that isn't gives you the "not available via provider, supported providers are…" error rather than a silent substitution.

    The two timeouts, and why they're separate

    This is the part people misread, so worth stating plainly: timeout governs a single HTTP request; max_wait_seconds governs the whole job, polling included. Setting timeout to 0 thinking "no timeout is safest" doesn't help a draw task that's queued behind someone else's credits - max_wait_seconds is the one to raise for that. Conversely, if your relay is just slow to answer at all, timeout is the one to bump. They fail with different errors and people spend an evening on the wrong field.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes
    cd ComfyUI-YogurtNodes
    pip install -r requirements.txt
    

    Manager install is fine too - search "YogurtNodes", then look for "Provider: GRSAI (Yogurt Nodes)" on the canvas, since display names get the suffix at runtime.

    Key file, custom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/api_key.json:

    { "grsai": "your-key", "grsai_base_url": "https://your-endpoint.example" }
    

    Read this before you paste a key

    A relay provider is the highest-risk shape of node in this ecosystem, and this one has the least community scrutiny possible - nobody on Reddit is going to notice if it changes. Ask yourself two questions. Did you choose this relay, or did you find the pack first and now need a relay to justify it? And do you know what happens to your prompts and reference images on that endpoint? The pack's own architecture answers a related worry well: GRSAI declares no official-key fallback, so a blank field errors rather than quietly shipping your openai key to a third party. That's the pack being careful. The relay's own behaviour is still the relay's.

    If the answer to the first question is "I need to cut costs on a big batch," sure. If it's "this seemed cheaper," run the numbers against your own key first - the middleman sees every prompt either way.

    CategoryYogurtNodes/LLM/Providers

    Inputs (5)

    NameTypeDefaultDescription
    api_keySTRINGLeave empty to use 'grsai' from api_key.json, then the GRSAI_API_KEY environment variable.
    base_urlSTRINGAPI base URL; leave empty for the default endpoint.
    max_wait_secondsINT60030–3600Maximum time to wait for the draw task.
    proxy_urlSTRINGProxy URL, e.g. http://127.0.0.1:7890 or socks5://127.0.0.1:1080.
    timeoutINT00–3600Request timeout in seconds; 0 means no limit.

    Outputs (1)

    NameTypeDescription
    providerYOGURT_LLM_PROVIDER—