Skip to main content
You are billed when the provider bills Comfy. The same rule applies to synchronous and queued calls, and a same-key retry that replays a result is not a second charge.

Model billing facts

GET /v2/models and the model detail response include billing.charges_on_policy_rejection. This describes a policy refusal, not every failure or a price estimate. Compare these strings explicitly: "no" is truthy in Python and JavaScript. Treat any unrecognized value as unknown. A request refused for lack of credits reports insufficient_credits.

Reconcile charges

Provider payloads may include their own cost or usage numbers; those are not the Comfy charge. X-Comfy-Credits-Used is available only for some models and successful responses. When Router replays a result for the same Idempotency-Key, it repeats the original header with Idempotent-Replayed: true. The call is still charged once, so do not count a replayed header again. An absent header does not mean the call was free. Use workspace usage and invoices for reconciliation, and preserve the request ID when investigating a charge.

Next