OpenAI DALLe3 π§
The seed is a lie, the key is required
- IMAGE
- WIDTH
- HEIGHT
- REVISED_PROMPT
Want DALL-E 3 inside a ComfyUI workflow? This is the node for it, and the author of this pack built the whole thing around exactly this kind of use - their ComfyUI dialogue game used DALL-E 3 for every illustration. It calls the OpenAI Images API, so the first thing to understand is that none of it runs locally. No model download, no GPU compute on your side - but also a mandatory OPENAI_API_KEY, and every image costs API money.
What it does
You type a prompt, pick a resolution, and it calls dall-e-3 via the OpenAI API, then hands the result back as an IMAGE ready for the rest of your graph. There's no negative prompt - DALL-E 3 doesn't take one, and it works in any language, so you can prompt in Japanese or French and it'll do its thing. quality (HD/Standard) and style (vivid/natural) map directly to the API's own knobs.
The node also spits out WIDTH, HEIGHT (matching the resolution you picked) and REVISED_PROMPT - the rewritten prompt DALL-E 3 actually used. That last one is worth wiring to a text display: DALL-E 3 silently rewrites your prompt before generating, and seeing the revision is the fastest way to understand why the output ignored half your instructions.
The dummy_seed trap
This is the part that trips people up. DALL-E 3 has no real seed, so the dummy_seed field is a cache key: keep the same prompt + resolution + dummy_seed and the node returns the cached image - it won't regenerate at all. Bump dummy_seed and you get a fresh call. So if you're hitting "generate" and nothing changes, you've found the cache. And the flip side: even with a fixed dummy_seed, you can never reproduce a specific output, because the API's actual randomness isn't controllable. It's a cache control, not a reproducibility tool.
The other settings: retry (0β5) re-calls the API when it fails with a BadRequestError - which is OpenAI's content filter firing. blank_image_if_failed swaps the exception for a black image instead, which keeps batch runs alive. auto_save writes both the image and a JSON sidecar (prompt, resolution, quality, style) to auto_save_dir (default ./output_dalle3).
The two things that will bite you
The API key. It's read from the OPENAI_API_KEY environment variable at launch, so you must set it before starting ComfyUI - the README shows OPENAI_API_KEY=sk-... python3 main.py. No key, no node.
The content filter. DALL-E 3's moderation is aggressive and has only loosened, never fully relaxed. The KB's take on closed models is blunt here: this is the "severe censorship" model that got superseded by GPT Image for a reason. Prompts that trip the filter throw BadRequestErrors, which is exactly what retry and blank_image_if_failed exist for.
Installing it
It's in the ComfyUI-NegiTools pack - ComfyUI Manager, search "ComfyUI-NegiTools", or:
cd ComfyUI/custom_nodes
git clone https://github.com/natto-maki/ComfyUI-NegiTools
pip install -r ComfyUI-NegiTools/requirements.txt
then restart with the key set.
The honest verdict
If you already have an OpenAI key, this is a neat bridge between the closed API world and your local graph - great for prototyping, and the caching behavior actually helps you avoid burning money on repeat calls. But for serious generation, the local open-weight models this pack sits alongside (Flux, SDXL fine-tunes) beat DALL-E 3 on control and cost, and OpenAI's own GPT Image has since moved past DALL-E 3 anyway. Treat this as "DALL-E 3, but in ComfyUI" - nothing more, nothing less.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution | COMBO | 3 options: 1024x1024, 1024x1792, 1792x1024 | |
| dummy_seed | INT | 00β18446744073709550000 | β |
| prompt | STRING | great picture | β |
| quality | COMBO | 2 options: HD, Standard | |
| style | COMBO | 2 options: vivid, natural | |
| retry | INT | 00β5 | β |
| auto_save | BOOLEAN | false | β |
| auto_save_dir | STRING | ./output_dalle3 | β |
| blank_image_if_failed | BOOLEAN | false | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |
| WIDTH | INT | β |
| HEIGHT | INT | β |
| REVISED_PROMPT | STRING | β |