> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-comfy-docs-comfyapi-search.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Comfy Router capabilities and limits

> Choose Router or a partner proxy, plan for long-running calls, and understand recovery, rate limits, and asset storage.

Router supports synchronous and queued delivery. Synchronous delivery returns the finished result in one response. Queued delivery returns a request handle and is rolling out by workspace.

## What Router supports

| Requirement                           | Router support                                                                                                                                                                                            | Alternative or next step                                                                                |
| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Generate with one request             | `POST /v2/models/{provider}/{model}` returns the finished result.                                                                                                                                         | Start with the [Quickstart](/development/comfy-router/quickstart).                                      |
| Submit a request and collect it later | Supported through `POST /v2/models/{provider}/{model}/requests` and rolling out by workspace.                                                                                                             | See [Queued delivery](/development/comfy-router/queue).                                                 |
| Show progress or stream output        | Queued delivery reports queue state and can include queue position, but no percentage progress, streaming output, or preview frames.                                                                      | Poll the returned `status_url`, or use a supported proxy operation for provider-specific progress.      |
| Recover after a lost connection       | After receiving a queued request handle, use its returned URLs. If submission is interrupted before that, retry with the same idempotency key. Synchronous calls can sometimes be collected the same way. | Preserve the idempotency key and follow [retry guidance](/development/comfy-router/api#retry-outcomes). |
| Reconcile Comfy charges               | No universal Comfy cost or credit-balance field on the response.                                                                                                                                          | Use [workspace billing](https://platform.comfy.org).                                                    |
| Store results permanently             | Asset URLs can expire, including rehosted and replayed URLs.                                                                                                                                              | Download the assets; see [result assets](/development/comfy-router/reference#result-assets).            |

## Queued delivery availability

Queued delivery returns a `request_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](/development/comfy-router/queue) 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](/development/comfy-router/api#timeouts-and-collection) before retrying.

<span id="no-way-to-resume-a-call-you-lost" />

## Recovery depends on the provider

Router can retain a provider handle for an accepted submit-and-poll generation. Reuse the same `Idempotency-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](/development/comfy-router/api#retry-outcomes). A new key creates a new call and may incur another charge.

## Requests are rate limited per caller

| Response                             | Cause                                                                                  | Action                                                                                             |
| ------------------------------------ | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `429` / `concurrency_limit_exceeded` | Too many concurrent calls, or insufficient headroom under the committed-spend ceiling. | Reduce concurrent work. The spend headers distinguish the spend ceiling from the call-count limit. |
| `429` / `rate_limited`               | The request allowance is exhausted.                                                    | Wait for `Retry-After` before retrying.                                                            |

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](/development/comfy-router/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.

<span id="no-cost-or-credit-figures-on-a-response" />

## 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](/development/comfy-router/api#model-billing-facts).

## 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](/openapi-v2.yaml); 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](/development/comfy-router/reference#result-assets) for lifetimes and replay behavior.

## Next

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/development/comfy-router/quickstart">
    Generate your first image through Comfy Router.
  </Card>

  <Card title="Using the Router API" icon="code" href="/development/comfy-router/api">
    Choose a model, inspect its schema, and handle results and retries.
  </Card>
</CardGroup>
