Skip to main content
In this tutorial, you will learn how to deploy a running ComfyUI on Runpod, submit image generation jobs using workflow JSON, monitor their progress, and decode the resulting images. Runpod’s Serverless platform allows you to run AI/ML models in the cloud without managing infrastructure, automatically scaling resources as needed. ComfyUI is a powerful node-based interface for Stable Diffusion that provides fine-grained control over the image generation process through customizable workflows.

Requirements

Before starting this tutorial you’ll need:
  • A Runpod account with available credits.
  • A Runpod API key (available in your user settings).
  • Basic familiarity with command-line tools like curl.
  • Python installed on your system (for the image decoding step).
  • The jq command-line JSON processor (optional but recommended).
  • Basic understanding of JSON structure for workflow configuration.

Step 1: Deploy a ComfyUI Serverless endpoint using the Runpod Hub

The ComfyUI Hub listing comes with the FLUX.1-dev-fp8 model pre-installed and works only with this model when deployed from the Hub.If you want to use a different model, you can also deploy the endpoint using one of these pre-defined Docker images:
  • runpod/worker-comfyui:<version>-base - Clean ComfyUI install with no models.
  • runpod/worker-comfyui:<version>-flux1-schnell - FLUX.1 schnell model.
  • runpod/worker-comfyui:<version>-flux1-dev - FLUX.1 dev model.
  • runpod/worker-comfyui:<version>-sdxl - Stable Diffusion XL model.
  • runpod/worker-comfyui:<version>-sd3 - Stable Diffusion 3 medium model.
Replace <version> with the latest release version from GitHub Releases.If you need a model that’s not listed here, or have your own LoRA, or need custom nodes, you can use this customization guide to create your own custom .
  1. Navigate to the ComfyUI Hub listing in the Runpod web interface.
  2. Click Deploy [VERSION_NUMBER], then click Next and then Create Endpoint to confirm. This creates a fully configured endpoint with the FLUX.1-dev-fp8 model pre-installed and appropriate GPU settings for running ComfyUI workflows.
  3. On the endpoint page, make a note of the Endpoint ID. You’ll need this value to submit jobs and retrieve results. You can find your endpoint by navigating to Resources > Serverless in the left-hand navigation and clicking the relevant card to view the endpoint detail page. The Endpoint ID is displayed below the Quick Start section, or you can find it at the end of the page URL.
Once deployed, your endpoint will be assigned a unique ID (e.g. 32vgrms732dkwi). Your endpoint URL will follow this pattern: https://api.runpod.ai/v2/ENDPOINT_ID/run for asynchronous requests.

Step 2: Prepare your ComfyUI workflow

ComfyUI uses workflow JSON to define the image generation process. The workflow contains nodes that represent different steps in the generation pipeline, such as loading models, encoding prompts, and saving images. On your local machine, create a file called comfyui_workflow.json with the following FLUX.1-dev-fp8 workflow:
This workflow defines a complete image generation pipeline using the FLUX.1-dev-fp8 model. Key components include:
  • Node 6: Encodes the positive text prompt using CLIP.
  • Node 30: Loads the FLUX.1-dev-fp8 checkpoint.
  • Node 31: Performs the sampling process with specified parameters.
  • Node 8: Decodes the latent image to a viewable format.
  • Node 9/40: Saves the generated image.
You can customize the prompt by modifying the text field in node 6, or adjust generation parameters like steps, cfg, width, and height in their respective nodes.

Step 3: Submit your first job

Use the /run endpoint to submit an asynchronous job that will generate an image based on your ComfyUI workflow. Replace ENDPOINT_ID with your actual endpoint ID and YOUR_API_KEY with your Runpod API key in the following command:
The API will respond immediately with a job ID and status. You’ll receive a response similar to this:
The job ID is crucial for tracking your request’s progress. Save this ID as you’ll need it to check the status and retrieve results.

Step 4: Monitor job progress

Check your job’s status using the /status endpoint with the job ID you received in the previous step. Use the following command to check your job’s progress, replacing the placeholders (ENDPOINT_ID, JOB_ID, and YOUR_API_KEY) with your actual values:
While your job is processing, you’ll receive a response indicating the current status:
The delayTime field shows how long the job waited in the queue before processing began, measured in milliseconds.

Step 5: Retrieve completed results

Continue polling the status endpoint until the status changes to COMPLETED. Once your job completes, the status endpoint will return the generated image data encoded in base64 format. When your job finishes successfully, you’ll receive a response containing the output:
The executionTime field shows how long the actual image generation took, while delayTime indicates the initial queue wait time. Both values are in milliseconds. To save the complete response for processing, use this command:
You have up to 30 minutes to retrieve your results via the status endpoint, after which results will be automatically deleted for security.

Step 6: Decode and save your image

Now we’ll convert the base64-encoded image data into a viewable image file using Python. Create a Python script called decode_comfyui_image.py to decode the base64 image data from your JSON response:
Run the script to decode the image data and save it as a PNG file:
You should see the following output:
Congratulations! You’ve successfully used Runpod’s Serverless platform to generate an AI image using ComfyUI with the FLUX.1-dev-fp8 model. You now understand the complete workflow for submitting ComfyUI jobs, monitoring their progress, and retrieving results.

Understanding ComfyUI workflows

ComfyUI workflows are JSON structures that define the image generation pipeline through interconnected nodes. Each node has:
  • Inputs: Parameters and connections to other nodes.
  • Class type: The operation this node performs.
  • Meta information: Human-readable titles and descriptions.
You can create custom workflows by modifying node parameters or opening the ComfyUI interface in a and exporting the workflow to JSON. To learn more about creating your own ComfyUI workflows, see the ComfyUI documentation.

Next steps

Now that you’ve learned how to generate images with ComfyUI on Serverless, you can explore these resources:
  • runpod-workers/worker-comfyui: Advanced configuration options for the ComfyUI Serverless worker.
  • ComfyUI-to-API: A community tool that analyzes your ComfyUI workflows and automatically generates a deployment-ready GitHub repository with Dockerfile and dependencies.