Credits and dollars
Comfy prices in credits at a fixed rate: **0.004739. Buy credits at workspace billing. A workspace with no balance is refused with402 and insufficient_credits before the request body is validated, so an unfunded workspace can answer 402 even for a malformed request. A call billed to your own provider key does not draw credits and is not refused for an empty balance.
Read the price off the response
A successful generation can carry anX-Comfy-Credits-Used response header giving what that run cost, in credits. It is priced from the same rate card the charge itself is billed against, and on a run that reached the provider through more than one billed call it is their sum.
25.32 means that run cost $0.12. This model’s default provider is metered, so that figure is one run’s cost, not the model’s price — the next request can read differently. The value is rounded to two decimals, so treat it as a figure to display and reconcile, not as an exact ledger amount.
Within a single run the header is the sum of every billed call that run made. Across retries it is not: a replayed response — one served from the record held against an Idempotency-Key, marked Idempotent-Replayed: true — is not charged a second time and carries the original run’s figure again. Do not add the header up across retries of one key, or a cost-tracking integration will overstate spend.
Where a figure on this page and the header disagree, the header reflects the rate card the charge is billed against — treat this page as a guide to the shape of a model’s pricing, not as the rate card.
Two ways a model is priced
Models do not all price the same way, and the difference is what decides whether a single number can describe a model at all.
Which shape applies is a property of the model and the provider serving it, so the same model can be flat on one provider and metered on another. A flat shape is only predictable while the call stays on the provider you chose — see provider fallback.
Most token-priced models — the Gemini, GPT, and Claude families — are metered. Most dedicated image and video generators are flat, or flat within a named option.
Comparing providers for the same model
Some models are served by more than one provider. The model is the same; the price and the pricing shape are not. Where a model has alternates, they are listed on its page and on Providers. Two image models where the difference is large and worth knowing:vertexai/gemini-3-pro-image
vertexai/gemini-3.1-flash-image
The default provider for both is metered, and the alternates differ in how predictable they are: fal is a single flat price, Wavespeed is flat within a resolution band, and Runware varies per request. If you need a per-image price you can forecast, fal and Wavespeed give you one. If your requests are small, a metered provider can still come out lower — the only way to know for your own traffic is to measure it with the header.
openai/gpt-image-2 on Wavespeed
Not every alternate is a single number. Wavespeed prices the GPT image models as a grid of quality against output resolution — flat within each cell, so it is predictable once you know which cell your request lands in:
Text to image (wavespeed/wavespeed-gpt-image-2)
Edit
OpenAI’s own leg for the same model is token-metered instead, so the two are not comparable cell by cell — pick the row and column your traffic actually uses and compare that against a measured run.
The
gpt-image-2.5 models are priced on the same grid shape with two further quality steps (xhigh and max). Seedance, Kling and Wan video are metered or multi-tier on every provider that serves them. For all of these, compare measured runs on a request shaped like your real traffic rather than against a single published figure — with X-Comfy-Credits-Used where the model reports it, and against your workspace’s usage records where it does not.
Choosing a provider on a request
Send the model’s own id and Router uses its default provider. To run the same model on an alternate, either call the alternate’s own id directly, or keep the model id and addmodel_provider:
model_provider, Router translates the response back into the model’s native shape where it can. Translation is best-effort: if it cannot be applied, the successful response is returned in the alternate provider’s own shape rather than withheld. Calling an alternate’s own id directly uses that id’s own request and response contract. See Providers for the full list and for strict_mode.
Provider fallback can change the price
Automatic provider fallback is on by default: if the first provider fails for a reason that is not the request’s own, Router can retry once on another of the model’s providers, and that provider’s price applies. The response then carriesX-Comfy-Router-Fallback-Provider, naming the provider that served it. When you pick a provider for its price, add fallback_provider=false, as above, so a failure is returned to you rather than served — and charged — elsewhere.
What you are charged for
Bring your own provider key
Saving your own Higgsfield key bills those generations to your Higgsfield account rather than your Comfy credits, through the same endpoint. Those runs carry noX-Comfy-Credits-Used header. See Higgsfield with your own key.