API429 · Current Image Prices
The One Node in This Pack You Can Run Without an Account
- STRING
API-wrapper nodes have one killer property: you pay per call, and it's invisible until the invoice. API429PriceQuote is the pack's answer to that - it reads the service's public price catalog and prints what a batch would cost before you spend anything.
It's the least glamorous node in the pack by a mile, and the one I'd run first - it also works with no key, no account and no balance.
What it does
It GETs the public catalog from gateway.api429.com/api/public/catalog and looks up the exact model ID you typed. Then it filters the model's rates down to the ones priced per output image and prints a line for each condition:
gemini-3.1-flash-image - public rates as of <catalog timestamp>
<condition>: $0.0x per output; 100 outputs = $x.xx
Output-image estimate only. Input tokens, references, retries and other
operations may add charges. Select the exact condition for your request;
this is not a spending limit.
Three inputs, and two of them are just arithmetic:
model- the exact catalog ID (gemini-3.1-flash-image,FLUX.2-pro,gpt-image-2in the shipped examples). Not a fuzzy match. If it isn't in the catalog you get "Model not found in the public catalog."images- how many outputs you're planning (1 to 100000). It multiplies the per-image unit price.refresh_id- an integer you bump to force a re-fetch.
The output is a single STRING. The node is also an output node, which means it executes when you press Queue even if nothing is wired to its output, and because it returns its text as UI data, the quote shows up inside the node itself - that's the intended way to read it. example_workflows/current-prices.json wires it to a PreviewAny node if you'd rather have a separate panel (the README notes that needs a recent ComfyUI release). The STRING can also be piped into anything else that takes text.
refresh_id and Comfy's caching
ComfyUI caches node results: run the graph twice with identical inputs and it may not re-execute the work. Prices change on the provider's side, not yours, so the node gives you a manual lever instead of a timer. Change refresh_id and it fetches again. That's the field's entire purpose, and it's why "the price didn't update" is usually a stale cache rather than a broken node.
Read the caveat, not just the number
Two things undermine a naive reading of the quote. First, the per-image rate depends on condition - resolution, quality level, and how many reference images you're sending. The catalog lists several; you have to pick the one matching what your node actually does. Second, "output image" is not the whole bill: the README is explicit that input tokens, references and retries can add charges on top, and the node prints that sentence itself under the numbers.
So it's an estimate, transparently labeled as one. What it is not is an enforced budget. Nothing in this pack stops you spending - allow_paid_generation gates each request, max_images counts prompts, and your balance is the real limit. Use the quote to decide, not to protect yourself.
One structural point: these are the vendor's own rates from the vendor's own endpoint - a useful tool for pricing this service, not an independent comparison of resellers.
Install
ComfyUI Manager → search "api429", or:
cd ComfyUI/custom_nodes
git clone https://github.com/veresk06/comfyui-api429
cd comfyui-api429 && pip install -r requirements.txt
numpy and Pillow - the entire dependency list; no weights, no GPU. Restart ComfyUI afterwards.
You can use this node right now - load example_workflows/current-prices.json, type a model ID and a quantity, and Queue. And because the endpoint is public, you can check the same numbers without ComfyUI at all:
curl -s https://gateway.api429.com/api/public/catalog | head -c 800
The paid nodes in the pack are the ones that need API429_API_KEY in the server environment before ComfyUI starts; this one never reads it, which is also why it's safe to run on a machine where you haven't set up credentials yet.
Where people get burned
- "Model not found in the public catalog." The ID is exact-match and case matters. Copy it from the catalog rather than typing it from memory.
- "Catalog response too large." The fetch caps at two megabytes and twenty seconds; a slow network path can trip it. The node also refuses HTTP redirects on that fetch, deliberately, so it only ever talks to the catalog host.
- Expecting it to warn you mid-batch. It won't. Once a paid run starts, it's between you and your balance.
And one shared caveat: as of September 2026 the Reddit corpus has zero threads about this pack, so no community has pressure-tested these numbers. The node's own output string is the most reliable thing here - which is fine, that's what it's for.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | gemini-3.1-flash-image | — |
| images | INT | 11–100000 | — |
| refresh_id | INT | 0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |