SF WaveSpeed Client
The key holder for every WaveSpeed node — wire this in first or nothing runs
- client
Every WaveSpeed node in this pack - Nano Banana, Flux Kontext, Veo, InfiniteTalk, all of them - refuses to do anything until you hand it a WAVESPEED_AI_API_CLIENT. That object comes from exactly one place: SF WaveSpeed Client. Think of it as the power cable for the whole WaveSpeed section. It holds your API key, and every generation node takes its output as its first input. Miss this wiring and you'll get a node that looks fine but errors the moment it executes.
What WaveSpeed actually is
Quick context so the billing makes sense: WaveSpeed AI (wavespeed.ai) is a pay-per-use API platform that serves a huge menu of closed models - Google Veo, Sora, Wan, Nano Banana, Flux Kontext, and a long tail of others - for people who don't own the hardware or the licenses. It's a real, well-trafficked service; the community has discussed it for a couple of years, mostly as "cheap access to models I can't run locally." It is not the same as the "WaveSpeed" ComfyUI acceleration extension for local Flux/LTX speedups (that's a different project entirely and easy to confuse by name). Here, "WaveSpeed" always means the API.
How the key gets in
The node's single input is api_key - but you don't have to type it into the node. The logic falls back in order: if the node's field is empty, it reads config.ini in the pack folder (copy the provided config.ini.tmp, fill in [API] api_key = ...), and if that's missing it checks the WAVESPEED_API_KEY environment variable. So you have three ways to authenticate, in a sensible priority order: node field (per-workflow), config.ini (per-install, shareable with a team), env var (per-machine, CI-friendly). Grab a key from the WaveSpeed site and you're set.
The output is a single client connection of type WAVESPEED_AI_API_CLIENT. Under the hood it's a small dict holding the key; each generation node instantiates the real HTTP client from it when it runs.
Installing it
Part of the SF ComfyUI Nodes pack from Stillfront. ComfyUI Manager → "SF ComfyUI Nodes" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt
Then set your key however you like. Copy the template to start:
cp config.ini.tmp config.ini
and put your key in the [API] section. No models to download - everything runs on WaveSpeed's servers.
Common issues
If a generation node throws "API_KEY is empty" or "Unable to find API_KEY," you've wired the client output but left every source blank - put the key in the node field and it's fixed instantly. A 401 Unauthorized from the API means the key itself is wrong, expired, or out of credits. And one honest heads-up from the community: WaveSpeed has had moments where its web playground tightened content filters and its promotions felt bait-and-switchy; the API is generally the more permissive and reliable surface, which is precisely where this node lives. Wire the client to one generation node, confirm a single image comes back, and then scale the graph out - that one green run is your whole setup validated.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — |