
Comfyui Api
Queue ComfyUI workflows over REST, poll execution, fetch outputs—or export JSON when the server is offline.
Overview
ComfyUI API is an agent skill for the Build phase that connects to ComfyUI via REST to queue workflows, monitor runs, and retrieve outputs (or export offline JSON).
Install
npx skills add https://github.com/mckruz/comfyui-expert --skill comfyui-apiWhat is this skill?
- Online mode: GET /system_stats, POST /prompt, poll GET /history/{prompt_id} every 5 seconds, GET /view for outputs
- Offline mode: save workflow JSON under projects/{project}/workflows/{name}.json for drag-drop load
- Default base URL http://127.0.0.1:8188 with COMFYUI_URL override; 30s API timeout, open-ended generation polling
- Pairs with comfyui-inventory for capability discovery before queueing
- 5-second history polling interval
- 30-second default API call timeout
- 2 modes: online REST and offline JSON export
Adoption & trust: 1.1k installs on skills.sh; 69 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent can describe ComfyUI graphs but cannot reliably execute them, poll completion, or fetch result files from a live server.
Who is it for?
Builders automating image or video pipelines through ComfyUI from Claude Code, Cursor, or OpenClaw-style agents on darwin, linux, or win32.
Skip if: Authoring complex node workflows from scratch without the companion ComfyUI expert or inventory skills, or teams that only need static prompt engineering in a chat UI.
When should I use this skill?
Executing ComfyUI workflows, checking server status, or connecting to a running ComfyUI instance.
What do I get? / Deliverables
Queued workflows run with polled completion and retrievable outputs—or offline JSON ready to load in ComfyUI when no server is available.
- Executed workflow outputs via /view URLs
- Offline workflow JSON under projects/{project}/workflows/
Recommended Skills
Journey fit
Execution wiring to ComfyUI belongs in Build when you connect generative pipelines to your agent or batch jobs. Integrations covers REST prompt queueing, history polling, and asset retrieval against a running ComfyUI instance.
How it compares
Integration skill for ComfyUI's HTTP API—not a hosted GPU provider or a replacement for ComfyUI's visual graph editor.
Common Questions / FAQ
Who is comfyui-api for?
Solo builders and agent operators who want programmatic queue and retrieve loops against a ComfyUI instance.
When should I use comfyui-api?
During Build integrations when executing workflows, checking server status, or exporting JSON for manual runs.
Is comfyui-api safe to install?
It guides network calls to your ComfyUI URL and shell curl usage; review the Security Audits panel on this page and lock COMFYUI_URL to trusted hosts.
SKILL.md
READMESKILL.md - Comfyui Api
# 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 ```bash 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 ```bash 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:** ```json { "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:** ```json {"prompt_id": "abc-123-def", "number": 1} ``` ### Poll for Completion ```bash curl http://127.0.0.1:8188/history/abc-123-def ``` **Incomplete**: Returns `{}` (empty object) **Complete**: Returns execution data with outputs: ```json { "abc-123-def": { "outputs": { "9": { "images": [{"filename": "ComfyUI_00001.png", "subfolder": "", "type": "output"}] } }, "status": {"completed": true} } } ``` ### Retrieve Output Image ```bash curl "http://127.0.0.1:8188/view?filename=ComfyUI_00001.png&subfolder=&type=output" -o output.png ``` ### Upload Reference Image ```bash curl -X POST http://127.0.0.1:8188/upload/image \ -F "image=@reference.png" \ -F "subfolder=input" \ -F "type=input" ``` ### Cancel Current Generation ```bash curl -X POST http://127.0.0.1:8188/interrupt ``` ### Free VRAM ```bash 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 w