From 093179cb3b79582f78d1a9caee985c1832b0b0bf Mon Sep 17 00:00:00 2001 From: Adam Ladachowski Date: Tue, 17 Feb 2026 01:46:26 +0100 Subject: [PATCH] Add /api/comfyui/image endpoint for fetching generated images Allows web clients to retrieve images by filename after generation. Co-Authored-By: Claude Opus 4.5 --- tensors/server/comfyui_api_routes.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tensors/server/comfyui_api_routes.py b/tensors/server/comfyui_api_routes.py index fa25502..20a629a 100644 --- a/tensors/server/comfyui_api_routes.py +++ b/tensors/server/comfyui_api_routes.py @@ -6,6 +6,7 @@ import logging from typing import Any from fastapi import APIRouter, HTTPException, Query +from fastapi.responses import Response from pydantic import BaseModel as PydanticBaseModel from pydantic import Field @@ -13,6 +14,7 @@ from tensors.comfyui import ( clear_queue, generate_image, get_history, + get_image, get_loaded_models, get_queue_status, get_system_stats, @@ -272,6 +274,30 @@ def comfyui_workflow(request: WorkflowRequest) -> dict[str, Any]: } +@router.get("/image/{filename}") +def comfyui_image( + filename: str, + subfolder: str = Query(default="", description="Subfolder within output directory"), + folder_type: str = Query(default="output", description="Folder type: output, input, temp"), +) -> Response: + """Fetch a generated image from ComfyUI. + + Use this to retrieve images by filename after generation. + """ + image_data = get_image(filename=filename, subfolder=subfolder, folder_type=folder_type) + if image_data is None: + raise HTTPException(status_code=404, detail="Image not found") + + # Determine content type from filename + content_type = "image/png" + if filename.lower().endswith(".jpg") or filename.lower().endswith(".jpeg"): + content_type = "image/jpeg" + elif filename.lower().endswith(".webp"): + content_type = "image/webp" + + return Response(content=image_data, media_type=content_type) + + def create_comfyui_api_router() -> APIRouter: """Return the ComfyUI API router.""" return router