Skip to main content
Create Workflow

Overview

Create and execute a new ComfyUI workflow. This endpoint accepts multipart form data to support file uploads for workflow parameters.
Workflows are automatically scheduled on available runners based on tag matching. Ensure you have active runners with matching tags.
The API playground does not support file uploads. Use cURL, Postman, or your application code to test this endpoint.

Content Type

This endpoint requires multipart/form-data content type for file upload support. Maximum file size: 50MB per request

Request Parameters

string
required
A descriptive name for your workflow (1-200 characters).
file
required
A JSON file containing the ComfyUI workflow definition. This should be exported from ComfyUI or constructed programmatically.
string
Comma-separated list of tags for runner selection. The workflow will be scheduled on a runner with matching tags.Example: production,gpu-a100,image-generation

Dynamic Parameters

The workflow supports dynamic parameters using placeholders:
string
Text parameter - prefix the field name with $ followed by the placeholder name from your workflow.Example: $prompt for a text prompt
file
File parameter - prefix the field name with $ followed by the placeholder name, and include the file.Example: $input_image for an image file
string
Choice parameter - prefix the field name with # followed by the placeholder name.Example: #sampler for sampler selection
Learn more about placeholders and dynamic parameters in the Workflows concept page.

Response

string
required
Unique identifier (UUID) for the workflow.
string
required
The workflow’s name.
string
required
Initial status of the workflow (typically accepted).Possible values: accepted, uploaded, queued, running, completed, cancelled, invalid, failed
string[]
required
Array of tags associated with the workflow.
string
required
ISO 8601 timestamp when the workflow was created.
string
required
ISO 8601 timestamp when the workflow was last updated.
string
ISO 8601 timestamp when execution started (null initially).
string
ISO 8601 timestamp when execution completed (null initially).

Example Response

cURL Example

Since the API playground doesn’t support file uploads, use this cURL command to test:
Replace:
  • YOUR_API_TOKEN with your actual API token
  • /path/to/workflow.json with your ComfyUI workflow JSON file
  • /path/to/image.png with any input images (if needed)
  • Add dynamic parameters as needed with $ prefix for text/files, # prefix for choices
The -F flag automatically handles multipart/form-data with proper boundaries.

Workflow Lifecycle

After creation, the workflow goes through these states:
  1. accepted - Workflow created and queued for processing
  2. uploaded - Files uploaded to storage
  3. queued - Waiting in runner’s queue
  4. running - Currently executing on a runner
  5. completed - Execution finished successfully
  6. failed - Execution failed with an error
  7. cancelled - Manually cancelled
  8. invalid - Invalid workflow definition

Error Responses

error
Bad request - validation error in the request.Common causes:
  • Missing required fields (name, workflow_json)
  • Invalid workflow JSON structure
  • File size exceeds 50MB limit
  • Invalid tags format
  • Workflow parameter validation failed
  • No runner available with matching tags
error
Unauthorized - invalid or missing authentication token.
error
Forbidden - workflow parameter limit exceeded for your tier, or insufficient permissions.

Notes

  • Workflows are automatically assigned to runners based on tag matching
  • If no tags are specified, the workflow can run on any active runner
  • File parameters are stored securely and deleted after workflow completion
  • Use the subscribe endpoint to monitor workflow progress in real-time
  • You can create multiple workflows simultaneously
  • Workflow status updates can be monitored via the subscribe (SSE) endpoint or by polling the get endpoint
  • Use cURL, Postman, or application code for testing - the API playground doesn’t support file uploads