Labnana API Client
Every Labnana workflow starts here — the node that holds your key
- client
If you googled "LabnanaClient" expecting a generator, back up a step. This node doesn't make anything - it's the auth card you hand to every other node in the ComfyUI-Labnana pack. Labnana is a pay-per-credit image generation API (from Marswave) that serves closed models you can't download - Google's Gemini 3 Pro Image, GPT Image 2, Seedream 5.0 Pro, and the Wan image models. So instead of a checkpoint loader you get a key, and this is where the key lives. Think of it as the "load model" step of an API workflow: you configure it once and wire its single client output into whatever actually does the work.
How it works
The node builds a LABNANA_CLIENT object that every other Labnana node takes as its first input. Under the hood it's a thin requests-based client that sends Authorization: Bearer <key> on every call to https://api.labnana.com. You never see any of that - you just paste a key and the downstream nodes stay configured.
The inputs you actually set:
api_key- your key, which starts withls_and is created at labnana.com/api-keys. Leave it empty and the node falls back to theLABNANA_API_KEYenvironment variable.timeout(default 300s) - per-request timeout. Only touch this if long generations are timing out.max_retries(default 3) - retries on rate limiting, with the documented 20–30s exponential backoff baked in.
There's a deliberately loud base_url field too, defaulting to the official endpoint. Here's the part worth knowing: custom base URLs are blocked by default. If you change base_url, the client refuses to send your key anywhere but api.labnana.com unless you set LABNANA_ALLOW_CUSTOM_BASE_URL=1 before starting ComfyUI. That's not a bug, it's a security feature - API-wrapper nodes are exactly the shape of thing that gets weaponized in this ecosystem, and a key that happily travels to any host you type in is a key that can leak. The guard is a nice touch you don't see in most packs.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/exoticknight/ComfyUI-Labnana.git
Then restart ComfyUI. Or use ComfyUI Manager → Custom Nodes Manager, search Labnana, and install from there (it's also on the Comfy Registry: comfy node registry-install comfyui-labnana). The only dependency is requests, which ships with ComfyUI - no model downloads, no VRAM, no torch extras. Nodes appear under the Labnana menu.
Common issues
- "No API key provided" - you left the field empty and didn't set the env var. Either paste the key or export
LABNANA_API_KEY(recommended, so the key never lands inside shared workflow JSON that you paste into Discord or a repo). - Error code 21007 - invalid key. Re-check it at labnana.com/api-keys; they start with
ls_. - "Refusing to send the API key to custom base URL..." - you changed
base_urlwithout settingLABNANA_ALLOW_CUSTOM_BASE_URL=1. If that wasn't intentional, just restore the default. - Nothing renders in the node itself - it's a config node, so it correctly shows no image output. Wire
clientinto a generation node and run from there.
One setup habit that saves pain: use the environment variable for the key, and keep the Labnana API Client node at the default endpoint. You get the security guard for free, and shared workflows don't carry a credential around.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | Labnana API key (ls_...). Leave empty to use the LABNANA_API_KEY environment variable. Create keys at https://labnana.com/api-keys | |
| base_urlopt | STRING | https://api.labnana.com | Official API endpoint. Custom URLs are blocked unless LABNANA_ALLOW_CUSTOM_BASE_URL=1 is set. |
| timeoutopt | INT | 30010–3600 | Per-request timeout (seconds). |
| max_retriesopt | INT | 30–10 | Retries on rate limiting (20-30s backoff). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| client | LABNANA_CLIENT | — |