ComfyUI/comfy_api_nodes
Sasbom 0ef5557d6a Add QOL feature for changing the custom nodes folder location through cli args.
bugfix: fix typo in apply_directory for custom_nodes_directory

allow for PATH style ';' delimited custom_node directories.

change delimiter type for seperate folders per platform.

feat(API-nodes): move Rodin3D nodes to new client; removed old api client.py (#10645)

Fix qwen controlnet regression. (#10657)

Enable pinned memory by default on Nvidia. (#10656)

Removed the --fast pinned_memory flag.

You can use --disable-pinned-memory to disable it. Please report if it
causes any issues.

Pinned mem also seems to work on AMD. (#10658)

Remove environment variable.

Removed environment variable fallback for custom nodes directory.

Update documentation for custom nodes directory

Clarified documentation on custom nodes directory argument, removed documentation on environment variable

Clarify release cycle. (#10667)

Tell users they need to upload their logs in bug reports. (#10671)

mm: guard against double pin and unpin explicitly (#10672)

As commented, if you let cuda be the one to detect double pin/unpinning
it actually creates an asyc GPU error.

Only unpin tensor if it was pinned by ComfyUI (#10677)

Make ScaleROPE node work on Flux. (#10686)

Add logging for model unloading. (#10692)

Unload weights if vram usage goes up between runs. (#10690)

ops: Put weight cast on the offload stream (#10697)

This needs to be on the offload stream. This reproduced a black screen
with low resolution images on a slow bus when using FP8.

Update CI workflow to remove dead macOS runner. (#10704)

* Update CI workflow to remove dead macOS runner.

* revert

* revert

Don't pin tensor if not a torch.nn.parameter.Parameter (#10718)

Update README.md for Intel Arc GPU installation, remove IPEX (#10729)

IPEX is no longer needed for Intel Arc GPUs.  Removing instruction to setup ipex.

mm/mp: always unload re-used but modified models (#10724)

The partial unloader path in model re-use flow skips straight to the
actual unload without any check of the patching UUID. This means that
if you do an upscale flow with a model patch on an existing model, it
will not apply your patchings.

Fix by delaying the partial_unload until after the uuid checks. This
is done by making partial_unload a model of partial_load where extra_mem
is -ve.

qwen: reduce VRAM usage (#10725)

Clean up a bunch of stacked and no-longer-needed tensors on the QWEN
VRAM peak (currently FFN).

With this I go from OOMing at B=37x1328x1328 to being able to
succesfully run B=47 (RTX5090).

 Update Python 3.14 compatibility notes in README  (#10730)

Quantized Ops fixes (#10715)

* offload support, bug fixes, remove mixins

* add readme

add PR template for API-Nodes (#10736)

feat: add create_time dict to prompt field in /history and /queue (#10741)

flux: reduce VRAM usage (#10737)

Cleanup a bunch of stack tensors on Flux. This take me from B=19 to B=22
for 1600x1600 on RTX5090.

Better instructions for the portable. (#10743)

Use same code for chroma and flux blocks so that optimizations are shared. (#10746)

Fix custom nodes import error. (#10747)

This should fix the import errors but will break if the custom nodes actually try to use the class.

revert import reordering

revert imports pt 2

Add left padding support to tokenizers. (#10753)

chore(api-nodes): mark OpenAIDalle2 and OpenAIDalle3 nodes as deprecated (#10757)

Revert "chore(api-nodes): mark OpenAIDalle2 and OpenAIDalle3 nodes as deprecated (#10757)" (#10759)

This reverts commit 9a02382568.

Change ROCm nightly install command to 7.1 (#10764)
2025-11-17 06:16:21 +01:00
..
apis Add QOL feature for changing the custom nodes folder location through cli args. 2025-11-17 06:16:21 +01:00
util Add QOL feature for changing the custom nodes folder location through cli args. 2025-11-17 06:16:21 +01:00
__init__.py [API nodes] Add backbone for supporting api nodes in ComfyUI (#7745) 2025-04-23 02:18:08 -04:00
canary.py Refuse to load api nodes on old pyav version. (#7981) 2025-05-07 17:27:16 -04:00
mapper_utils.py More API Nodes (#7956) 2025-05-06 04:23:00 -04:00
nodes_bfl.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_bytedance.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_gemini.py convert Gemini API nodes to V3 schema (#10476) 2025-10-25 14:35:30 -07:00
nodes_ideogram.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_kling.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_ltxv.py added 12s-20s as available output durations for the LTXV API nodes (#10570) 2025-11-01 12:13:39 -07:00
nodes_luma.py use new API client in Luma and Minimax nodes (#10528) 2025-10-29 11:14:56 -07:00
nodes_minimax.py use new API client in Luma and Minimax nodes (#10528) 2025-10-29 11:14:56 -07:00
nodes_moonvalley.py feat(api-nodes): network client v2: async ops, cancellation, downloads, refactor (#10390) 2025-10-23 22:37:16 -07:00
nodes_openai.py convert nodes_openai.py to V3 schema (#10604) 2025-11-03 00:28:13 -08:00
nodes_pika.py feat(Pika-API-nodes): use new API client (#10608) 2025-11-03 00:29:08 -08:00
nodes_pixverse.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_recraft.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_rodin.py Add QOL feature for changing the custom nodes folder location through cli args. 2025-11-17 06:16:21 +01:00
nodes_runway.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_sora.py feat(api-nodes): network client v2: async ops, cancellation, downloads, refactor (#10390) 2025-10-23 22:37:16 -07:00
nodes_stability.py convert StabilityAI to use new API client (#10582) 2025-11-01 12:14:06 -07:00
nodes_tripo.py convert Tripo API nodes to V3 schema (#10469) 2025-10-24 15:48:34 -07:00
nodes_veo2.py feat(api-nodes): network client v2: async ops, cancellation, downloads, refactor (#10390) 2025-10-23 22:37:16 -07:00
nodes_vidu.py use new API client in Pixverse and Ideogram nodes (#10543) 2025-10-29 23:49:03 -07:00
nodes_wan.py feat(api-nodes): network client v2: async ops, cancellation, downloads, refactor (#10390) 2025-10-23 22:37:16 -07:00
README.md Fix the broken link (#9060) 2025-07-26 17:25:33 -04:00
redocly-dev.yaml More API Nodes (#7956) 2025-05-06 04:23:00 -04:00
redocly.yaml More API Nodes (#7956) 2025-05-06 04:23:00 -04:00

ComfyUI API Nodes

Introduction

Below are a collection of nodes that work by calling external APIs. More information available in our docs.

Development

While developing, you should be testing against the Staging environment. To test against staging:

Install ComfyUI_frontend

Follow the instructions here to start the frontend server. By default, it will connect to Staging authentication.

Hint: If you use --front-end-version argument for ComfyUI, it will use production authentication.

python run main.py --comfy-api-base https://stagingapi.comfy.org

To authenticate to staging, please login and then ask one of Comfy Org team to whitelist you for access to staging.

API stubs are generated through automatic codegen tools from OpenAPI definitions. Since the Comfy Org OpenAPI definition contains many things from the Comfy Registry as well, we use redocly/cli to filter out only the paths relevant for API nodes.

Redocly Instructions

Tip When developing locally, use the redocly-dev.yaml file to generate pydantic models. This lets you use stubs for APIs that are not marked Released yet.

Before your API node PR merges, make sure to add the Released tag to the openapi.yaml file and test in staging.

# Download the OpenAPI file from staging server.
curl -o openapi.yaml https://stagingapi.comfy.org/openapi

# Filter out unneeded API definitions.
npm install -g @redocly/cli
redocly bundle openapi.yaml --output filtered-openapi.yaml --config comfy_api_nodes/redocly-dev.yaml --remove-unused-components

# Generate the pydantic datamodels for validation.
datamodel-codegen --use-subclass-enum --field-constraints --strict-types bytes --input filtered-openapi.yaml --output comfy_api_nodes/apis/__init__.py --output-model-type pydantic_v2.BaseModel

Merging to Master

Before merging to comfyanonymous/ComfyUI master, follow these steps:

  1. Add the "Released" tag to the ComfyUI OpenAPI yaml file for each endpoint you are using in the nodes.
  2. Make sure the ComfyUI API is deployed to prod with your changes.
  3. Run the code generation again with redocly.yaml and the production OpenAPI yaml file.
# Download the OpenAPI file from prod server.
curl -o openapi.yaml https://api.comfy.org/openapi

# Filter out unneeded API definitions.
npm install -g @redocly/cli
redocly bundle openapi.yaml --output filtered-openapi.yaml --config comfy_api_nodes/redocly.yaml --remove-unused-components

# Generate the pydantic datamodels for validation.
datamodel-codegen --use-subclass-enum --field-constraints --strict-types bytes --input filtered-openapi.yaml --output comfy_api_nodes/apis/__init__.py --output-model-type pydantic_v2.BaseModel