Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
ff452f9
Add Ideogram generate node.
robinjhuang Apr 9, 2025
daa25d1
Add staging api.
robinjhuang Apr 15, 2025
7922ecd
Add API_NODE and common error for missing auth token (#5)
robinjhuang Apr 16, 2025
501001b
Add Minimax Video Generation + Async Task queue polling example (#6)
robinjhuang Apr 19, 2025
ded70bb
[Minimax] Show video preview and embed workflow in ouput (#7)
christian-byrne Apr 20, 2025
da72f71
Remove uv.lock
robinjhuang Apr 22, 2025
a4aaf8a
Remove polling operations.
robinjhuang Apr 22, 2025
81f55fd
Revert "Remove polling operations."
robinjhuang Apr 22, 2025
a8caf1f
Update stubs.
robinjhuang Apr 22, 2025
c92bcbc
Added Ideogram and Minimax back in.
robinjhuang Apr 24, 2025
788bc2f
Added initial BFL Flux 1.1 [pro] Ultra node (#11)
Kosinkadink Apr 28, 2025
864d0f7
Add --comfy-api-base launch arg (#13)
Apr 28, 2025
019ec67
Add instructions for staging development. (#14)
robinjhuang Apr 28, 2025
66d42af
remove validation to make it easier to run against LAN copies of the API
thot-experiment Apr 28, 2025
442dc70
Manually add BFL polling status response schema (#15)
christian-byrne Apr 28, 2025
2018a0d
Add function for uploading files. (#18)
robinjhuang Apr 29, 2025
f8f2f3c
Add Luma nodes (#16)
Kosinkadink Apr 29, 2025
e9fa061
Refactor util functions (#20)
christian-byrne Apr 29, 2025
4f8b235
Add VIDEO type (#21)
guill Apr 29, 2025
1c15da7
Add rest of Luma node functionality (#19)
Kosinkadink Apr 29, 2025
577423b
Fix image_luma_ref not working (#28)
Kosinkadink Apr 29, 2025
9c7e9d8
[Bug] Remove duplicated option T2V-01 in MinimaxTextToVideoNode (#31)
Apr 29, 2025
acbf26c
Add utils to map from pydantic model fields to comfy node inputs (#30)
christian-byrne Apr 29, 2025
850f5da
add veo2, bump av req (#32)
thot-experiment Apr 29, 2025
e92f6e1
Add Recraft nodes (#29)
Kosinkadink Apr 29, 2025
4a67cdb
Add Kling Nodes (#12)
christian-byrne Apr 29, 2025
557328a
Add Camera Concepts (luma_concepts) to Luma Video nodes (#33)
Kosinkadink Apr 29, 2025
520d5f9
Add Runway nodes (#17)
christian-byrne Apr 29, 2025
ce7d007
Convert Minimax node to use VIDEO output type (#34)
christian-byrne Apr 29, 2025
fb78ec1
Standard `CATEGORY` system for api nodes (#35)
christian-byrne Apr 29, 2025
cc9ce9a
Set `Content-Type` header when uploading files (#36)
christian-byrne Apr 29, 2025
122a4b4
add better error propagation to veo2 (#37)
thot-experiment Apr 30, 2025
d10a125
Add Realistic Image and Logo Raster styles for Recraft v3 (#38)
Kosinkadink Apr 30, 2025
2d4d2f0
Fix runway image upload and progress polling (#39)
christian-byrne Apr 30, 2025
c42295c
Fix image upload for Luma: only include `Content-Type` header field i…
christian-byrne Apr 30, 2025
48a0796
Moved Luma nodes to nodes_luma.py (#47)
Kosinkadink Apr 30, 2025
75611aa
Moved Recraft nodes to nodes_recraft.py (#48)
Kosinkadink Apr 30, 2025
f73c702
Add Pixverse nodes (#46)
Kosinkadink Apr 30, 2025
b121fac
Move and fix BFL nodes to node_bfl.py (#49)
Kosinkadink Apr 30, 2025
31a33a5
Move and edit Minimax node to nodes_minimax.py (#50)
Kosinkadink Apr 30, 2025
a90dd38
Add Minimax Image to Video node + Cleanup (#51)
Kosinkadink Apr 30, 2025
48a0ef6
Add Recraft Text to Vector node, add Save SVG node to handle its outp…
Kosinkadink Apr 30, 2025
814c86d
Added pixverse_template support to Pixverse Text to Video node (#54)
Kosinkadink Apr 30, 2025
9db2688
Added Recraft Controls + Recraft Color RGB nodes (#57)
Kosinkadink Apr 30, 2025
f7c70b3
split remaining nodes out of nodes_api, make utility lib, refactor id…
thot-experiment Apr 30, 2025
1bae2de
Add types and doctstrings to utils file (#64)
christian-byrne Apr 30, 2025
021e64d
Fix: `PollingOperation` progress bar update progress by absolute valu…
christian-byrne Apr 30, 2025
d8d215d
Use common download function in kling nodes module (#67)
christian-byrne Apr 30, 2025
f1eb74f
Fix: Luma video nodes in `api nodes/image` category (#68)
christian-byrne Apr 30, 2025
7d3f693
Set request type explicitly (#66)
christian-byrne Apr 30, 2025
3291883
Add `control_after_generate` to all seed inputs (#69)
christian-byrne Apr 30, 2025
1af6fd5
Fix bug: deleting `Content-Type` when property does not exist (#73)
christian-byrne Apr 30, 2025
ae436ac
Add preview to Save SVG node (#74)
Kosinkadink Apr 30, 2025
3404de6
change default poll interval (#76), rework veo2
thot-experiment Apr 30, 2025
983a165
Add Pixverse and updated Kling types (#75)
christian-byrne Apr 30, 2025
9cb4a89
Added Pixverse Image to VIdeo node (#77)
Kosinkadink Apr 30, 2025
686f227
Add Pixverse Transition Video node (#79)
Kosinkadink Apr 30, 2025
69c7f1b
Proper ray-1-6 support as fix has been applied in backend (#80)
Kosinkadink Apr 30, 2025
d3e0c48
Added Recraft Style - Infinite Style Library node (#82)
Kosinkadink Apr 30, 2025
866afa5
add ideogram v3 (#83)
thot-experiment May 1, 2025
0382220
[Kling] Split Camera Control config to its own node (#81)
christian-byrne May 1, 2025
34ed9ad
Add Pika i2v and t2v nodes (#52)
christian-byrne May 1, 2025
2c0df4d
Temporary Fix for Runway (#87)
christian-byrne May 1, 2025
5891b57
Added Stability Stable Image Ultra node (#86)
Kosinkadink May 1, 2025
8636e32
Remove Runway nodes (#88)
christian-byrne May 1, 2025
552bc92
Fix: Prompt text can't be validated in Kling nodes when using primiti…
christian-byrne May 1, 2025
1f5818a
Fix: typo in node name "Stabiliy" => "Stability" (#91)
christian-byrne May 1, 2025
aad07cb
Add String (Multiline) node (#93)
Kosinkadink May 1, 2025
47babda
Update Pika Duration and Resolution options (#94)
christian-byrne May 1, 2025
8fd2f0e
Change base branch to master. Not main. (#95)
robinjhuang May 1, 2025
24d0e90
Fix UploadRequest file_name param (#98)
Kosinkadink May 1, 2025
5bc1aea
Removed Infinite Style Library until later (#99)
Kosinkadink May 1, 2025
dec4dd9
fix ideogram style types (#100)
thot-experiment May 1, 2025
e710a19
fix multi image return (#101)
thot-experiment May 1, 2025
ae27988
add metadata saving to SVG (#102)
thot-experiment May 1, 2025
7967154
Bump templates version to include API node template workflows (#104)
christian-byrne May 2, 2025
67e9395
Fix: `download_url_to_video_output` return type (#103)
christian-byrne May 2, 2025
f4f2e03
fix 4o generation bug (#106)
thot-experiment May 2, 2025
3957839
Serve SVG files directly (#107)
christian-byrne May 2, 2025
3850c47
Add a bunch of nodes, 3 ready to use, the rest waiting for endpoint s…
Kosinkadink May 2, 2025
e7f2410
Revert "Serve SVG files directly" (#111)
christian-byrne May 2, 2025
1178022
Expose 4 remaining Recraft nodes (#112)
Kosinkadink May 2, 2025
99a6b59
[Kling] Add `Duration` and `Video ID` outputs (#105)
christian-byrne May 2, 2025
7a10383
Fix: datamodel-codegen sets string#binary type to non-existent `bytes…
christian-byrne May 2, 2025
b9c03f6
Fix: Dall-e 2 not setting request content-type dynamically (#113)
christian-byrne May 2, 2025
8295d75
Default request timeout: one hour. (#116)
robinjhuang May 3, 2025
1560c9b
Add Kling nodes: camera control, start-end frame, lip-sync, video ext…
christian-byrne May 3, 2025
00f9679
Add 8 nodes - 4 BFL, 4 Stability (#117)
Kosinkadink May 3, 2025
ef111e7
Fix error for Recraft ImageToImage error for nonexistent random_seed …
Kosinkadink May 4, 2025
eca1467
Add remaining Pika nodes (#119)
christian-byrne May 4, 2025
96753dc
Make controls input work for Recraft Image to Image node (#120)
Kosinkadink May 4, 2025
cb9f13e
Use upstream PR: Support saving Comfy VIDEO type to buffer (#123)
christian-byrne May 4, 2025
3a04204
Use Upstream PR: "Fix: Error creating video when sliced audio tensor …
christian-byrne May 5, 2025
7ead535
Improve audio upload utils (#128)
christian-byrne May 5, 2025
337e707
Fix: Nested `AnyUrl` in request model cannot be serialized (Kling, Ru…
christian-byrne May 5, 2025
d010dd9
Show errors and API output URLs to the user (change log levels) (#131)
christian-byrne May 5, 2025
8825835
Fix: Luma I2I fails when weight is <=0.01 (#132)
christian-byrne May 5, 2025
c0a348d
Change category of `LumaConcepts` node from image to video (#133)
christian-byrne May 5, 2025
0b0eead
Fix: `image.shape` accessed before `image` is null-checked (#134)
christian-byrne May 5, 2025
0e34f00
Apply small fixes and most prompt validation (if needed to avoid API …
Kosinkadink May 5, 2025
961651f
Node name/category modifications (#140)
Kosinkadink May 5, 2025
87047e9
Add back Recraft Style - Infinite Style Library node (#141)
Kosinkadink May 5, 2025
d78764d
Fixed Kling: Check attributes of pydantic types. (#144)
robinjhuang May 5, 2025
7361f87
Bump `comfyui-workflow-templates` version (#142)
christian-byrne May 5, 2025
7399187
[Kling] Print response data when error validating response (#146)
christian-byrne May 5, 2025
1ec1042
Fix: error validating Kling image response, trying to use `"key" in` …
christian-byrne May 5, 2025
e493f8a
[Kling] Fix: Correct/verify supported subset of input combos in Kling…
christian-byrne May 5, 2025
7e1ce6a
[Kling] Fix typo in node description (#150)
christian-byrne May 6, 2025
80e4968
[Kling] Fix: CFG min/max not being enforced (#151)
christian-byrne May 6, 2025
11a35d6
Rebase launch-rebase (private) on prep-branch (public copy of master)…
Kosinkadink May 6, 2025
adc6067
Bump templates version (#154)
christian-byrne May 6, 2025
79f0981
Fix: Kling image gen nodes don't return entire batch when `n` > 1 (#152)
christian-byrne May 6, 2025
98bfa52
Remove pixverse_template from PixVerse Transition Video node (#155)
Kosinkadink May 6, 2025
79edd2d
Invert image_weight value on Luma Image to Image node (#156)
Kosinkadink May 6, 2025
5b523ce
Invert and resize mask for Ideogram V3 node to match masking conventi…
Kosinkadink May 6, 2025
1dc3880
[Kling] Fix: image generation nodes not returning Tuple (#159)
christian-byrne May 6, 2025
0cab40b
[Bug] [Kling] Fix Kling camera control (#161)
christian-byrne May 6, 2025
5d3e055
Kling Image Gen v2 + improve node descriptions for Flux/OpenAI (#160)
robinjhuang May 6, 2025
5bb5cc7
[Kling] Don't return video_id from dual effect video (#162)
christian-byrne May 6, 2025
a75d35e
Bump frontend to 1.18.8 (#163)
christian-byrne May 6, 2025
ec89560
Use 3.9 compat syntax (#164)
christian-byrne May 6, 2025
4b11c99
Merge branch 'master' into prep-branch
Kosinkadink May 6, 2025
2179d9f
Use Python 3.10
robinjhuang May 6, 2025
dfa9759
add example env var
christian-byrne May 6, 2025
24db764
Update templates to 0.1.11
webfiltered May 6, 2025
4d53082
Merge pull request #7957 from christian-byrne/enable-kling-v2-master
Kosinkadink May 6, 2025
72ee7a2
Bump frontend to 1.18.9
Kosinkadink May 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test-launch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
path: "ComfyUI"
- uses: actions/setup-python@v4
with:
python-version: '3.9'
python-version: '3.10'
- name: Install requirements
run: |
python -m pip install --upgrade pip
Expand Down
13 changes: 11 additions & 2 deletions .github/workflows/update-api-stubs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,19 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install 'datamodel-code-generator[http]'
npm install @redocly/cli

- name: Download OpenAPI spec
run: |
curl -o openapi.yaml https://api.comfy.org/openapi

- name: Filter OpenAPI spec with Redocly
run: |
npx @redocly/cli bundle openapi.yaml --output filtered-openapi.yaml --config comfy_api_nodes/redocly.yaml --remove-unused-components

- name: Generate API models
run: |
datamodel-codegen --use-subclass-enum --url https://api.comfy.org/openapi --output comfy_api_nodes/apis --output-model-type pydantic_v2.BaseModel
datamodel-codegen --use-subclass-enum --input filtered-openapi.yaml --output comfy_api_nodes/apis --output-model-type pydantic_v2.BaseModel

- name: Check for changes
id: git-check
Expand All @@ -44,4 +53,4 @@ jobs:
Generated automatically by the a Github workflow.
branch: update-api-stubs
delete-branch: true
base: main
base: master
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ venv/
*.log
web_custom_versions/
.DS_Store
openapi.yaml
filtered-openapi.yaml
uv.lock
7 changes: 7 additions & 0 deletions comfy/cli_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,13 @@ def is_valid_directory(path: str) -> str:

parser.add_argument("--enable-compress-response-body", action="store_true", help="Enable compressing response body.")

parser.add_argument(
"--comfy-api-base",
type=str,
default="https://api.comfy.org",
help="Set the base URL for the ComfyUI API. (default: https://api.comfy.org)",
)

if comfy.options.args_parsing:
args = parser.parse_args()
else:
Expand Down
41 changes: 41 additions & 0 deletions comfy_api_nodes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# ComfyUI API Nodes

## Introduction

Below are a collection of nodes that work by calling external APIs. More information available in our [docs](https://docs.comfy.org/tutorials/api-nodes/overview#api-nodes).

## Development

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

**Install ComfyUI_frontend**

Follow the instructions [here](https://github.com/Comfy-Org/ComfyUI_frontend) 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.

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

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.

```bash
# Download the OpenAPI file from prod 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

```
Loading