What Router supports
Queued delivery availability
Queued delivery returns arequest_id and URLs for status, result collection, and cancellation. It is rolling out by workspace; workspaces without access receive 403 with not_enabled. Cancellation is best effort, and Router does not provide a completion webhook. See Queued delivery for examples and the full lifecycle.
Synchronous calls are cut off at a server deadline
Router’s default deadline is 10 minutes, configurable by the deployment. Set your client timeout above it so Router can return its error and request ID first.504 / deadline_exceeded means Router stopped waiting; 504 / provider_timeout means the provider timed out. A timeout or lost connection does not prove that a generation was unbilled, and it does not cancel accepted provider work. Read timeouts and collection before retrying.
Recovery depends on the provider
Router can retain a provider handle for an accepted submit-and-poll generation. Reuse the sameIdempotency-Key to collect it later; completed replayable responses can also come from the key record.
Not every disconnected call is recoverable. Preserve the request and key before sending, then use the retry outcome table. A new key creates a new call and may incur another charge.
Requests are rate limited per caller
The request-rate limit applies to invocation and catalog/schema reads, including requests refused before generation. It follows the authenticated caller, not the source IP. Calls with the caller’s provider key are exempt; provider limits still apply.
Cache catalog and schema reads. Revalidate schemas with
ETag and If-None-Match. See Headers for retry and committed-spend fields.
No live progress while a request runs
Synchronous delivery returns only the final response. Queued delivery exposes queue state and can include queue position, but neither mode provides streamed tokens, server-sent events, percentage updates, or intermediate preview frames. A provider’s internal progress is not forwarded. Show an indeterminate progress indicator after a queued request begins running. If you need provider-specific progress or streaming, use a partner-proxy operation that exposes it.Comfy charges and usage
The response can contain provider usage or cost fields. They do not represent a universal Comfy charge.X-Comfy-Credits-Used is optional and is not replayed. Use the Comfy platform for balances, usage, and invoices.
The catalog provides billing facts, including billing.charges_on_policy_rejection, rather than prices. Handle yes, no, and unknown explicitly. See billing.
Router does not cover every partner operation
Router runs models. File uploads, account reads, asset management, streaming, and provider job controls can require partner-proxy routes under/proxy/…. Check the Comfy API specification; support varies by provider.
Model outputs and stored assets
Input and output fields vary by model. Moving from a provider SDK or proxy can change both the route and how you read the result. Some assets are rehosted on Comfy storage; others are provider URLs or inline bytes. See Result assets for lifetimes and replay behavior.Next
Quickstart
Generate your first image through Comfy Router.
Using the Router API
Choose a model, inspect its schema, and handle results and retries.