ComfyUI-Manager/openapi.yaml
Dr.Lt.Data 43647249cf refactor: remove package-level caching to support dynamic installation
Remove package-level caching in cnr_utils and node_package modules to enable
proper dynamic custom node installation and version switching without ComfyUI
server restarts.

Key Changes:
- Remove @lru_cache decorators from version-sensitive functions
- Remove cached_property from NodePackage for dynamic state updates
- Add comprehensive test suite with parallel execution support
- Implement version switching tests (CNR ↔ Nightly)
- Add case sensitivity integration tests
- Improve error handling and logging

API Priority Rules (manager_core.py:1801):
- Enabled-Priority: Show only enabled version when both exist
- CNR-Priority: Show only CNR when both CNR and Nightly are disabled
- Prevents duplicate package entries in /v2/customnode/installed API
- Cross-match using cnr_id and aux_id for CNR ↔ Nightly detection

Test Infrastructure:
- 8 test files with 59 comprehensive test cases
- Parallel test execution across 5 isolated environments
- Automated test scripts with environment setup
- Configurable timeout (60 minutes default)
- Support for both master and dr-support-pip-cm branches

Bug Fixes:
- Fix COMFYUI_CUSTOM_NODES_PATH environment variable export
- Resolve test fixture regression with module-level variables
- Fix import timing issues in test configuration
- Register pytest integration marker to eliminate warnings
- Fix POSIX compliance in shell scripts (((var++)) → $((var + 1)))

Documentation:
- CNR_VERSION_MANAGEMENT_DESIGN.md v1.0 → v1.1 with API priority rules
- Add test guides and execution documentation (TESTING_PROMPT.md)
- Add security-enhanced installation guide
- Create CLI migration guides and references
- Document package version management

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 09:07:09 +09:00

1420 lines
44 KiB
YAML

