PluginBench
Skill
Review
Audit score 70

comfyui-api

mckruz/comfyui-expert

Connect to ComfyUI, queue workflows, monitor execution, and retrieve results in online or offline mode.

What is comfyui-api?

This skill provides REST API access to a running ComfyUI instance for executing image generation workflows, polling progress, and downloading outputs. Use it when you need to programmatically control ComfyUI workflows or check server status; supports both online (live API) and offline (JSON export) modes.

  • Queue workflows to ComfyUI via REST API and receive prompt IDs
  • Poll workflow execution status every 5 seconds until completion
  • Retrieve generated images and other outputs from the server
  • Upload reference images to ComfyUI's input folder
  • Check server status, VRAM availability, and installed models
  • Cancel running generations and free VRAM on demand

How to install comfyui-api

npx skills add https://github.com/mckruz/comfyui-expert --skill comfyui-api
Prerequisites
  • A running ComfyUI instance (default: http://127.0.0.1:8188) or ability to export workflows offline
  • curl or wget available in PATH for HTTP requests
  • ComfyUI server accessible at configured URL with required models and nodes installed
Claude Code
Cursor
Windsurf
Cline

How to use comfyui-api

  1. 1.Test the connection by calling GET /system_stats to verify ComfyUI is running and check available VRAM
  2. 2.Use comfyui-inventory skill to discover installed nodes and models, then validate your workflow against them
  3. 3.Construct a workflow JSON object with numbered nodes, each specifying class_type and inputs with proper node references
  4. 4.Queue the workflow via POST /prompt with the workflow JSON and receive a prompt_id
  5. 5.Poll GET /history/{prompt_id} every 5 seconds until the response contains outputs and status.completed is true
  6. 6.Retrieve output images using GET /view with the filename, subfolder, and type from the outputs
  7. 7.If ComfyUI is unavailable, generate and save the workflow JSON to projects/{project}/workflows/{name}.json for manual loading

Use cases

Good for
  • Generate images programmatically by queuing Flux or other model workflows to a local ComfyUI instance
  • Monitor long-running video generation tasks (15-30 minutes) and retrieve results when complete
  • Validate that required models and custom nodes are installed before attempting workflow execution
  • Upload reference images and control generation parameters dynamically from code
  • Switch to offline mode to export workflow JSON when ComfyUI server is not running
Who it's for
  • AI agents executing image or video generation workflows
  • Developers building automation around ComfyUI
  • Users running ComfyUI locally and needing programmatic control
  • Teams managing ComfyUI instances with custom nodes and models

comfyui-api FAQ

How long should I wait for a workflow to complete?

Most image generations complete in seconds to minutes. Video generation with Wan 14B can take 15-30 minutes. The skill warns after 10 minutes of polling; continue waiting for longer tasks.

What should I do if the workflow fails with a 400 Bad Request error?

Validate the workflow JSON structure: ensure all node IDs are strings, inputs reference other nodes as ["node_id", output_index], and all class_types match installed nodes. Use comfyui-inventory to verify node availability.

Can I use this skill if ComfyUI is not running?

Yes. Switch to offline mode: generate the workflow JSON following ComfyUI's format and save it to projects/{project}/workflows/{name}.json. Instruct the user to drag-drop it into ComfyUI manually.

How do I upload a reference image for use in a workflow?

Use POST /upload/image with multipart form data: image file, subfolder (e.g., 'input'), and type ('input'). Then reference the uploaded filename in your workflow's LoadImage node.

What happens if ComfyUI runs out of VRAM during generation?

The workflow will fail with a 500 error. Call POST /free with {"unload_models": true} to free VRAM, then retry the workflow or suggest the user reduce batch size or use a smaller model.

Full instructions (SKILL.md)

Source of truth, from mckruz/comfyui-expert.


name: comfyui-api description: Connect to a running ComfyUI instance, queue workflows, monitor execution, and retrieve results. Supports both online (REST API) and offline (JSON export) modes. Use when executing ComfyUI workflows or checking server status. user-invocable: true metadata: {"openclaw":{"emoji":"🔌","os":["darwin","linux","win32"],"requires":{"anyBins":["curl","wget"]},"primaryEnv":"COMFYUI_URL"}}

ComfyUI API Skill

Connect to ComfyUI's REST API to execute workflows, monitor progress, and retrieve outputs.

Configuration

  • Default URL: http://127.0.0.1:8188
  • Custom URL: Set in project manifest or pass as parameter
  • Timeout: 30s for API calls, no timeout for generation polling

Two Modes

Online Mode (ComfyUI Running)

Full API access. Preferred mode for interactive work.

  1. Test connection: GET /system_stats
  2. Discover capabilities: Use comfyui-inventory skill
  3. Queue workflow: POST /prompt
  4. Poll for results: GET /history/{prompt_id} every 5 seconds
  5. Retrieve outputs: GET /view?filename=...

Offline Mode (No Server)

Export workflow JSON for manual loading in ComfyUI.

  1. Generate workflow JSON following ComfyUI's format
  2. Save to projects/{project}/workflows/{name}.json
  3. Instruct user to drag-drop into ComfyUI

API Operations

Check Server Status

curl http://127.0.0.1:8188/system_stats

Response fields:

  • system.os: Operating system
  • system.comfyui_version: Version string
  • devices[0].name: GPU name
  • devices[0].vram_total: Total VRAM bytes
  • devices[0].vram_free: Free VRAM bytes

Queue a Workflow

curl -X POST http://127.0.0.1:8188/prompt \
  -H "Content-Type: application/json" \
  -d '{"prompt": WORKFLOW_JSON, "client_id": "video-agent"}'

WORKFLOW_JSON format:

{
  "1": {
    "class_type": "LoadCheckpoint",
    "inputs": {
      "ckpt_name": "flux1-dev.safetensors"
    }
  },
  "2": {
    "class_type": "CLIPTextEncode",
    "inputs": {
      "text": "photorealistic portrait...",
      "clip": ["1", 1]
    }
  }
}

Each node is keyed by a string ID. Inputs reference other nodes as ["{node_id}", {output_index}].

Response:

{"prompt_id": "abc-123-def", "number": 1}

Poll for Completion

curl http://127.0.0.1:8188/history/abc-123-def

Incomplete: Returns {} (empty object) Complete: Returns execution data with outputs:

{
  "abc-123-def": {
    "outputs": {
      "9": {
        "images": [{"filename": "ComfyUI_00001.png", "subfolder": "", "type": "output"}]
      }
    },
    "status": {"completed": true}
  }
}

Retrieve Output Image

curl "http://127.0.0.1:8188/view?filename=ComfyUI_00001.png&subfolder=&type=output" -o output.png

Upload Reference Image

curl -X POST http://127.0.0.1:8188/upload/image \
  -F "image=@reference.png" \
  -F "subfolder=input" \
  -F "type=input"

Cancel Current Generation

curl -X POST http://127.0.0.1:8188/interrupt

Free VRAM

curl -X POST http://127.0.0.1:8188/free \
  -H "Content-Type: application/json" \
  -d '{"unload_models": true}'

Polling Strategy

ComfyUI doesn't support WebSocket in CLI context. Use REST polling:

  1. Queue workflow via POST /prompt → get prompt_id
  2. Poll GET /history/{prompt_id} every 5 seconds
  3. On empty response: generation in progress, continue polling
  4. On populated response: check status.completed
  5. If completed: true, extract outputs
  6. If error in status, route to comfyui-troubleshooter

Timeout: Warn user after 10 minutes of polling. Video generation (Wan 14B) can take 15-30 minutes.

Workflow Validation

Before queuing any workflow:

  1. Read state/inventory.json (via comfyui-inventory)
  2. For each node in workflow: verify class_type exists in installed nodes
  3. For each model reference: verify file exists in installed models
  4. Flag missing items with:
    • Node: suggest ComfyUI-Manager install command
    • Model: provide download link from references/models.md
    • Version mismatch: suggest update

Error Handling

ErrorCauseAction
Connection refusedComfyUI not runningSwitch to offline mode, save JSON
400 Bad RequestInvalid workflow JSONValidate node connections
500 Internal ErrorComfyUI crashSuggest restart, check logs
Timeout (no response)Server overloadedWait and retry once

Reference

Full API documentation: foundation/api-quick-ref.md

Related skills

More from mckruz/comfyui-expert and the wider catalog.

COcomfyui-prompt-engineer logo

comfyui-prompt-engineer

mckruz/comfyui-expert

Craft model-specific prompts optimized for the target checkpoint and identity method. Handles FLUX, SDXL, SD1.5, and Wan video models with proper syntax, quality tags, and negative prompts. Use when generating or refining prompts for ComfyUI workflows.

680 installsAudited
COcomfyui-video-pipeline logo

comfyui-video-pipeline

mckruz/comfyui-expert

Generate videos using ComfyUI with Wan 2.2, FramePack, or AnimateDiff. Handles image-to-video, text-to-video, talking heads, and motion-controlled animation. Use when creating any video content from character images or text descriptions.

712 installsAudited
COcomfyui-workflow-builder logo

comfyui-workflow-builder

mckruz/comfyui-expert

Generate valid ComfyUI workflow JSON from natural language descriptions.

1.9k installs
DOdocumentation logo

documentation

mcollina/skills

Structure and write technical documentation using the Diátaxis framework—tutorials, how-to guides, reference, and explanations.

1.7k installsAudited
FAfastify-best-practices logo

fastify-best-practices

mcollina/skills

Build fast, type-safe Node.js REST APIs with Fastify best practices and patterns.

61k installs
INinit logo

init

mcollina/skills

Creates, updates, or optimizes an AGENTS.md file for a repository with minimal, high-signal instructions covering non-discoverable coding conventions, tooling quirks, workflow preferences, and project-specific rules that agents cannot infer from reading the codebase. Use when setting up agent instructions or Claude configuration for a new repository, when an existing AGENTS.md is too long, generic, or stale, when agents repeatedly make avoidable mistakes, or when repository workflows have changed and the agent configuration needs pruning. Applies a discoverability filter—omitting anything Claude can learn from README, code, config, or directory structure—and a quality gate to verify each line remains accurate and operationally significant.

794 installsAudited