Stable Diffusion 3 API Node
Stable Diffusion 3 as an API call — sd3-core presets included
- image_url
Let's get the uncomfortable part out of the way: Stability's own SD3 API is effectively gone. The sd3-ultra / sd3-medium endpoints that once lived at Stability's paid API shut down, and the SD3 family's own story is a saga of licensing reversals and community disappointment (there's a reason almost nobody built on it). So this node isn't really "Stability's API" - it's an OpenAI-style images/generations caller preconfigured with SD3's parameter vocabulary, and it only works if some provider in front of you actually serves an SD3 model. The default URL is HyprLab, the author's OpenAI-compatible aggregator, which was serving SD3-style models.
That reframe matters because it tells you when this node is worth your time: you have an endpoint that offers SD3 (or an SD3-compatible model) and you want it inside a ComfyUI graph without local weights. If you don't, this node is a very well-labeled dead end.
How it works
One POST, one parse. The node builds a payload with model, prompt, negative_prompt, aspect_ratio, seed, response_format: "url", and output_format: "webp", sends it to api_url with a Bearer token, and pulls data[0]["url"] out of the OpenAI-style response. It prints the HTTP status and raw response to the console as it goes - genuinely useful for debugging, mildly noisy otherwise.
The neat detail is style_preset. The dropdown has 19 options (3d-model, analog-film, anime, cinematic, photographic...) plus two sentinel values: None and "Only sd3-core support". Look at the code and you'll see the preset is only sent when the model is sd3-core. On any other model it's silently ignored - the dropdown is a hint that style presets were an sd3-core feature, not a bug in your setup.
The inputs that matter
promptandnegative_prompt- SD3 takes both, a rarity among the pack's image nodes.model- defaultsd3-ultra. Set it to whatever your provider names (oftensd3-core).aspect_ratio- nine presets from 1:1 through 21:9, 9:16, etc. SD3-era API style, no pixel sizes here.seed- 0 to 4294967294.style_preset- only meaningful withsd3-core, as above.api_url/api_key- the provider. Defaults: HyprLab +YOUR_API_KEY_HERE.
Output: image_url (STRING) - a URL, not an IMAGE. Chain it into a load-image-from-URL node (the pack's "Load Image from URL" accepts both URLs and data URIs) to get a tensor you can preview or edit.
Installing it
Ships in AhBumm/ComfyUI_BillBum_Nodes. ComfyUI Manager: search "billbum". Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/AhBumm/ComfyUI_BillBum_APIset_Nodes.git
cd ComfyUI_BillBum_APIset_Nodes && pip install -r requirements.txt
Restart ComfyUI. Dependencies are the pack's light set - requests, pillow, numpy - no local weights, no VRAM. The model lives on the server.
Where people get burned
- Model not found. This is the big one.
sd3-ultradoesn't exist on most providers anymore. Check what your endpoint actually offers; the README's rule applies directly: "model errors → confirm the selected model is actually available on the provider." - Style preset silently ignored on non-core models - expected behavior, not a bug, per the source.
- URL output, not pixels. Remember the conversion step.
If you genuinely have an SD3-serving endpoint, this is the cleanest way in. If you don't, skip it - the same pack's generic image-generation node is a more future-proof bet.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| negative_prompt | STRING | — | |
| model | STRING | sd3-ultra | — |
| aspect_ratio | COMBO | 9 options: 1:1, 16:9, 21:9, 2:3, 3:2, 4:5, +3 | |
| seed | INT | 00–4294967294 | — |
| api_url | STRING | https://api.hyprlab.io/v1/images/generations | — |
| api_key | STRING | YOUR_API_KEY_HERE | — |
| style_preset | COMBO | 19 options: Only sd3-core support, None, 3d-model, analog-film, anime, cinematic, +13 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_url | STRING | — |