openapi: 3.1.0
info:
title: ComfyUI-Manager API
description: |
API for ComfyUI-Manager, a comprehensive management tool for ComfyUI custom nodes, models, and components.
This API enables programmatic access to node management, model downloading, snapshot operations,
and overall system configuration.
version: "3.32.3"
contact:
name: ComfyUI-Manager Maintainers
servers:
- url: '/'
description: Default ComfyUI server
# Default security - can be overridden per operation
security: []
# Common API components
components:
schemas:
OperationType:
type: string
enum: [install, uninstall, update, update-comfyui, fix, disable, enable, install-model]
description: Type of operation or task being performed
OperationResult:
type: string
enum: [success, failed, skipped, error, skip]
description: Result status of an operation (failed/error and skipped/skip are aliases)
# Core Task Queue Models
QueueTaskItem:
type: object
properties:
ui_id:
type: string
description: Unique identifier for the task
client_id:
type: string
description: Client identifier that initiated the task
kind:
$ref: '#/components/schemas/OperationType'
params:
oneOf:
- $ref: '#/components/schemas/InstallPackParams'
- $ref: '#/components/schemas/UpdatePackParams'
- $ref: '#/components/schemas/FixPackParams'
- $ref: '#/components/schemas/UninstallPackParams'
- $ref: '#/components/schemas/DisablePackParams'
- $ref: '#/components/schemas/EnablePackParams'
- $ref: '#/components/schemas/ModelMetadata'
- $ref: '#/components/schemas/UpdateComfyUIParams'
- $ref: '#/components/schemas/UpdateAllPacksParams'
required: [ui_id, client_id, kind, params]
TaskHistoryItem:
type: object
properties:
ui_id:
type: string
description: Unique identifier for the task
client_id:
type: string
description: Client identifier that initiated the task
kind:
type: string
description: Type of task that was performed
timestamp:
type: string
format: date-time
description: ISO timestamp when task completed
result:
type: string
description: Task result message or details
status:
$ref: '#/components/schemas/TaskExecutionStatus'
batch_id:
type: [string, 'null']
description: ID of the batch this task belongs to
end_time:
type: [string, 'null']
format: date-time
description: ISO timestamp when task execution ended
required: [ui_id, client_id, kind, timestamp, result]
TaskExecutionStatus:
type: object
properties:
status_str:
$ref: '#/components/schemas/OperationResult'
completed:
type: boolean
description: Whether the task completed
messages:
type: array
items:
type: string
description: Additional status messages
required: [status_str, completed, messages]
TaskStateMessage:
type: object
properties:
history:
type: object
additionalProperties:
$ref: '#/components/schemas/TaskHistoryItem'
description: Map of task IDs to their history items
running_queue:
type: array
items:
$ref: '#/components/schemas/QueueTaskItem'
description: Currently executing tasks
pending_queue:
type: array
items:
$ref: '#/components/schemas/QueueTaskItem'
description: Tasks waiting to be executed
installed_packs:
type: object
additionalProperties:
$ref: '#/components/schemas/ManagerPackInstalled'
description: Map of currently installed node packages by name
required: [history, running_queue, pending_queue, installed_packs]
# WebSocket Message Models
ManagerMessageName:
type: string
enum: [cm-task-completed, cm-task-started, cm-queue-status]
description: WebSocket message type constants for manager events
MessageTaskDone:
type: object
properties:
ui_id:
type: string
description: Task identifier
result:
type: string
description: Task result message
kind:
type: string
description: Type of task
status:
$ref: '#/components/schemas/TaskExecutionStatus'
timestamp:
type: string
format: date-time
description: ISO timestamp when task completed
state:
$ref: '#/components/schemas/TaskStateMessage'
required: [ui_id, result, kind, timestamp, state]
MessageTaskStarted:
type: object
properties:
ui_id:
type: string
description: Task identifier
kind:
type: string
description: Type of task
timestamp:
type: string
format: date-time
description: ISO timestamp when task started
state:
$ref: '#/components/schemas/TaskStateMessage'
required: [ui_id, kind, timestamp, state]
MessageTaskFailed:
type: object
properties:
ui_id:
type: string
description: Task identifier
error:
type: string
description: Error message
kind:
type: string
description: Type of task
timestamp:
type: string
format: date-time
description: ISO timestamp when task failed
state:
$ref: '#/components/schemas/TaskStateMessage'
required: [ui_id, error, kind, timestamp, state]
MessageUpdate:
oneOf:
- $ref: '#/components/schemas/MessageTaskDone'
- $ref: '#/components/schemas/MessageTaskStarted'
- $ref: '#/components/schemas/MessageTaskFailed'
description: Union type for all possible WebSocket message updates
# Manager Package Models
ManagerPackInfo:
type: object
properties:
id:
type: string
description: Either github-author/github-repo or name of pack from the registry
version:
type: string
description: Semantic version or Git commit hash
ui_id:
type: string
description: Task ID - generated internally
required: [id, version]
ManagerPackInstalled:
type: object
properties:
ver:
type: string
description: The version of the pack that is installed (Git commit hash or semantic version)
cnr_id:
type: [string, 'null']
description: The name of the pack if installed from the registry (normalized lowercase)
original_name:
type: [string, 'null']
description: The original case-preserved name of the pack from the registry
aux_id:
type: [string, 'null']
description: The name of the pack if installed from github (author/repo-name format)
enabled:
type: boolean
description: Whether the pack is enabled
required: [ver, enabled]
SelectedVersion:
type: string
enum: [latest, nightly]
description: Version selection for pack installation
ManagerChannel:
type: string
enum: [default, recent, legacy, forked, dev, tutorial]
description: Channel for pack sources
ManagerDatabaseSource:
type: string
enum: [remote, local, cache]
description: Source for pack information
ManagerPackState:
type: string
enum: [installed, disabled, not_installed, import_failed, needs_update]
description: Current state of a pack
ManagerPackInstallType:
type: string
enum: [git-clone, copy, cnr]
description: Type of installation used for the pack
SecurityLevel:
type: string
enum: [strong, normal, normal-, weak]
description: Security level configuration (from most to least restrictive)
NetworkMode:
type: string
enum: [public, private, offline]
description: Network mode configuration
RiskLevel:
type: string
enum: [block, high+, high, middle+, middle]
description: Risk classification for operations
ManagerPack:
allOf:
- $ref: '#/components/schemas/ManagerPackInfo'
- type: object
properties:
author:
type: string
description: Pack author name or 'Unclaimed' if added via GitHub crawl
files:
type: array
items:
type: string
description: Repository URLs for installation (typically contains one GitHub URL)
reference:
type: string
description: The type of installation reference
title:
type: string
description: The display name of the pack
cnr_latest:
$ref: '#/components/schemas/SelectedVersion'
repository:
type: string
description: GitHub repository URL
state:
$ref: '#/components/schemas/ManagerPackState'
update-state:
type: [string, 'null']
enum: ['false', 'true']
description: Update availability status
stars:
type: integer
description: GitHub stars count
last_update:
type: string
format: date-time
description: Last update timestamp
health:
type: string
description: Health status of the pack
description:
type: string
description: Pack description
trust:
type: boolean
description: Whether the pack is trusted
install_type:
$ref: '#/components/schemas/ManagerPackInstallType'
# Installation Parameters
InstallPackParams:
allOf:
- $ref: '#/components/schemas/ManagerPackInfo'
- type: object
properties:
selected_version:
oneOf:
- type: string
- $ref: '#/components/schemas/SelectedVersion'
description: Semantic version, Git commit hash, latest, or nightly
repository:
type: string
description: GitHub repository URL (required if selected_version is nightly)
pip:
type: array
items:
type: string
description: PyPi dependency names
mode:
$ref: '#/components/schemas/ManagerDatabaseSource'
channel:
$ref: '#/components/schemas/ManagerChannel'
skip_post_install:
type: boolean
description: Whether to skip post-installation steps
required: [selected_version]
UpdateAllPacksParams:
type: object
properties:
mode:
$ref: '#/components/schemas/ManagerDatabaseSource'
ui_id:
type: string
description: Task ID - generated internally
UpdatePackParams:
type: object
properties:
node_name:
type: string
description: Name of the node package to update
node_ver:
type: [string, 'null']
description: Current version of the node package
required: [node_name]
UpdateComfyUIParams:
type: object
properties:
is_stable:
type: boolean
description: Whether to update to stable version (true) or nightly (false)
default: true
target_version:
type: [string, 'null']
description: Specific version to switch to (for version switching operations)
required: []
FixPackParams:
type: object
properties:
node_name:
type: string
description: Name of the node package to fix
node_ver:
type: string
description: Version of the node package
required: [node_name, node_ver]
UninstallPackParams:
type: object
properties:
node_name:
type: string
description: Name of the node package to uninstall
is_unknown:
type: boolean
description: Whether this is an unknown/unregistered package
default: false
required: [node_name]
DisablePackParams:
type: object
properties:
node_name:
type: string
description: Name of the node package to disable
is_unknown:
type: boolean
description: Whether this is an unknown/unregistered package
default: false
required: [node_name]
EnablePackParams:
type: object
properties:
cnr_id:
type: string
description: ComfyUI Node Registry ID of the package to enable
required: [cnr_id]
# Query Parameter Models
UpdateAllQueryParams:
type: object
properties:
client_id:
type: string
description: Client identifier that initiated the request
ui_id:
type: string
description: Base UI identifier for task tracking
mode:
$ref: '#/components/schemas/ManagerDatabaseSource'
required: [client_id, ui_id]
UpdateComfyUIQueryParams:
type: object
properties:
client_id:
type: string
description: Client identifier that initiated the request
ui_id:
type: string
description: UI identifier for task tracking
stable:
type: boolean
default: true
description: Whether to update to stable version (true) or nightly (false)
required: [client_id, ui_id]
ComfyUISwitchVersionQueryParams:
type: object
properties:
ver:
type: string
description: Version to switch to
client_id:
type: string
description: Client identifier that initiated the request
ui_id:
type: string
description: UI identifier for task tracking
required: [ver, client_id, ui_id]
# Queue Status Models
QueueStatus:
type: object
properties:
total_count:
type: integer
description: Total number of tasks (pending + running)
done_count:
type: integer
description: Number of completed tasks
in_progress_count:
type: integer
description: Number of tasks currently running
pending_count:
type: integer
description: Number of tasks waiting to be executed
is_processing:
type: boolean
description: Whether the task worker is active
client_id:
type: string
description: Client ID (when filtered by client)
required: [total_count, done_count, in_progress_count, is_processing]
# Mappings Model
ManagerMappings:
type: object
additionalProperties:
type: array
description: Tuple of [node_names, metadata]
items:
oneOf:
- type: array
items:
type: string
description: List of ComfyNode names included in the pack
- type: object
properties:
title_aux:
type: string
description: The display name of the pack
# Model Management
ModelMetadata:
type: object
properties:
name:
type: string
description: Name of the model
type:
type: string
description: Type of model
base:
type: string
description: Base model type
save_path:
type: string
description: Path for saving the model
url:
type: string
description: Download URL
filename:
type: string
description: Target filename
ui_id:
type: string
description: ID for UI reference
required: [name, type, url, filename]
# Legacy Node Package Model (for backward compatibility)
NodePackageMetadata:
type: object
properties:
title:
type: string
description: Display name of the node package
name:
type: string
description: Repository/package name
files:
type: array
items:
type: string
description: Source URLs for the package
description:
type: string
description: Description of the node package functionality
install_type:
type: string
enum: [git, copy, pip]
description: Installation method
version:
type: string
description: Version identifier
id:
type: string
description: Unique identifier for the node package
ui_id:
type: string
description: ID for UI reference
channel:
type: string
description: Source channel
mode:
type: string
description: Source mode
# Snapshot Models
SnapshotItem:
type: string
description: Name of the snapshot
# Error Models
Error:
type: object
properties:
error:
type: string
description: Error message
required: [error]
# Response Models
InstalledPacksResponse:
type: object
additionalProperties:
$ref: '#/components/schemas/ManagerPackInstalled'
description: Map of pack names to their installation info
HistoryResponse:
type: object
properties:
history:
type: object
additionalProperties:
$ref: '#/components/schemas/TaskHistoryItem'
description: Map of task IDs to their history items
HistoryListResponse:
type: object
properties:
ids:
type: array
items:
type: string
description: List of available batch history IDs
# State Management Models
InstalledNodeInfo:
type: object
properties:
name:
type: string
description: Node package name
version:
type: string
description: Installed version
repository_url:
type: [string, 'null']
description: Git repository URL
install_method:
type: string
description: Installation method (cnr, git, pip, etc.)
enabled:
type: boolean
description: Whether the node is currently enabled
default: true
install_date:
type: [string, 'null']
format: date-time
description: ISO timestamp of installation
required: [name, version, install_method]
InstalledModelInfo:
type: object
properties:
name:
type: string
description: Model filename
path:
type: string
description: Full path to model file
type:
type: string
description: Model type (checkpoint, lora, vae, etc.)
size_bytes:
type: [integer, 'null']
description: File size in bytes
minimum: 0
hash:
type: [string, 'null']
description: Model file hash for verification
install_date:
type: [string, 'null']
format: date-time
description: ISO timestamp when added
required: [name, path, type]
ComfyUIVersionInfo:
type: object
properties:
version:
type: string
description: ComfyUI version string
commit_hash:
type: [string, 'null']
description: Git commit hash
branch:
type: [string, 'null']
description: Git branch name
is_stable:
type: boolean
description: Whether this is a stable release
default: false
last_updated:
type: [string, 'null']
format: date-time
description: ISO timestamp of last update
required: [version]
BatchOperation:
type: object
properties:
operation_id:
type: string
description: Unique operation identifier
operation_type:
$ref: '#/components/schemas/OperationType'
target:
type: string
description: Target of the operation (node name, model name, etc.)
target_version:
type: [string, 'null']
description: Target version for the operation
result:
$ref: '#/components/schemas/OperationResult'
error_message:
type: [string, 'null']
description: Error message if operation failed
start_time:
type: string
format: date-time
description: ISO timestamp when operation started
end_time:
type: [string, 'null']
format: date-time
description: ISO timestamp when operation completed
client_id:
type: [string, 'null']
description: Client that initiated the operation
required: [operation_id, operation_type, target, result, start_time]
ComfyUISystemState:
type: object
properties:
snapshot_time:
type: string
format: date-time
description: ISO timestamp when snapshot was taken
comfyui_version:
$ref: '#/components/schemas/ComfyUIVersionInfo'
frontend_version:
type: [string, 'null']
description: ComfyUI frontend version if available
python_version:
type: string
description: Python interpreter version
platform_info:
type: string
description: Operating system and platform information
installed_nodes:
type: object
additionalProperties:
$ref: '#/components/schemas/InstalledNodeInfo'
description: Map of installed node packages by name
installed_models:
type: object
additionalProperties:
$ref: '#/components/schemas/InstalledModelInfo'
description: Map of installed models by name
manager_config:
type: object
additionalProperties: true
description: ComfyUI Manager configuration settings
comfyui_root_path:
type: [string, 'null']
description: ComfyUI root installation directory
model_paths:
type: object
additionalProperties:
type: array
items:
type: string
description: Map of model types to their configured paths
manager_version:
type: [string, 'null']
description: ComfyUI Manager version
security_level:
$ref: '#/components/schemas/SecurityLevel'
network_mode:
$ref: '#/components/schemas/NetworkMode'
cli_args:
type: object
additionalProperties: true
description: Selected ComfyUI CLI arguments
custom_nodes_count:
type: [integer, 'null']
description: Total number of custom node packages
minimum: 0
failed_imports:
type: array
items:
type: string
description: List of custom nodes that failed to import
pip_packages:
type: object
additionalProperties:
type: string
description: Map of installed pip packages to their versions
embedded_python:
type: [boolean, 'null']
description: Whether ComfyUI is running from an embedded Python distribution
required: [snapshot_time, comfyui_version, python_version, platform_info]
BatchExecutionRecord:
type: object
properties:
batch_id:
type: string
description: Unique batch identifier
start_time:
type: string
format: date-time
description: ISO timestamp when batch started
end_time:
type: [string, 'null']
format: date-time
description: ISO timestamp when batch completed
state_before:
$ref: '#/components/schemas/ComfyUISystemState'
state_after:
type: ['null']
allOf:
- $ref: '#/components/schemas/ComfyUISystemState'
description: System state after batch execution
operations:
type: array
items:
$ref: '#/components/schemas/BatchOperation'
description: List of operations performed in this batch
total_operations:
type: integer
description: Total number of operations in batch
minimum: 0
default: 0
successful_operations:
type: integer
description: Number of successful operations
minimum: 0
default: 0
failed_operations:
type: integer
description: Number of failed operations
minimum: 0
default: 0
skipped_operations:
type: integer
description: Number of skipped operations
minimum: 0
default: 0
required: [batch_id, start_time, state_before]
ImportFailInfoBulkRequest:
type: object
properties:
cnr_ids:
type: array
items:
type: string
description: A list of CNR IDs to check.
urls:
type: array
items:
type: string
description: A list of repository URLs to check.
ImportFailInfoBulkResponse:
type: object
additionalProperties:
$ref: '#/components/schemas/ImportFailInfoItem'
description: >-
A dictionary where each key is a cnr_id or url from the request,
and the value is the corresponding error info.
ImportFailInfoItem:
oneOf:
- type: object
properties:
error:
type: string
traceback:
type: string
- type: "null"
securitySchemes:
securityLevel:
type: apiKey
in: header
name: Security-Level
description: Security level for sensitive operations
parameters:
modeParam:
name: mode
in: query
description: Source mode (e.g., "local", "remote")
schema:
$ref: '#/components/schemas/ManagerDatabaseSource'
targetParam:
name: target
in: query
description: Target identifier
required: true
schema:
type: string
valueParam:
name: value
in: query
description: New value to set
required: true
schema:
type: string
clientIdParam:
name: client_id
in: query
description: Client ID for filtering tasks
schema:
type: string
uiIdParam:
name: ui_id
in: query
description: Specific task ID to retrieve
schema:
type: string
clientIdRequiredParam:
name: client_id
in: query
required: true
description: Required client ID that initiated the request
schema:
type: string
uiIdRequiredParam:
name: ui_id
in: query
required: true
description: Required unique task identifier
schema:
type: string
maxItemsParam:
name: max_items
in: query
description: Maximum number of items to return
schema:
type: integer
minimum: 1
offsetParam:
name: offset
in: query
description: Offset for pagination
schema:
type: integer
minimum: 0
# API Paths
paths:
# Task Queue Management (v2 endpoints)
/v2/manager/queue/task:
post:
summary: Add task to queue
description: Adds a new task to the processing queue
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/QueueTaskItem'
examples:
install:
summary: Install a custom node
value:
ui_id: "task_123"
client_id: "client_abc"
kind: "install"
params:
id: "pythongosssss/ComfyUI-Custom-Scripts"
version: "latest"
selected_version: "latest"
mode: "remote"
channel: "default"
update:
summary: Update a custom node
value:
ui_id: "task_124"
client_id: "client_abc"
kind: "update"
params:
node_name: "ComfyUI-Custom-Scripts"
node_ver: "1.0.0"
update-all:
summary: Update all custom nodes
value:
ui_id: "task_125"
client_id: "client_abc"
kind: "update-all"
params:
mode: "remote"
update-comfyui:
summary: Update ComfyUI itself
value:
ui_id: "task_126"
client_id: "client_abc"
kind: "update-comfyui"
params:
is_stable: true
fix:
summary: Fix a custom node
value:
ui_id: "task_127"
client_id: "client_abc"
kind: "fix"
params:
node_name: "ComfyUI-Impact-Pack"
node_ver: "2.0.0"
uninstall:
summary: Uninstall a custom node
value:
ui_id: "task_128"
client_id: "client_abc"
kind: "uninstall"
params:
node_name: "ComfyUI-AnimateDiff-Evolved"
is_unknown: false
disable:
summary: Disable a custom node
value:
ui_id: "task_129"
client_id: "client_abc"
kind: "disable"
params:
node_name: "ComfyUI-Manager"
is_unknown: false
enable:
summary: Enable a custom node
value:
ui_id: "task_130"
client_id: "client_abc"
kind: "enable"
params:
cnr_id: "comfyui-manager"
install-model:
summary: Install a model
value:
ui_id: "task_131"
client_id: "client_abc"
kind: "install-model"
params:
name: "SD 1.5 Base Model"
type: "checkpoint"
base: "SD1.x"
save_path: "default"
url: "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.safetensors"
filename: "v1-5-pruned.safetensors"
responses:
'200':
description: Task queued successfully
'400':
description: Invalid task data
'500':
description: Internal server error
/v2/manager/queue/status:
get:
summary: Get queue status
description: Returns the current status of the operation queue with optional client filtering
parameters:
- $ref: '#/components/parameters/clientIdParam'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/QueueStatus'
/v2/manager/queue/history:
get:
summary: Get task history
description: Get task history with optional filtering
parameters:
- name: id
in: query
description: Batch history ID (for file-based history)
schema:
type: string
- $ref: '#/components/parameters/clientIdParam'
- $ref: '#/components/parameters/uiIdParam'
- $ref: '#/components/parameters/maxItemsParam'
- $ref: '#/components/parameters/offsetParam'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/HistoryResponse'
- type: object # File-based batch history
'400':
description: Error retrieving history
/v2/manager/queue/history_list:
get:
summary: Get available batch history files
description: Returns a list of batch history IDs sorted by modification time
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/HistoryListResponse'
'400':
description: Error retrieving history list
/v2/manager/queue/start:
get:
summary: Start queue processing
description: Starts processing the operation queue
responses:
'200':
description: Processing started
'201':
description: Processing already in progress
/v2/customnode/import_fail_info_bulk:
post:
summary: Get import failure info for multiple nodes
description: Retrieves recorded import failure information for a list of custom nodes.
tags:
- customnode
requestBody:
description: A list of CNR IDs or repository URLs to check.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportFailInfoBulkRequest'
responses:
'200':
description: A dictionary containing the import failure information.
content:
application/json:
schema:
$ref: '#/components/schemas/ImportFailInfoBulkResponse'
'400':
description: Bad Request. The request body is invalid.
'500':
description: Internal Server Error.
/v2/manager/queue/reset:
get:
summary: Reset queue
description: Resets the operation queue
responses:
'200':
description: Queue reset successfully
/v2/manager/queue/update_all:
get:
summary: Update all custom nodes
description: Queues update operations for all installed custom nodes
security:
- securityLevel: []
parameters:
- $ref: '#/components/parameters/modeParam'
- $ref: '#/components/parameters/clientIdRequiredParam'
- $ref: '#/components/parameters/uiIdRequiredParam'
responses:
'200':
description: Update queued successfully
'400':
description: Missing required parameters
'401':
description: Processing already in progress
'403':
description: Security policy violation
/v2/manager/queue/update_comfyui:
get:
summary: Update ComfyUI
description: Queues an update operation for ComfyUI itself
parameters:
- $ref: '#/components/parameters/clientIdRequiredParam'
- $ref: '#/components/parameters/uiIdRequiredParam'
responses:
'200':
description: Update queued successfully
'400':
description: Missing required parameters
/v2/manager/queue/install_model:
post:
summary: Install model
description: Queues installation of a model
security:
- securityLevel: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ModelMetadata'
responses:
'200':
description: Installation queued successfully
'400':
description: Invalid model request
'403':
description: Security policy violation
# Custom Nodes Endpoints (v2)
/v2/customnode/getmappings:
get:
summary: Get node-to-package mappings
description: Provides unified mapping between nodes and node packages
parameters:
- $ref: '#/components/parameters/modeParam'
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ManagerMappings'
/v2/customnode/fetch_updates:
get:
summary: Check for updates
description: Fetches updates for custom nodes
parameters:
- $ref: '#/components/parameters/modeParam'
responses:
'200':
description: No updates available
'201':
description: Updates found
'400':
description: Error occurred
/v2/customnode/installed:
get:
summary: Get installed custom nodes
description: Returns a list of installed node packages
parameters:
- name: mode
in: query
description: Lists mode, default or imported
schema:
type: string
enum: [default, imported]
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/InstalledPacksResponse'
/v2/customnode/import_fail_info:
post:
summary: Get import failure information
description: Returns information about why a node failed to import
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
cnr_id:
type: string
url:
type: string
responses:
'200':
description: Successful operation
'400':
description: No information available
# Snapshot Management Endpoints (v2)
/v2/snapshot/getlist:
get:
summary: Get snapshot list
description: Returns a list of available snapshots
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/SnapshotItem'
/v2/snapshot/remove:
get:
summary: Remove snapshot
description: Removes a specified snapshot
security:
- securityLevel: []
parameters:
- $ref: '#/components/parameters/targetParam'
responses:
'200':
description: Snapshot removed successfully
'400':
description: Error removing snapshot
'403':
description: Security policy violation
/v2/snapshot/restore:
get:
summary: Restore snapshot
description: Restores a specified snapshot
security:
- securityLevel: []
parameters:
- $ref: '#/components/parameters/targetParam'
responses:
'200':
description: Snapshot restoration scheduled
'400':
description: Error restoring snapshot
'403':
description: Security policy violation
/v2/snapshot/get_current:
get:
summary: Get current snapshot
description: Returns the current system state as a snapshot
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
'400':
description: Error creating snapshot
/v2/snapshot/save:
get:
summary: Save snapshot
description: Saves the current system state as a new snapshot
responses:
'200':
description: Snapshot saved successfully
'400':
description: Error saving snapshot
# ComfyUI Management Endpoints (v2)
/v2/comfyui_manager/comfyui_versions:
get:
summary: Get ComfyUI versions
description: Returns available and current ComfyUI versions
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
versions:
type: array
items:
type: string
current:
type: string
'400':
description: Error retrieving versions
/v2/comfyui_manager/comfyui_switch_version:
get:
summary: Switch ComfyUI version
description: Switches to a specified ComfyUI version
parameters:
- name: ver
in: query
required: true
description: Target version
schema:
type: string
- $ref: '#/components/parameters/clientIdRequiredParam'
- $ref: '#/components/parameters/uiIdRequiredParam'
responses:
'200':
description: Version switch queued successfully
'400':
description: Missing required parameters or error switching version
# Configuration Endpoints (v2)
/v2/manager/db_mode:
get:
summary: Get or set database mode
description: Gets or sets the database mode
parameters:
- name: value
in: query
required: false
description: New database mode
schema:
type: string
enum: [channel, local, remote]
responses:
'200':
description: Setting updated or current value returned
content:
text/plain:
schema:
type: string
/v2/manager/policy/update:
get:
summary: Get or set update policy
description: Gets or sets the update policy
parameters:
- name: value
in: query
required: false
description: New update policy
schema:
type: string
enum: [stable, nightly, nightly-comfyui]
responses:
'200':
description: Setting updated or current value returned
content:
text/plain:
schema:
type: string
/v2/manager/channel_url_list:
get:
summary: Get or set channel URL
description: Gets or sets the channel URL for custom node sources
parameters:
- name: value
in: query
required: false
description: New channel name
schema:
type: string
responses:
'200':
description: Setting updated or channel list returned
content:
application/json:
schema:
type: object
properties:
selected:
type: string
list:
type: array
items:
type: object
properties:
name:
type: string
url:
type: string
/v2/manager/reboot:
get:
summary: Reboot ComfyUI
description: Restarts the ComfyUI server
security:
- securityLevel: []
responses:
'200':
description: Reboot initiated
'403':
description: Security policy violation
/v2/manager/version:
get:
summary: Get manager version
description: Returns the current version of ComfyUI-Manager
responses:
'200':
description: Successful operation
content:
text/plain:
schema:
type: string
/v2/manager/is_legacy_manager_ui:
get:
summary: Check if legacy manager UI is enabled
description: Returns whether the legacy manager UI is enabled
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
is_legacy_manager_ui:
type: boolean