PVL ComfyDeploy Universal
Name your own inputs
- value_1
- value_2
- value_3
- value_4
- value_5
- value_6
- value_7
- value_8
- value_9
- value_10
- images
ComfyDeploy runs ComfyUI workflows you built as hosted, queueable deployments. The pack's other ComfyDeploy nodes are hand-wired to specific deployments - this one is the general-purpose version: ten named parameters, ten values, one deployment ID, and it'll drive just about any workflow you point it at. It comes from the pvlprk/comfyui-pvl-api-nodes grab bag and shares the family trait - cloud-run client, nothing heavy runs locally, every run costs your ComfyDeploy quota.
Think of it as a "call this hosted workflow" node where you write the parameter names yourself. Your deployment's input is called style_prompt? Put style_prompt in parameter_name_1 and the value in value_1. The node doesn't care what the schema is - it just maps your ten name/value pairs onto the deployment's inputs and queues the run.
How it works
It POSTs {deployment_id, inputs} to the ComfyDeploy queue endpoint, where inputs are built from your name/value pairs. Values are wildcard sockets (value_1..value_10), so you can feed strings, numbers, or - when upload_tensors is on - image tensors, which get encoded to base64 data URIs and injected into the matching input. It then polls the run endpoint every 3 seconds until the workflow finishes and pulls out the returned images, converting them back to a ComfyUI IMAGE batch.
Inputs that matter
deployment_idandapi_key(required strings).parameter_name_1..10(strings) andvalue_1..10(wildcard) - pair them up. Leave a name empty and its value is ignored.seed(-1 random),timeout(60s default),upload_tensors(set to true when a value is an image),debug.
Output: images (IMAGE).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Restart ComfyUI, then make sure you have a ComfyDeploy account, a deployment ID, and an API key. Nothing else - the node runs on requests.
Where people get burned
- Name/value pairing is on you. Mismatched pairs (a name in slot 1 but a value in slot 2) silently produce a wrong payload. Keep names and values in the same numbered slots.
- Empty values get dropped. If you wire
value_3but leaveparameter_name_3blank, it's ignored - that's by design, but it means "blank" can't be passed as a literal empty string to your deployment. - It returns images, not text. This node only surfaces image outputs. If your deployment also emits files or text, you'll want the specific API Caller node (which has a text output) or to handle those files outside the graph.
- Timeouts reflect cloud reality. Heavy workflows can exceed the poll window; keep
timeoutreasonable and don't expect local-VRAM-fast results.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| deployment_id | STRING | — | |
| api_key | STRING | — | |
| seed | INT | -1-1–2147483647 | — |
| timeout | FLOAT | 605–3600 | — |
| upload_tensors | BOOLEAN | false | — |
| debug | BOOLEAN | false | — |
| parameter_name_1 | STRING | — | |
| parameter_name_2 | STRING | — | |
| parameter_name_3 | STRING | — | |
| parameter_name_4 | STRING | — | |
| parameter_name_5 | STRING | — | |
| parameter_name_6 | STRING | — | |
| parameter_name_7 | STRING | — | |
| parameter_name_8 | STRING | — | |
| parameter_name_9 | STRING | — | |
| parameter_name_10 | STRING | — | |
| value_1opt | * | — | |
| value_2opt | * | — | |
| value_3opt | * | — | |
| value_4opt | * | — | |
| value_5opt | * | — | |
| value_6opt | * | — | |
| value_7opt | * | — | |
| value_8opt | * | — | |
| value_9opt | * | — | |
| value_10opt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |