Skip to main content

comfy-ui-api-workflow

Build ComfyUI workflows in Python and export them in the API format that ComfyUI's POST /prompt endpoint runs.

  • 618 ComfyUI nodes as Python classes, from KSampler to Wan, LTXV, Flux, 3D and partner API nodes.
  • Checked as you build: input types, min/max ranges, combo choices, output names, socket types (no LATENT into a CLIP input) and cycles. A bad workflow fails in your code with a clear message, not in the ComfyUI queue.
  • Pipelines: reusable groups of nodes with typed parameters and named outputs, added all or nothing.
  • Round trip: load a workflow saved with ComfyUI's Export (API), change it from Python, export it again.
  • No dependencies. Python 3.10+.

Installation

pip install git+https://github.com/fabioantonioastore/comfy-ui-api-workflow

Quick start

import json

from comfy_ui_api_workflow import Workflow, nodes

workflow = Workflow()
checkpoint = workflow.add_node(
    nodes.model.loaders.CheckpointLoaderSimple, ckpt_name="sd_xl_base_1.0.safetensors"
)
prompt = workflow.add_node(
    nodes.model.conditioning.CLIPTextEncode,
    text="a lighthouse at dusk",
    clip=checkpoint.output["CLIP"],
)
negative = workflow.add_node(
    nodes.model.conditioning.CLIPTextEncode, text="blurry", clip=checkpoint.output["CLIP"]
)
latent = workflow.add_node(
    nodes.model.latent.EmptyLatentImage, width=1024, height=1024, batch_size=1
)
sampler = workflow.add_node(
    nodes.model.sampling.KSampler,
    model=checkpoint.output["MODEL"],
    positive=prompt.output["CONDITIONING"],
    negative=negative.output["CONDITIONING"],
    latent_image=latent.output["LATENT"],
    sampler_name="dpmpp_2m",
    scheduler="karras",
    steps=25,
    cfg=7.0,
)
image = workflow.add_node(
    nodes.model.latent.VAEDecode, samples=sampler.output["LATENT"], vae=checkpoint.output["VAE"]
)
workflow.add_node(nodes.image.SaveImage, images=image.output["IMAGE"], filename_prefix="lighthouse")

print(json.dumps(workflow.get_comfy_ui_workflow_format(), indent=2))

The printed JSON is what ComfyUI's /prompt endpoint takes as prompt.

Mistakes are caught right away:

from comfy_ui_api_workflow import Workflow, errors, nodes

workflow = Workflow()
latent = workflow.add_node(nodes.model.latent.EmptyLatentImage, width=512, height=512)

try:
    latent.width = 8
except errors.node.InvalidNodeParameterValue as error:
    print(error)  # width must be in closed range: [16, 16384]

Documentation

  • User guide: workflows, links, validation, changing nodes, pipelines, loading and exporting, running on ComfyUI, errors.
  • API reference: every public class, method, attribute and error.
  • Custom nodes: classes for nodes from custom node packs.
  • Node catalog: every node with its inputs and outputs.
  • examples/: runnable scripts with pipelines and nodes.

Development

hatch test             # unit tests (RunPod tests are skipped)
hatch test --cover     # with coverage
hatch test -- --runpod # also send real jobs to the RunPod endpoint in .env (paid GPU)

License

MIT

Metadata

Release files for comfy-ui-api-workflow 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for comfy-ui-api-workflow 0.0.1
File Size Uploaded
comfy_ui_api_workflow-0.0.1.tar.gz 104.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for comfy-ui-api-workflow 0.0.1
File Interpreter ABI Platform
comfy_ui_api_workflow-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 303.6 kB

Release files / comfy_ui_api_workflow-0.0.1.tar.gz

Download URL comfy_ui_api_workflow-0.0.1.tar.gz
Size 104.5 kB
Tags Source
SHA-256 checksum
How to use checksums
039978578ed613b136e320549a941d0b05318f35748dd0a90c4ee52fd3e36a2a
BLAKE2b-256 checksum
How to use checksums
e9a66b292233687924e5059607137faf25143163621b125bd36dfa958a6e6888
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / comfy_ui_api_workflow-0.0.1-py3-none-any.whl

Download URL comfy_ui_api_workflow-0.0.1-py3-none-any.whl
Size 199.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a53d8b73f3becc6735cb8cc583dc7268b5acd8c07c4c04ebdd9b0c2f6646ad6a
BLAKE2b-256 checksum
How to use checksums
c0956b2e0b43e58aaacbfdcd4172db7607bd930447f829fc2a4d6b7fa02cb279
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page