Comfy API v2 es una API versionada. Los cambios dentro de v2 son aditivos; los cambios que rompen la compatibilidad se publican como v3.
Dónde se ejecuta la v2
Tres superficies sirven la misma API, así que una misma integración puede pasar de una a otra cambiando la URL base. Comfy Cloud. El servicio administrado multiinquilino enhttps://cloud.comfy.org. Crea una Clave API y podrás enviar cualquier flujo de trabajo. Las funciones específicas de Cloud, como los créditos, la exploración de modelos y la gestión de la cola, están en la API de Cloud v1, no en la v2.
Despliegues de Comfy API. Un entorno que despliegues a través de la Developer Platform obtiene su propio endpoint dedicado en https://{deployment}.run.comfy.app, que sirve la misma API v2 con la misma Clave API. Un despliegue de Comfy API ejecuta flujos de trabajo contra un único entorno fijado, por lo que escala de forma independiente y GET /workflow devuelve el gráfico ejecutado. Consulta la guía de despliegue de Comfy API para crear y desplegar.
ComfyUI de código abierto, mediante el proxy. Un ComfyUI autoalojado habla v2 a través de comfy-api-proxy, un pequeño servicio de código abierto que se ejecuta junto a él:
127.0.0.1:8188 y sirve la API v2 en 127.0.0.1:8189, enlazándose solo a loopback. La autenticación está desactivada de forma predeterminada, con un token bearer estático opcional. Consulta Tu propio ComfyUI en la guía del SDK para ver los detalles de configuración.
Principios de diseño
- Primero, sondea. Todas las capacidades son accesibles mediante sondeo GET simple. El flujo SSE es una mejora en vivo, nunca la fuente de la verdad.
- Todo es reanudable. El envío es idempotente, y puedes recuperar por ID el estado de la tarea y las salidas hasta
expires_at. La URL que recibes para una salida tiene una vida útil más corta que eso: consulta URLs de salida y cuánto tiempo duran. - Recursos con direccionamiento por contenido. Los recursos son registros identificados por UUID sobre blobs indexados por un hash blake3 calculado por el servidor, por lo que las entradas idénticas no se suben dos veces.
- Sigue los enlaces, no construyas URLs. Las respuestas incorporan sus URLs de seguimiento.
URL base
Categorías de endpoints
URL de salida y cuánto tiempo duran
Tres vigencias distintas gobiernan «la URL de mi salida» y no son el mismo número. Cualquier aplicación que muestre salidas a sus propios usuarios tiene que planificar las tres.Las dos formas de URL
La consecuencia práctica:
Output.url no es un enlace que puedas compartir. Si la pones en un <img src> que cargan los navegadores de tus usuarios, reciben un 401, porque su navegador no lleva tu clave API. La URL firmada es la que sí puedes entregar.
ComfyUI autoalojado detrás de comfy-api-proxy no tiene URL firmadas en absoluto. El proxy sirve los bytes desde el endpoint de contenido, se aplica la autenticación normal y los SDK informan la expiración como null (Python: None).
Leer la expiración de la URL firmada
En los despliegues de Comfy Cloud y Comfy API, el servidor emite una URL firmada con una validez de aproximadamente 6 horas. Ese número es una configuración del servidor y no forma parte del contrato de la API, así que trátalo como un orden de magnitud y nunca lo codifiques de forma fija. Lee la expiración desde la respuesta que recibiste:url_expires_aten una respuestaAssetes la expiración real de laurlde esa misma respuesta.getDownloadUrl()la devuelve junto con la URL, comoexpiresAten TypeScript yexpires_aten Python.
El url_expires_at de la salida de una tarea es otro número
El url_expires_at de una entrada de los outputs de una tarea no es la expiración de la URL firmada. En Comfy Cloud repite el expires_at de la propia tarea, que hoy es el created_at de la tarea más una ventana fija de 30 días.
Esa ventana es un marcador de posición. La plataforma todavía no tiene una política de retención ni de recolección de basura de tareas detrás de ese valor, así que los 30 días son un sustituto que permite que el campo no sea nulo, no un compromiso sobre cuánto tiempo una salida sigue siendo accesible. No lo interpretes como una promesa ni bases una caché en él. Esta página se actualizará si una política de retención real lo reemplaza.
Mostrar una salida en tu propio producto
Para seguir mostrando una salida un día después, haz una de estas cosas:- Realoja los bytes. Descarga la salida una vez y cópiala en tu propio almacenamiento. La mayoría de las aplicaciones terminan aquí.
- Vuelve a emitirla a demanda. Persiste el
iddel recurso y resuélvelo a una URL nueva (GET /api/v2/assets/{id}, ogetDownloadUrl()) en el momento en que renderizas, y usa esa URL de inmediato. - Usa un proxy. Obtén
Output.urldesde tu propio backend, que ya tiene la clave API, y transmite los bytes a tu usuario.