Router 支持的功能
队列提交
同步路由在模型运行期间会一直保持连接;对于异步提供商,Router 会提交任务并在内部轮询。排队式投递(提交、获取request_id、轮询、收集)则是另一种选择:参见队列投递。它的作用域限定在凭据所属的工作区内,因此需要使用在你的 Comfy 工作区中创建的密钥。没有工作区的传统密钥、自带密钥的请求,或队列无法运行的模型,都会在提交路由上返回 403 和 not_enabled。两种模式都不提供回调或 webhook。
如果你的请求无法保持打开足够长的时间,就把它放入队列。当你需要使用提供商自己的提交与轮询控制时,请使用合作伙伴代理。
目前有两个模型仅支持同步方式,若将它们提交到队列,会被以 403 / not_enabled 拒绝:elevenlabs/eleven_sfx_v2 和 elevenlabs/eleven_v3。它们返回的是原始音频字节,而不是 JSON 结果文档,队列投递无处存储这些内容。请在同步路由上运行它们,该路由会正常返回这些字节。
LTX v1 的文生视频和图生视频操作出于同样的原因返回原始视频字节,队列投递同样无法存储它们,但它们只能通过位于 /proxy/ltx/v1/… 的合作伙伴代理访问,而不能通过 Router 模型 ID 访问:每个 ltx/* 目录模型都会解析为可排队的 v2 提交与轮询操作。
调用会在服务器截止时间被中断
Router 的默认截止时间是 10 分钟,具体可由部署方配置。请将你的客户端超时设置为大于该值,这样 Router 才能先返回它自己的错误和请求 ID。504 / deadline_exceeded 表示 Router 停止了等待;504 / provider_timeout 表示提供商超时。超时或连接中断并不能证明某次生成未被计费,也不会取消提供商已接受的工作。在重试之前,请先阅读超时与收费。
恢复取决于提供商
对于一次已被接受的「提交并轮询」式生成,Router 可以保留提供商句柄。复用同一个Idempotency-Key 即可稍后收集结果;已完成且可重放的响应也可以从该 key 记录中获取。
并非每个已断开连接的调用都可恢复。在发送之前先保存请求和 key,然后使用重试结果表。使用新的 key 会创建新的调用,并可能产生额外费用。
请求正文设有上限
Router 会拒绝正文大于 100 MiB(104,857,600 字节) 的请求。该上限针对你发送的原始字节,在 Router 解析任何内容之前测量,因此适用于所有路由,也适用于同步投递与队列投递。 调用方通常会在内联媒体上遇到这一限制。Base64 编码会将二进制数据膨胀约 4/3,因此,携带编码媒体的正文在实际图像、音频或视频字节约为 75 MB 时仍能通过上限。要按编码后的字符串计算大小,而不是按磁盘上的文件,并统计一次调用中的所有输入:一个携带两张参考图像的请求会同时在两者上消耗额度,提示词、参数和 JSON 结构也计入其中。 拒绝的形态。 返回413,并在 X-Comfy-Error-Type 上带有 invalid_input,X-Comfy-Request-Id 也像其他任何响应一样设置。正文是一个 RouterErrorResponse,其 detail 描述被超出的是哪项上限。应根据 error_type 进行分支处理,而不是解析 detail;如果 API 返回值与本文在数值上出现分歧,以 API 返回值为准。Router 在分发任何内容之前就抛出拒绝,因此没有运行生成,也没有产生费用。
该上限适用于每个请求,无论其是否携带 Idempotency-Key。它不是幂等性限制,重新发送相同的键不会改变结果:过大的正文在每次尝试时都过大。
提供商可能会施加自己的更低限制,而在这一上限处通常正是如此。 提供商发布各自对内联媒体的上限,具有约束力的限制取两者中较小者。例如,Google 的模型最多接受 20 MB(十进制,20,000,000 字节)的内联负载,Google 模型页面上的 Size limit: 20MB 一行,就是引自 Google 自身规范的 Google 逐字段限制,而不是 Router 对整个请求正文的限制。Router 的上限被有意设在其所对接的每一项合作伙伴限制之上,因此对于单个内联资产,通常你先碰到的是提供商自己的限制;而 Router 的上限在单次正文包含多个资产时才会起作用。能通过 Router 的上限但超出提供商自身限制的正文,会被提供商而非 Router 拒绝,并会作为提供商错误返回,而不是 413。
请求按调用方进行速率限制
请求速率限制适用于调用以及目录/schema 读取,包括在生成之前就被拒绝的请求。它跟随经过身份验证的调用方,而不是来源 IP。使用调用方自己的提供商密钥的调用不受此限制;提供商自身的限制仍然适用。
缓存目录与 schema 读取。使用
ETag 和 If-None-Match 重新验证 schema。重试字段与承诺支出字段见响应头。
调用运行期间没有进度更新
Router 只返回最终响应,不提供流式 token、服务器发送事件、百分比更新或中间预览帧。在请求过程中,提供商的内部轮询状态不会被转发。 请显示一个不确定进度的指示器。如果你需要进度或流式输出,请使用能够暴露这些信息的合作伙伴代理操作。Comfy 费用与用量
响应可能包含提供商的用量或成本字段。它们并不代表通用的 Comfy 计费。X-Comfy-Credits-Used 是可选的,并且不会被重放。请使用 Comfy 平台查询余额、用量和发票。
目录提供的是计费事实,包括 billing.charges_on_policy_rejection,而不是价格。请显式处理 yes、no 和 unknown。参见计费。
Router 并不覆盖每个合作伙伴操作
Router 运行模型。文件上传、账户读取、资产管理、流式传输以及提供商任务控制可能需要/proxy/… 下的合作伙伴代理路由。请查阅 Comfy API 规范;支持情况因提供商而异。
模型输出与存储资产
输入和输出字段因模型而异。从提供商 SDK 或代理迁移时,路由方式以及结果读取方式都可能发生变化。 部分资产会重新托管到 Comfy 存储上,其他资产则是提供商 URL 或内联字节。关于生命周期和重放行为,请参阅结果资产。下一步
快速入门
通过 Comfy Router 生成你的第一张图像。
使用 Router API
选择一个模型、查看其 schema,并处理结果与重试。