2025-08-19 17:59:20 +01:00
# ComfyUI PyWorker
This is the base PyWorker for ComfyUI. It provides a unified interface for running any ComfyUI workflow through a proxy-based architecture.
2025-12-12 10:41:21 -08:00
The cost for each request has a static value of `100` . ComfyUI does not handle concurrent workloads and there is no current provision to load multiple instances of ComfyUI per worker node.
2025-08-25 17:58:22 +01:00
## Requirements
This worker requires both [ComfyUI ](https://github.com/comfyanonymous/ComfyUI ) and [ComfyUI API Wrapper ](https://github.com/ai-dock/comfyui-api-wrapper ).
A docker image is provided but you may use any if the above requirements are met.
2025-08-19 17:59:20 +01:00
## Endpoint
The worker provides a single endpoint:
- `/generate/sync` : Processes ComfyUI workflows using either predefined modifiers or custom workflow JSON
## Request Format
The worker accepts requests in the following format. Choose either modifier mode OR custom workflow mode:
**Modifier Mode:**
```json
{
"input" : {
"request_id" : "uuid-string" , // optional - UUID generated if not provided
"modifier" : "RawWorkflow" ,
"modifications" : {
"prompt" : "a beautiful landscape" ,
"width" : 1024 ,
"height" : 1024 ,
"steps" : 20 ,
"seed" : 123456789
},
"s3" : { ... }, // optional
"webhook" : { ... } // optional
2025-08-25 17:58:22 +01:00
}
2025-08-19 17:59:20 +01:00
}
```
**Custom Workflow Mode:**
```json
{
"input" : {
"request_id" : "uuid-string" , // optional - UUID generated if not provided
"workflow_json" : {
// Complete ComfyUI workflow JSON
},
"s3" : { ... }, // optional
"webhook" : { ... } // optional
2025-08-25 17:58:22 +01:00
}
2025-08-19 17:59:20 +01:00
}
```
## Request Fields
### Required Fields
- **`input` **: Contains the main workflow data
- **`input.request_id` **: Unique identifier for the request
### Workflow Mode (Choose One)
You must provide either `modifier` OR `workflow_json` , but not both:
#### Option 1: Modifier Mode
- **`input.modifier` **: Name of the predefined workflow modifier (e.g., "Text2Image")
- **`input.modifications` **: Parameters to pass to the modifier
#### Option 2: Custom Workflow Mode
- **`input.workflow_json` **: Complete ComfyUI workflow JSON
### Optional Fields
- **`input.s3` **: S3 configuration for file storage
- **`input.webhook` **: Webhook configuration for notifications
These configurations can be provided in the request JSON or via environment variables. Request-level configuration takes precedence over environment variables.
#### S3 Configuration
**Via Request JSON:**
```json
"s3" : {
"access_key_id" : "your-s3-access-key" ,
"secret_access_key" : "your-s3-secret-access-key" ,
"endpoint_url" : "https://my-endpoint.backblaze.com" ,
"bucket_name" : "your-bucket" ,
"region" : "us-east-1"
}
```
**Via Environment Variables:**
```bash
S3_ACCESS_KEY_ID = your-key
S3_SECRET_ACCESS_KEY = your-secret
S3_BUCKET_NAME = your-bucket
S3_ENDPOINT_URL = https://s3.amazonaws.com
S3_REGION = us-east-1
```
#### Webhook Configuration
**Via Request JSON:**
```json
"webhook" : {
"url" : "your-webhook-url" ,
"extra_params" : {
"custom_field" : "value"
}
}
```
**Via Environment Variables:**
```bash
WEBHOOK_URL = https://your-webhook.com # Default webhook URL
WEBHOOK_TIMEOUT = 30 # Webhook timeout in seconds
```
## Examples
### Basic Text-to-Image (Modifier Mode)
```json
{
"input" : {
"modifier" : "Text2Image" ,
"modifications" : {
"prompt" : "a cat sitting on a windowsill" ,
"width" : 512 ,
"height" : 512 ,
"steps" : 20 ,
"seed" : 42
}
2025-08-25 17:58:22 +01:00
}
2025-08-19 17:59:20 +01:00
}
```
### Custom Workflow Mode
```json
{
"input" : {
"request_id" : "67890" , // optional - using custom ID for tracking
"workflow_json" : {
"3" : {
"inputs" : {
"seed" : 42 ,
"steps" : 20 ,
"cfg" : 8 ,
"sampler_name" : "euler" ,
"scheduler" : "normal" ,
"denoise" : 1 ,
"model" : [ "4" , 0 ],
"positive" : [ "6" , 0 ],
"negative" : [ "7" , 0 ],
"latent_image" : [ "5" , 0 ]
},
"class_type" : "KSampler"
}
}
2025-08-25 17:58:22 +01:00
}
2025-08-19 17:59:20 +01:00
}
```
## Client Libraries
2025-12-12 10:41:21 -08:00
See the client example for implementation details on how to integrate with the ComfyUI worker.
2025-08-19 17:59:20 +01:00
---
See Vast's serverless documentation for more details on how to use ComfyUI with autoscaler.