PVL ComfyDeploy Avatar PulID API
Queue an avatar-generation deployment and pull the result back
- ref_image
- image
Somewhere on ComfyDeploy there's a hosted workflow that takes a reference face and renders it as an avatar - the PuLID-style character/portrait generation people use for profile pics and character sheets. This node is the remote control for that: give it a ref_image plus the deployment's deployment_id and api_key, and it queues the run, polls ComfyDeploy until it's done, and returns the generated avatar as a ComfyUI IMAGE. It's a member of the pvlprk/comfyui-pvl-api-nodes pack and, like its sibling PVL ComfyDeploy Universal, it's a cloud-run client - nothing heavy runs locally, but every run consumes your ComfyDeploy quota.
The PuLID connection matters for expectations, not installation: PuLID is the identity adapter that gives a model a face (per the KB, ByteDance's contrastive-alignment adapter that won on Flux), and this deployment presumably uses that to pin the avatar to your reference. All of that is already configured in the hosted workflow - your job is just feeding it an image and the parameters it expects.
How it works
The node base64-encodes ref_image into a data URI and POSTs it, with style, prompt, batch, and seed, to the ComfyDeploy queue endpoint. It then polls the run endpoint every 3 seconds for up to ~200 seconds, grabs the first image from the outputs, converts it to a tensor, and returns it. timeout (60s default) is kept for graph compatibility but the actual poll window is the hardcoded ~200s cap - so don't set timeout below 5 and expect it to govern, and don't expect instant results on a busy cloud.
Inputs that matter
ref_image(required) - the face. A clean, front-facing reference gives the avatar its best shot.deployment_idandapi_key(required strings) - from your ComfyDeploy deployment.batch(default 1),style(a style hint string, empty by default),prompt(the generation prompt),seed(-1 = random).debugtoggles verbose logging if something's going wrong.
Output: image (IMAGE).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Restart ComfyUI. You need a ComfyDeploy account and the deployment's API key before this does anything useful.
Where people get burned
- It's wired to one deployment's expectations. The input names (
style,batch,ref_image) are assumptions about what that avatar workflow exposes. If your deployment names its inputs differently, you'll get a payload mismatch - the Universal node is the escape hatch. - Cloud identity = the reference image quality decides the outcome. A bad reference makes a bad avatar; there's no local control to compensate, since all the model-side tuning lives in the hosted workflow.
- Timeouts and quota. Runs can take a while and cost credits; don't hammer it with
batchset high. And the effective poll cap (~200s) can outrun thetimeoutfield you set - it's a compat field, not a hard limit.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| ref_image | IMAGE | — | |
| deployment_id | STRING | — | |
| api_key | STRING | — | |
| batch | INT | 10–999999 | — |
| style | STRING | — | |
| prompt | STRING | — | |
| seed | INT | -1-1–2147483647 | — |
| timeout | FLOAT | 605–3600 | — |
| debug | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |