Buckets:
| openapi: 3.1.0 | |
| info: | |
| title: ComfyUI API | |
| description: | | |
| API for ComfyUI - A powerful and modular stable diffusion GUI and backend. | |
| This API allows you to interact with ComfyUI programmatically, including: | |
| - Submitting and managing workflow executions | |
| - Querying node/object information | |
| - Uploading and viewing files | |
| - Managing user settings and data | |
| - Asset management (feature-gated) | |
| ## Dual-path routing | |
| Every route registered via `self.routes` in the ComfyUI server is available at | |
| both its bare path (e.g. `/prompt`) and an `/api`-prefixed path (e.g. `/api/prompt`). | |
| This spec uses the `/api`-prefixed versions as canonical. | |
| ## Multi-user mode | |
| When ComfyUI is started with `--multi-user`, the `Comfy-User` header identifies | |
| the active user for settings, userdata, and history isolation. This is **not** a | |
| security mechanism — it is an organisational convenience with no authentication | |
| or authorisation behind it. | |
| version: 1.0.0 | |
| license: | |
| name: GNU General Public License v3.0 | |
| url: https://github.com/comfyanonymous/ComfyUI/blob/master/LICENSE | |
| servers: | |
| - url: / | |
| description: Default ComfyUI server (typically http://127.0.0.1:8188) | |
| tags: | |
| - name: prompt | |
| description: Workflow submission and prompt info | |
| - name: queue | |
| description: Queue inspection and management | |
| - name: history | |
| description: Execution history | |
| - name: upload | |
| description: File upload endpoints | |
| - name: view | |
| description: File viewing / download | |
| - name: system | |
| description: System stats and feature flags | |
| - name: node | |
| description: Node / object_info definitions | |
| - name: model | |
| description: Model folder and file listing | |
| - name: user | |
| description: User management (multi-user mode) | |
| - name: userdata | |
| description: Per-user file storage | |
| - name: settings | |
| description: Per-user settings | |
| - name: extensions | |
| description: Frontend extension JS files | |
| - name: subgraph | |
| description: Global subgraph blueprints | |
| - name: internal | |
| description: Internal / debug endpoints | |
| - name: assets | |
| description: Asset management (feature-gated behind enable-assets) | |
| paths: | |
| # --------------------------------------------------------------------------- | |
| # WebSocket | |
| # --------------------------------------------------------------------------- | |
| /ws: | |
| get: | |
| operationId: connectWebSocket | |
| tags: [system] | |
| summary: WebSocket connection for real-time updates | |
| description: | | |
| Upgrades to a WebSocket connection that streams execution progress, | |
| node status, and output messages. The server sends an initial `status` | |
| message with the session ID (SID) on connect. | |
| ## Message types (server → client) | |
| The server sends JSON messages with a `type` field. See the | |
| `x-websocket-messages` list below for the schema of each message type. | |
| parameters: | |
| - name: clientId | |
| in: query | |
| required: false | |
| schema: | |
| type: string | |
| description: Client identifier. If omitted the server assigns one. | |
| responses: | |
| "101": | |
| description: WebSocket upgrade successful | |
| x-websocket-messages: | |
| - type: status | |
| schema: | |
| $ref: "#/components/schemas/StatusWsMessage" | |
| - type: progress | |
| schema: | |
| $ref: "#/components/schemas/ProgressWsMessage" | |
| - type: progress_text | |
| schema: | |
| $ref: "#/components/schemas/ProgressTextWsMessage" | |
| - type: progress_state | |
| schema: | |
| $ref: "#/components/schemas/ProgressStateWsMessage" | |
| - type: executing | |
| schema: | |
| $ref: "#/components/schemas/ExecutingWsMessage" | |
| - type: executed | |
| schema: | |
| $ref: "#/components/schemas/ExecutedWsMessage" | |
| - type: execution_start | |
| schema: | |
| $ref: "#/components/schemas/ExecutionStartWsMessage" | |
| - type: execution_success | |
| schema: | |
| $ref: "#/components/schemas/ExecutionSuccessWsMessage" | |
| - type: execution_cached | |
| schema: | |
| $ref: "#/components/schemas/ExecutionCachedWsMessage" | |
| - type: execution_interrupted | |
| schema: | |
| $ref: "#/components/schemas/ExecutionInterruptedWsMessage" | |
| - type: execution_error | |
| schema: | |
| $ref: "#/components/schemas/ExecutionErrorWsMessage" | |
| - type: logs | |
| schema: | |
| $ref: "#/components/schemas/LogsWsMessage" | |
| - type: notification | |
| schema: | |
| $ref: "#/components/schemas/NotificationWsMessage" | |
| - type: feature_flags | |
| schema: | |
| $ref: "#/components/schemas/FeatureFlagsWsMessage" | |
| - type: asset_download | |
| schema: | |
| $ref: "#/components/schemas/AssetDownloadWsMessage" | |
| - type: asset_export | |
| schema: | |
| $ref: "#/components/schemas/AssetExportWsMessage" | |
| # --------------------------------------------------------------------------- | |
| # Prompt | |
| # --------------------------------------------------------------------------- | |
| /api/prompt: | |
| get: | |
| operationId: getPromptInfo | |
| tags: [prompt] | |
| summary: Get queue status | |
| description: Returns how many items remain in the execution queue. | |
| responses: | |
| "200": | |
| description: Queue info | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/PromptInfo" | |
| post: | |
| operationId: executePrompt | |
| tags: [prompt] | |
| summary: Submit a workflow for execution | |
| description: Submits a workflow for execution. The server validates the graph, assigns a `prompt_id`, and enqueues it. Clients listen on `/ws` for execution progress and output messages. | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/PromptRequest" | |
| responses: | |
| "200": | |
| description: Prompt accepted | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/PromptResponse" | |
| "400": | |
| description: Validation or node errors | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/PromptErrorResponse" | |
| # --------------------------------------------------------------------------- | |
| # Queue | |
| # --------------------------------------------------------------------------- | |
| /api/queue: | |
| get: | |
| operationId: getQueue | |
| tags: [queue] | |
| summary: Get running and pending queue items | |
| description: Returns the server's current execution queue, split into the currently-running prompt and the list of pending prompts. | |
| responses: | |
| "200": | |
| description: Queue contents | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/QueueInfo" | |
| post: | |
| operationId: manageQueue | |
| tags: [queue] | |
| summary: Clear or delete items from the queue | |
| description: Mutates the execution queue. Supports clearing all queued prompts or deleting individual prompts by ID. | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/QueueManageRequest" | |
| responses: | |
| "200": | |
| description: Queue updated | |
| /api/interrupt: | |
| post: | |
| operationId: interruptExecution | |
| tags: [queue] | |
| summary: Interrupt current execution | |
| description: Interrupts the prompt that is currently executing. The next queued prompt (if any) will start immediately after. | |
| requestBody: | |
| required: false | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| prompt_id: | |
| type: string | |
| format: uuid | |
| description: "If provided, only interrupts this specific running prompt. Otherwise interrupts all." | |
| responses: | |
| "200": | |
| description: Interrupt signal sent | |
| /api/free: | |
| post: | |
| operationId: freeMemory | |
| tags: [queue] | |
| summary: Free GPU memory and/or unload models | |
| description: Frees GPU memory by unloading models and/or freeing the resident model cache, controlled by the request flags. | |
| requestBody: | |
| required: false | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| unload_models: | |
| type: boolean | |
| description: Unload all models from VRAM/RAM | |
| free_memory: | |
| type: boolean | |
| description: Run garbage collection and free cached memory | |
| responses: | |
| "200": | |
| description: Memory freed | |
| # --------------------------------------------------------------------------- | |
| # Jobs | |
| # --------------------------------------------------------------------------- | |
| /api/jobs: | |
| get: | |
| operationId: listJobs | |
| tags: [queue] | |
| summary: List jobs with filtering and pagination | |
| description: Returns a paginated list of completed prompt executions, newest first. | |
| parameters: | |
| - name: status | |
| in: query | |
| schema: | |
| type: string | |
| description: Filter by job status | |
| - name: workflow_id | |
| in: query | |
| schema: | |
| type: string | |
| description: Filter by workflow ID | |
| - name: sort_by | |
| in: query | |
| schema: | |
| type: string | |
| description: Field to sort by | |
| - name: sort_order | |
| in: query | |
| schema: | |
| type: string | |
| enum: [asc, desc] | |
| description: Sort direction | |
| - name: limit | |
| in: query | |
| schema: | |
| type: integer | |
| description: Maximum number of results (default is unlimited/None) | |
| - name: offset | |
| in: query | |
| schema: | |
| type: integer | |
| default: 0 | |
| description: Pagination offset | |
| responses: | |
| "200": | |
| description: Jobs list | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| jobs: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/JobEntry" | |
| pagination: | |
| $ref: "#/components/schemas/PaginationInfo" | |
| /api/jobs/{job_id}: | |
| get: | |
| operationId: getJob | |
| tags: [queue] | |
| summary: Get a single job by ID | |
| description: Returns the full record for a single completed prompt execution, including its outputs, status, and metadata. | |
| parameters: | |
| - name: job_id | |
| in: path | |
| description: The job (prompt) ID to fetch. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| responses: | |
| "200": | |
| description: Job detail | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/JobDetailResponse" | |
| "404": | |
| description: Job not found | |
| # --------------------------------------------------------------------------- | |
| # History | |
| # --------------------------------------------------------------------------- | |
| /api/history: | |
| get: | |
| operationId: getHistory | |
| tags: [history] | |
| summary: Get execution history | |
| deprecated: true | |
| description: | | |
| **Deprecated.** Superseded by `GET /api/jobs`, which returns the same | |
| execution records in a paginated, filterable format. Planned for removal | |
| no earlier than a future major release; sunset timeline TBD. | |
| Returns a dictionary keyed by prompt_id. Each value is a HistoryEntry | |
| containing prompt metadata, outputs, status, and node meta. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: max_items | |
| in: query | |
| schema: | |
| type: integer | |
| description: Maximum number of history entries to return | |
| - name: offset | |
| in: query | |
| schema: | |
| type: integer | |
| description: Pagination offset (number of entries to skip) | |
| responses: | |
| "200": | |
| description: History dictionary keyed by prompt_id | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| $ref: "#/components/schemas/HistoryEntry" | |
| post: | |
| operationId: manageHistory | |
| tags: [history] | |
| summary: Clear or delete history entries | |
| deprecated: true | |
| description: | | |
| **Deprecated.** Superseded by the forthcoming job-management endpoints | |
| under `/api/jobs`. Planned for removal no earlier than a future major | |
| release; sunset timeline TBD. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/HistoryManageRequest" | |
| responses: | |
| "200": | |
| description: History updated | |
| /api/history/{prompt_id}: | |
| get: | |
| operationId: getHistoryByPromptId | |
| tags: [history] | |
| summary: Get history for a specific prompt | |
| deprecated: true | |
| description: | | |
| **Deprecated.** Superseded by `GET /api/jobs/{job_id}`, which returns | |
| the same execution record. Planned for removal no earlier than a future | |
| major release; sunset timeline TBD. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: prompt_id | |
| in: path | |
| description: The prompt ID to fetch history for. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| responses: | |
| "200": | |
| description: Single-entry history dictionary. Returns an empty object `{}` if the prompt_id is not found. | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| $ref: "#/components/schemas/HistoryEntry" | |
| # --------------------------------------------------------------------------- | |
| # Upload | |
| # --------------------------------------------------------------------------- | |
| /api/upload/image: | |
| post: | |
| operationId: uploadImage | |
| tags: [upload] | |
| summary: Upload an image file | |
| description: Uploads an image file into one of the input/output/temp directories so it can be referenced by workflow nodes. | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: | |
| - image | |
| properties: | |
| image: | |
| type: string | |
| format: binary | |
| description: Image file to upload | |
| type: | |
| type: string | |
| enum: [input, temp, output] | |
| default: input | |
| description: Target directory type | |
| overwrite: | |
| type: string | |
| description: 'Set to "true" to overwrite existing files' | |
| subfolder: | |
| type: string | |
| description: Subfolder within the target directory | |
| responses: | |
| "200": | |
| description: Upload result | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/UploadResult" | |
| "400": | |
| description: No file provided or invalid request | |
| /api/upload/mask: | |
| post: | |
| operationId: uploadMask | |
| tags: [upload] | |
| summary: Upload a mask image | |
| description: Uploads a mask image associated with a previously-uploaded reference image. | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: | |
| - image | |
| - original_ref | |
| properties: | |
| image: | |
| type: string | |
| format: binary | |
| description: Mask image (alpha channel is used) | |
| original_ref: | |
| type: object | |
| description: Reference to the original image file | |
| required: | |
| - filename | |
| properties: | |
| filename: | |
| type: string | |
| description: Filename of the original image | |
| additionalProperties: true | |
| type: | |
| type: string | |
| enum: [input, temp, output] | |
| default: input | |
| description: Target directory type | |
| overwrite: | |
| type: string | |
| description: 'Set to "true" to overwrite existing files' | |
| subfolder: | |
| type: string | |
| description: Subfolder within the target directory | |
| responses: | |
| "200": | |
| description: Upload result | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/UploadResult" | |
| "400": | |
| description: No file provided or invalid request | |
| # --------------------------------------------------------------------------- | |
| # View | |
| # --------------------------------------------------------------------------- | |
| /api/view: | |
| get: | |
| operationId: viewFile | |
| tags: [view] | |
| summary: View or download a file | |
| description: Serves a file (image, audio, or video) from the input/output/temp directory identified by the query parameters. | |
| parameters: | |
| - name: filename | |
| in: query | |
| required: true | |
| schema: | |
| type: string | |
| description: Name of the file to view | |
| - name: type | |
| in: query | |
| schema: | |
| type: string | |
| enum: [input, output, temp] | |
| default: output | |
| description: Directory type | |
| - name: subfolder | |
| in: query | |
| schema: | |
| type: string | |
| description: Subfolder within the directory | |
| - name: preview | |
| in: query | |
| schema: | |
| type: string | |
| description: Preview format hint (e.g. "webp;90") | |
| - name: channel | |
| in: query | |
| schema: | |
| type: string | |
| enum: [rgba, rgb, a] | |
| description: Channel extraction mode | |
| responses: | |
| "200": | |
| description: File content | |
| content: | |
| image/*: | |
| schema: | |
| type: string | |
| format: binary | |
| video/*: | |
| schema: | |
| type: string | |
| format: binary | |
| audio/*: | |
| schema: | |
| type: string | |
| format: binary | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| "404": | |
| description: File not found | |
| /api/view_metadata/{folder_name}: | |
| get: | |
| operationId: viewMetadata | |
| tags: [view] | |
| summary: Get metadata for a file (e.g. safetensors header) | |
| description: Returns embedded metadata parsed from a file in the given folder — for example, the header of a safetensors model. | |
| parameters: | |
| - name: folder_name | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Folder type (output, input, temp, etc.) | |
| - name: filename | |
| in: query | |
| required: true | |
| schema: | |
| type: string | |
| description: Filename to read metadata from | |
| responses: | |
| "200": | |
| description: File metadata | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: true | |
| "404": | |
| description: File or metadata not found | |
| # --------------------------------------------------------------------------- | |
| # System | |
| # --------------------------------------------------------------------------- | |
| /api/system_stats: | |
| get: | |
| operationId: getSystemStats | |
| tags: [system] | |
| summary: Get system statistics | |
| description: Returns hardware, Python, VRAM, and runtime statistics for the running ComfyUI process. | |
| responses: | |
| "200": | |
| description: System stats | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/SystemStatsResponse" | |
| /api/features: | |
| get: | |
| operationId: getFeatures | |
| tags: [system] | |
| summary: Get enabled feature flags | |
| description: Returns a dictionary of feature flag names to their enabled state. | |
| responses: | |
| "200": | |
| description: Feature flags | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| type: boolean | |
| # --------------------------------------------------------------------------- | |
| # Node / Object Info | |
| # --------------------------------------------------------------------------- | |
| /api/object_info: | |
| get: | |
| operationId: getObjectInfo | |
| tags: [node] | |
| summary: Get all node definitions | |
| description: | | |
| Returns a dictionary of every registered node class, keyed by class name. | |
| Each value is a NodeInfo object describing inputs, outputs, category, etc. | |
| responses: | |
| "200": | |
| description: All node definitions | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| $ref: "#/components/schemas/NodeInfo" | |
| /api/object_info/{node_class}: | |
| get: | |
| operationId: getObjectInfoByClass | |
| tags: [node] | |
| summary: Get a single node definition | |
| description: Returns the `NodeInfo` definition for a single registered node class. | |
| parameters: | |
| - name: node_class | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Node class name (e.g. "KSampler") | |
| responses: | |
| "200": | |
| description: Single node definition | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| $ref: "#/components/schemas/NodeInfo" | |
| "404": | |
| description: Node class not found | |
| /api/embeddings: | |
| get: | |
| operationId: getEmbeddings | |
| tags: [node] | |
| summary: List available embedding names | |
| description: Returns the list of text-encoder embeddings available on disk. | |
| responses: | |
| "200": | |
| description: Embedding names | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| # --------------------------------------------------------------------------- | |
| # Models | |
| # --------------------------------------------------------------------------- | |
| /api/models: | |
| get: | |
| operationId: getModelTypes | |
| tags: [model] | |
| summary: List model folder type names | |
| description: Returns an array of model type names (e.g. checkpoints, loras, vae). | |
| responses: | |
| "200": | |
| description: Model type names | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| /api/models/{folder}: | |
| get: | |
| operationId: getModelsByFolder | |
| tags: [model] | |
| summary: List model filenames in a folder | |
| description: Returns the names of model files in the given folder. This endpoint predates `/api/experiment/models/{folder}` and returns names only — prefer the experiment endpoint for new integrations. | |
| parameters: | |
| - name: folder | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Model folder type name | |
| responses: | |
| "200": | |
| description: Model filenames | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| "404": | |
| description: Unknown folder type | |
| /api/experiment/models: | |
| get: | |
| operationId: getExperimentModels | |
| tags: [model] | |
| summary: List model folders with paths | |
| description: Returns an array of model folder objects with name and folder paths. | |
| responses: | |
| "200": | |
| description: Model folders | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/ModelFolder" | |
| /api/experiment/models/{folder}: | |
| get: | |
| operationId: getExperimentModelsByFolder | |
| tags: [model] | |
| summary: List model files with metadata | |
| description: Returns the model files in the given folder with richer metadata (path index, mtime, size) than the legacy `/api/models/{folder}` endpoint. | |
| parameters: | |
| - name: folder | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Model folder type name | |
| responses: | |
| "200": | |
| description: Model files with metadata | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/ModelFile" | |
| "404": | |
| description: Unknown folder type | |
| /api/experiment/models/preview/{folder}/{path_index}/{filename}: | |
| get: | |
| operationId: getModelPreview | |
| tags: [model] | |
| summary: Get model preview image | |
| description: Returns the preview image associated with a model file, if one exists alongside the model on disk. | |
| parameters: | |
| - name: folder | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Model folder type name | |
| - name: path_index | |
| in: path | |
| required: true | |
| schema: | |
| type: integer | |
| description: Path index within the folder | |
| - name: filename | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Model filename | |
| responses: | |
| "200": | |
| description: Preview image (WebP) | |
| content: | |
| image/webp: | |
| schema: | |
| type: string | |
| format: binary | |
| "404": | |
| description: Preview not found | |
| # --------------------------------------------------------------------------- | |
| # Users | |
| # --------------------------------------------------------------------------- | |
| /api/users: | |
| get: | |
| operationId: getUsers | |
| tags: [user] | |
| summary: Get user storage info | |
| description: | | |
| Returns user storage configuration. In single-user mode returns | |
| `{"storage": "server", "migrated": true/false}`. In multi-user mode | |
| returns `{"storage": "server", "users": {"user_id": "user_dir", ...}}`. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| responses: | |
| "200": | |
| description: User info | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| storage: | |
| type: string | |
| description: Storage backend type (always "server") | |
| migrated: | |
| type: boolean | |
| description: Whether migration from browser storage is complete (single-user) | |
| users: | |
| type: object | |
| additionalProperties: | |
| type: string | |
| description: Map of user_id to directory name (multi-user) | |
| post: | |
| operationId: createUser | |
| tags: [user] | |
| summary: Create a new user (multi-user mode) | |
| description: Creates a new user entry. Only meaningful when ComfyUI is running in multi-user mode. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: | |
| - username | |
| properties: | |
| username: | |
| type: string | |
| description: Username for the new user | |
| responses: | |
| "200": | |
| description: Created user ID | |
| content: | |
| application/json: | |
| schema: | |
| type: string | |
| description: The generated user_id | |
| "400": | |
| description: Username already exists or invalid | |
| # --------------------------------------------------------------------------- | |
| # Userdata | |
| # --------------------------------------------------------------------------- | |
| /api/userdata: | |
| get: | |
| operationId: listUserdata | |
| tags: [userdata] | |
| summary: List files in a userdata directory | |
| description: Lists files in the authenticated user's data directory. Returns either filename strings or full objects depending on the `full_info` query parameter. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: dir | |
| in: query | |
| required: true | |
| schema: | |
| type: string | |
| description: Directory path relative to the user's data folder | |
| - name: recurse | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Recurse into subdirectories | |
| - name: full_info | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Return full file info objects instead of just names | |
| - name: split | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Split paths into directory components | |
| responses: | |
| "200": | |
| description: File listing | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/ListUserdataResponse" | |
| "404": | |
| description: Directory not found | |
| /api/v2/userdata: | |
| get: | |
| operationId: listUserdataV2 | |
| tags: [userdata] | |
| summary: List files in userdata (v2 format) | |
| description: Lists files in the authenticated user's data directory using the v2 response shape, which always returns full objects. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: path | |
| in: query | |
| schema: | |
| type: string | |
| description: Directory path relative to user data root | |
| responses: | |
| "200": | |
| description: File listing with metadata | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| path: | |
| type: string | |
| type: | |
| type: string | |
| enum: [file, directory] | |
| size: | |
| type: integer | |
| modified: | |
| type: number | |
| description: Unix timestamp | |
| /api/userdata/{file}: | |
| get: | |
| operationId: getUserdataFile | |
| tags: [userdata] | |
| summary: Read a userdata file | |
| description: Reads the contents of a file from the authenticated user's data directory. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: file | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: File path relative to user data directory | |
| responses: | |
| "200": | |
| description: File content | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| "404": | |
| description: File not found | |
| post: | |
| operationId: writeUserdataFile | |
| tags: [userdata] | |
| summary: Write or create a userdata file | |
| description: Writes (creates or replaces) a file in the authenticated user's data directory. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: file | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: File path relative to user data directory | |
| - name: overwrite | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Allow overwriting existing files | |
| - name: full_info | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Return full file info in response | |
| requestBody: | |
| required: true | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| application/json: | |
| schema: {} | |
| responses: | |
| "200": | |
| description: File written | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/UserDataResponse" | |
| "409": | |
| description: File exists and overwrite not set | |
| delete: | |
| operationId: deleteUserdataFile | |
| tags: [userdata] | |
| summary: Delete a userdata file | |
| description: Deletes a file from the authenticated user's data directory. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: file | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: File path relative to user data directory | |
| responses: | |
| "204": | |
| description: File deleted | |
| "404": | |
| description: File not found | |
| /api/userdata/{file}/move/{dest}: | |
| post: | |
| operationId: moveUserdataFile | |
| tags: [userdata] | |
| summary: Move or rename a userdata file | |
| description: Renames or moves a file within the authenticated user's data directory. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: file | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Source file path | |
| - name: dest | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Destination file path | |
| - name: overwrite | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Allow overwriting at destination | |
| - name: full_info | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Return full file info in response | |
| responses: | |
| "200": | |
| description: File moved | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/UserDataResponse" | |
| "404": | |
| description: Source file not found | |
| "409": | |
| description: Destination exists and overwrite not set | |
| # --------------------------------------------------------------------------- | |
| # Settings | |
| # --------------------------------------------------------------------------- | |
| /api/settings: | |
| get: | |
| operationId: getSettings | |
| tags: [settings] | |
| summary: Get all user settings | |
| description: Returns all settings for the authenticated user. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| responses: | |
| "200": | |
| description: Settings object | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: true | |
| post: | |
| operationId: updateSettings | |
| tags: [settings] | |
| summary: Update user settings (partial merge) | |
| description: Replaces the authenticated user's settings with the provided object. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: true | |
| description: Partial settings to merge | |
| responses: | |
| "200": | |
| description: Settings updated | |
| /api/settings/{id}: | |
| get: | |
| operationId: getSetting | |
| tags: [settings] | |
| summary: Get a single setting by key | |
| description: Returns the value of a single setting, identified by key. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: id | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Setting key | |
| responses: | |
| "200": | |
| description: Setting value (null if the setting does not exist) | |
| content: | |
| application/json: | |
| schema: | |
| nullable: true | |
| description: The setting value (any JSON type), or null if not set | |
| post: | |
| operationId: updateSetting | |
| tags: [settings] | |
| summary: Set a single setting value | |
| description: Sets the value of a single setting, identified by key. | |
| parameters: | |
| - $ref: "#/components/parameters/ComfyUserHeader" | |
| - name: id | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Setting key | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| description: The setting value (any JSON type) | |
| responses: | |
| "200": | |
| description: Setting updated | |
| # --------------------------------------------------------------------------- | |
| # Extensions / Templates / i18n | |
| # --------------------------------------------------------------------------- | |
| /api/extensions: | |
| get: | |
| operationId: getExtensions | |
| tags: [extensions] | |
| summary: List frontend extension JS file paths | |
| description: Returns the list of frontend extension JS URLs registered by custom nodes, to be loaded by the frontend on startup. | |
| responses: | |
| "200": | |
| description: Array of JS file paths | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| description: Relative path to extension JS file | |
| /api/workflow_templates: | |
| get: | |
| operationId: getWorkflowTemplates | |
| tags: [extensions] | |
| summary: Get workflow template mappings | |
| description: Returns a map of custom node names to their provided workflow template names. | |
| responses: | |
| "200": | |
| description: Template mappings | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| type: array | |
| items: | |
| type: string | |
| description: Map of node pack name to array of template names | |
| /api/i18n: | |
| get: | |
| operationId: getI18n | |
| tags: [extensions] | |
| summary: Get internationalisation translation strings | |
| description: Returns the URLs of translation files contributed by custom nodes, keyed by locale. | |
| responses: | |
| "200": | |
| description: Translation map | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: true | |
| description: Nested map of locale to translation key-value pairs | |
| # --------------------------------------------------------------------------- | |
| # Subgraphs | |
| # --------------------------------------------------------------------------- | |
| /api/global_subgraphs: | |
| get: | |
| operationId: getGlobalSubgraphs | |
| tags: [subgraph] | |
| summary: List global subgraph blueprints | |
| description: Returns a dictionary of subgraph IDs to their metadata. | |
| responses: | |
| "200": | |
| description: Subgraph metadata dictionary | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| $ref: "#/components/schemas/GlobalSubgraphInfo" | |
| /api/global_subgraphs/{id}: | |
| get: | |
| operationId: getGlobalSubgraph | |
| tags: [subgraph] | |
| summary: Get a global subgraph with full data | |
| description: Returns the blueprint for a globally-registered subgraph, used by the frontend to materialize the subgraph node. | |
| parameters: | |
| - name: id | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Subgraph identifier | |
| responses: | |
| "200": | |
| description: Full subgraph data | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/GlobalSubgraphData" | |
| "404": | |
| description: Subgraph not found | |
| # --------------------------------------------------------------------------- | |
| # Node Replacements | |
| # --------------------------------------------------------------------------- | |
| /api/node_replacements: | |
| get: | |
| operationId: getNodeReplacements | |
| tags: [node] | |
| summary: Get node replacement mappings | |
| description: | | |
| Returns a dictionary mapping deprecated or replaced node class names | |
| to their replacement node information. | |
| responses: | |
| "200": | |
| description: Replacement mappings | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: true | |
| # --------------------------------------------------------------------------- | |
| # Internal (x-internal: true) | |
| # --------------------------------------------------------------------------- | |
| /internal/logs: | |
| get: | |
| operationId: getInternalLogs | |
| tags: [internal] | |
| summary: Get server logs as text | |
| description: Returns structured ComfyUI log entries from the in-memory log buffer. | |
| x-internal: true | |
| responses: | |
| "200": | |
| description: Log text | |
| content: | |
| text/plain: | |
| schema: | |
| type: string | |
| /internal/logs/raw: | |
| get: | |
| operationId: getInternalLogsRaw | |
| tags: [internal] | |
| summary: Get raw structured log entries | |
| description: Returns the raw ComfyUI log buffer as text, together with metadata about the current size limit. | |
| x-internal: true | |
| responses: | |
| "200": | |
| description: Structured log data | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| entries: | |
| type: array | |
| items: | |
| type: object | |
| properties: | |
| t: | |
| type: number | |
| description: Timestamp | |
| m: | |
| type: string | |
| description: Message | |
| size: | |
| type: object | |
| properties: | |
| cols: | |
| type: integer | |
| rows: | |
| type: integer | |
| /internal/logs/subscribe: | |
| patch: | |
| operationId: subscribeToLogs | |
| tags: [internal] | |
| summary: Subscribe or unsubscribe a WebSocket client to log streaming | |
| description: Subscribes or unsubscribes the current client from live log streaming over the WebSocket. | |
| x-internal: true | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: | |
| - clientId | |
| - enabled | |
| properties: | |
| clientId: | |
| type: string | |
| description: WebSocket client ID | |
| enabled: | |
| type: boolean | |
| description: Enable or disable log streaming for this client | |
| responses: | |
| "200": | |
| description: Subscription updated | |
| /internal/folder_paths: | |
| get: | |
| operationId: getInternalFolderPaths | |
| tags: [internal] | |
| summary: Get configured folder paths | |
| description: Returns the filesystem paths ComfyUI is configured to load models and other assets from, keyed by folder type. | |
| x-internal: true | |
| responses: | |
| "200": | |
| description: Dictionary of folder type to paths | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: | |
| type: array | |
| items: | |
| type: array | |
| items: | |
| type: string | |
| description: Map of folder type name to list of [path, ...] entries | |
| /internal/files/{directory_type}: | |
| get: | |
| operationId: getInternalFiles | |
| tags: [internal] | |
| summary: List files in a directory type | |
| description: Lists the files present in one of ComfyUI's known directories (input, output, or temp). | |
| x-internal: true | |
| parameters: | |
| - name: directory_type | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: Directory type (e.g. output, input, temp) | |
| responses: | |
| "200": | |
| description: Array of filenames | |
| content: | |
| application/json: | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| # --------------------------------------------------------------------------- | |
| # Assets (x-feature-gate: enable-assets) | |
| # --------------------------------------------------------------------------- | |
| /api/assets/hash/{hash}: | |
| head: | |
| operationId: checkAssetByHash | |
| tags: [assets] | |
| summary: Check if an asset with the given hash exists | |
| description: Returns 204 if an asset with the given content hash already exists, 404 otherwise. Used by clients to deduplicate uploads before transferring bytes. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: hash | |
| in: path | |
| required: true | |
| schema: | |
| type: string | |
| description: "Blake3 hash of the asset (e.g. blake3:abc123...)" | |
| responses: | |
| "200": | |
| description: Asset exists | |
| "404": | |
| description: No asset with this hash | |
| /api/assets: | |
| get: | |
| operationId: listAssets | |
| tags: [assets] | |
| summary: List assets with filtering and pagination | |
| description: Returns a paginated list of assets, optionally filtered by tags, name, or other query parameters. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: limit | |
| in: query | |
| schema: | |
| type: integer | |
| default: 50 | |
| - name: offset | |
| in: query | |
| schema: | |
| type: integer | |
| default: 0 | |
| - name: include_tags | |
| in: query | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| style: form | |
| explode: true | |
| description: Tags that assets must have (AND logic) | |
| - name: exclude_tags | |
| in: query | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| style: form | |
| explode: true | |
| description: Tags that assets must not have | |
| - name: name_contains | |
| in: query | |
| schema: | |
| type: string | |
| description: Filter assets whose name contains this substring | |
| - name: metadata_filter | |
| in: query | |
| schema: | |
| type: string | |
| description: JSON-encoded metadata key/value filter | |
| - name: sort | |
| in: query | |
| schema: | |
| type: string | |
| description: Field to sort by | |
| - name: order | |
| in: query | |
| schema: | |
| type: string | |
| enum: [asc, desc] | |
| description: Sort direction | |
| responses: | |
| "200": | |
| description: Asset list | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/ListAssetsResponse" | |
| post: | |
| operationId: createAsset | |
| tags: [assets] | |
| summary: Upload a new asset | |
| description: Uploads a new asset (binary content plus metadata) and registers it in the asset database. | |
| x-feature-gate: enable-assets | |
| requestBody: | |
| required: true | |
| content: | |
| multipart/form-data: | |
| schema: | |
| type: object | |
| required: | |
| - file | |
| properties: | |
| file: | |
| type: string | |
| format: binary | |
| description: Asset file to upload | |
| name: | |
| type: string | |
| description: Display name for the asset | |
| tags: | |
| type: string | |
| description: Comma-separated tags | |
| user_metadata: | |
| type: string | |
| description: JSON-encoded user metadata | |
| hash: | |
| type: string | |
| description: "Blake3 hash of the file content (e.g. blake3:abc123...)" | |
| mime_type: | |
| type: string | |
| description: MIME type of the file (overrides auto-detected type) | |
| preview_id: | |
| type: string | |
| format: uuid | |
| description: ID of an existing asset to use as the preview image | |
| responses: | |
| "201": | |
| description: Asset created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/AssetCreated" | |
| /api/assets/from-hash: | |
| post: | |
| operationId: createAssetFromHash | |
| tags: [assets] | |
| summary: Create an asset reference from an existing hash | |
| description: Registers a new asset that references existing content by hash, without re-uploading the bytes. | |
| x-feature-gate: enable-assets | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: | |
| - hash | |
| - name | |
| properties: | |
| hash: | |
| type: string | |
| description: Blake3 hash of existing content | |
| name: | |
| type: string | |
| description: Display name | |
| tags: | |
| type: array | |
| items: | |
| type: string | |
| user_metadata: | |
| type: object | |
| additionalProperties: true | |
| responses: | |
| "201": | |
| description: Asset created from hash | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/AssetCreated" | |
| /api/assets/{id}: | |
| get: | |
| operationId: getAsset | |
| tags: [assets] | |
| summary: Get asset metadata | |
| description: Returns the metadata for a single asset. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: id | |
| in: path | |
| description: The asset ID. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| responses: | |
| "200": | |
| description: Asset metadata | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/Asset" | |
| "404": | |
| description: Asset not found | |
| put: | |
| operationId: updateAsset | |
| tags: [assets] | |
| summary: Update asset metadata | |
| description: Updates the mutable metadata of an asset (name, tags, etc.). Binary content is immutable. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: id | |
| in: path | |
| description: The asset ID. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| name: | |
| type: string | |
| description: New display name for the asset | |
| user_metadata: | |
| type: object | |
| additionalProperties: true | |
| description: Custom user metadata to set | |
| preview_id: | |
| type: string | |
| format: uuid | |
| description: ID of the asset to use as the preview | |
| responses: | |
| "200": | |
| description: Asset updated | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/AssetUpdated" | |
| delete: | |
| operationId: deleteAsset | |
| tags: [assets] | |
| summary: Delete an asset | |
| description: Removes an asset entry. Depending on the server configuration, the underlying content may also be deleted. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: id | |
| in: path | |
| description: The asset ID. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| - name: delete_content | |
| in: query | |
| schema: | |
| type: boolean | |
| description: Also delete the underlying content file | |
| responses: | |
| "204": | |
| description: Asset deleted | |
| /api/assets/{id}/content: | |
| get: | |
| operationId: getAssetContent | |
| tags: [assets] | |
| summary: Download asset file content | |
| description: Returns the binary content of an asset. Supports range requests. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: id | |
| in: path | |
| description: The asset ID. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| responses: | |
| "200": | |
| description: Asset file content | |
| content: | |
| application/octet-stream: | |
| schema: | |
| type: string | |
| format: binary | |
| "404": | |
| description: Asset not found | |
| /api/assets/{id}/tags: | |
| post: | |
| operationId: addAssetTags | |
| tags: [assets] | |
| summary: Add tags to an asset | |
| description: Adds one or more tags to an asset. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: id | |
| in: path | |
| description: The asset ID. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: | |
| - tags | |
| properties: | |
| tags: | |
| type: array | |
| items: | |
| type: string | |
| responses: | |
| "200": | |
| description: Tags added | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/TagsModificationResponse" | |
| delete: | |
| operationId: removeAssetTags | |
| tags: [assets] | |
| summary: Remove tags from an asset | |
| description: Removes one or more tags from an asset. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: id | |
| in: path | |
| description: The asset ID. | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: | |
| - tags | |
| properties: | |
| tags: | |
| type: array | |
| items: | |
| type: string | |
| responses: | |
| "200": | |
| description: Tags removed | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/TagsModificationResponse" | |
| /api/tags: | |
| get: | |
| operationId: listTags | |
| tags: [assets] | |
| summary: List all known tags with counts | |
| description: Returns the list of all tags known to the asset database, with counts. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: limit | |
| in: query | |
| schema: | |
| type: integer | |
| - name: offset | |
| in: query | |
| schema: | |
| type: integer | |
| - name: search | |
| in: query | |
| schema: | |
| type: string | |
| description: Search term for tag name | |
| responses: | |
| "200": | |
| description: Tag list | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/ListTagsResponse" | |
| /api/assets/tags/refine: | |
| get: | |
| operationId: refineAssetTags | |
| tags: [assets] | |
| summary: Get tag counts for assets matching current filters | |
| description: Returns suggested additional tags that would refine a filtered asset query, together with the count of assets each tag would select. | |
| x-feature-gate: enable-assets | |
| parameters: | |
| - name: include_tags | |
| in: query | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| style: form | |
| explode: true | |
| description: Tags that assets must have (AND logic) | |
| - name: exclude_tags | |
| in: query | |
| schema: | |
| type: array | |
| items: | |
| type: string | |
| style: form | |
| explode: true | |
| description: Tags that assets must not have | |
| - name: name_contains | |
| in: query | |
| schema: | |
| type: string | |
| description: Filter assets whose name contains this substring | |
| - name: metadata_filter | |
| in: query | |
| schema: | |
| type: string | |
| description: JSON-encoded metadata key/value filter | |
| - name: limit | |
| in: query | |
| schema: | |
| type: integer | |
| - name: offset | |
| in: query | |
| schema: | |
| type: integer | |
| - name: sort | |
| in: query | |
| schema: | |
| type: string | |
| description: Field to sort by | |
| - name: order | |
| in: query | |
| schema: | |
| type: string | |
| enum: [asc, desc] | |
| description: Sort direction | |
| responses: | |
| "200": | |
| description: Tag histogram | |
| content: | |
| application/json: | |
| schema: | |
| $ref: "#/components/schemas/AssetTagHistogramResponse" | |
| /api/assets/seed: | |
| post: | |
| operationId: seedAssets | |
| tags: [assets] | |
| summary: Trigger asset scan/seed from filesystem | |
| description: Starts a background job that scans the configured directories and registers any assets not yet present in the asset database. | |
| x-feature-gate: enable-assets | |
| requestBody: | |
| required: false | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| roots: | |
| type: array | |
| items: | |
| type: string | |
| description: Root folder paths to scan (if omitted, scans all) | |
| responses: | |
| "200": | |
| description: Seed started | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| status: | |
| type: string | |
| /api/assets/seed/status: | |
| get: | |
| operationId: getAssetSeedStatus | |
| tags: [assets] | |
| summary: Get asset scan progress | |
| description: Returns the progress and status of the most recently-started asset seed job. | |
| x-feature-gate: enable-assets | |
| responses: | |
| "200": | |
| description: Scan progress | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| additionalProperties: true | |
| description: Scan progress details (files scanned, total, status, etc.) | |
| /api/assets/seed/cancel: | |
| post: | |
| operationId: cancelAssetSeed | |
| tags: [assets] | |
| summary: Cancel an in-progress asset scan | |
| description: Requests cancellation of the currently-running asset seed job. | |
| x-feature-gate: enable-assets | |
| responses: | |
| "200": | |
| description: Scan cancelled | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| status: | |
| type: string | |
| /api/assets/prune: | |
| post: | |
| operationId: pruneAssets | |
| tags: [assets] | |
| summary: Mark assets whose backing files no longer exist on disk | |
| description: Starts a background job that removes asset entries whose underlying content no longer exists on disk. | |
| x-feature-gate: enable-assets | |
| responses: | |
| "200": | |
| description: Prune result | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| status: | |
| type: string | |
| marked: | |
| type: integer | |
| description: Number of assets marked as missing | |
| components: | |
| parameters: | |
| ComfyUserHeader: | |
| name: Comfy-User | |
| in: header | |
| required: false | |
| schema: | |
| type: string | |
| description: | | |
| Identifies the active user in multi-user mode. Used for settings, | |
| userdata, and history isolation. This is not a security mechanism — | |
| it is an organisational convenience with no authentication behind it. | |
| schemas: | |
| # ------------------------------------------------------------------- | |
| # Prompt | |
| # ------------------------------------------------------------------- | |
| PromptRequest: | |
| type: object | |
| description: A workflow submission. Wraps the prompt graph plus optional client identifier and extra per-request data. | |
| required: | |
| - prompt | |
| properties: | |
| prompt: | |
| type: object | |
| description: | | |
| The workflow graph to execute. Keys are node IDs (strings); | |
| values are objects with class_type and inputs. | |
| additionalProperties: true | |
| number: | |
| type: number | |
| description: Priority number for the queue (lower numbers have higher priority) | |
| front: | |
| type: boolean | |
| description: If true, adds the prompt to the front of the queue | |
| extra_data: | |
| type: object | |
| description: Extra data associated with the prompt (e.g. extra_pnginfo) | |
| additionalProperties: true | |
| client_id: | |
| type: string | |
| description: WebSocket client ID to receive progress updates | |
| prompt_id: | |
| type: string | |
| format: uuid | |
| description: "Client-supplied prompt ID. Server generates a UUID if omitted." | |
| partial_execution_targets: | |
| type: array | |
| items: | |
| type: string | |
| description: List of node IDs to execute (partial graph execution) | |
| PromptResponse: | |
| type: object | |
| description: Server acknowledgement of a workflow submission. Includes the assigned `prompt_id` and current queue position. | |
| properties: | |
| prompt_id: | |
| type: string | |
| format: uuid | |
| description: Unique identifier for the prompt execution | |
| number: | |
| type: number | |
| description: Priority number in the queue | |
| node_errors: | |
| type: object | |
| description: Validation errors keyed by node ID | |
| additionalProperties: | |
| $ref: "#/components/schemas/NodeError" | |
| error: | |
| description: Top-level prompt error (string message or structured error) | |
| oneOf: | |
| - type: string | |
| - $ref: "#/components/schemas/PromptError" | |
| PromptErrorResponse: | |
| type: object | |
| description: Error response when prompt validation fails | |
| additionalProperties: true | |
| PromptError: | |
| type: object | |
| description: Structured prompt validation error | |
| properties: | |
| type: | |
| type: string | |
| message: | |
| type: string | |
| details: | |
| type: string | |
| Error: | |
| type: object | |
| description: Detailed node-level error | |
| properties: | |
| type: | |
| type: string | |
| message: | |
| type: string | |
| details: | |
| type: string | |
| extra_info: | |
| type: object | |
| properties: | |
| input_name: | |
| type: string | |
| additionalProperties: true | |
| NodeError: | |
| type: object | |
| description: Error details for a single node | |
| properties: | |
| errors: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/Error" | |
| class_type: | |
| type: string | |
| description: The node's class type | |
| dependent_outputs: | |
| type: array | |
| items: {} | |
| PromptInfo: | |
| type: object | |
| description: Summary of a queued or recently-executed prompt, as returned by the queue and history endpoints. | |
| properties: | |
| exec_info: | |
| type: object | |
| properties: | |
| queue_remaining: | |
| type: integer | |
| description: Number of items remaining in the queue | |
| # ------------------------------------------------------------------- | |
| # Queue | |
| # ------------------------------------------------------------------- | |
| QueueInfo: | |
| type: object | |
| description: Queue information with pending and running items | |
| properties: | |
| queue_running: | |
| type: array | |
| description: Currently running queue items | |
| items: | |
| type: array | |
| description: | | |
| Queue item tuple: [number, prompt_id, prompt, extra_data, outputs_to_execute, sensitive] | |
| items: {} | |
| prefixItems: | |
| - type: number | |
| description: Priority number | |
| - type: string | |
| format: uuid | |
| description: prompt_id | |
| - type: object | |
| description: prompt graph | |
| additionalProperties: true | |
| - type: object | |
| description: extra_data | |
| additionalProperties: true | |
| - type: array | |
| description: outputs_to_execute (list of output node IDs) | |
| items: | |
| type: string | |
| - type: object | |
| description: sensitive data (may be omitted) | |
| additionalProperties: true | |
| queue_pending: | |
| type: array | |
| description: Pending queue items (oldest first) | |
| items: | |
| type: array | |
| description: | | |
| Queue item tuple: [number, prompt_id, prompt, extra_data, outputs_to_execute, sensitive] | |
| items: {} | |
| prefixItems: | |
| - type: number | |
| description: Priority number | |
| - type: string | |
| format: uuid | |
| description: prompt_id | |
| - type: object | |
| description: prompt graph | |
| additionalProperties: true | |
| - type: object | |
| description: extra_data | |
| additionalProperties: true | |
| - type: array | |
| description: outputs_to_execute (list of output node IDs) | |
| items: | |
| type: string | |
| - type: object | |
| description: sensitive data (may be omitted) | |
| additionalProperties: true | |
| QueueManageRequest: | |
| type: object | |
| description: Request to clear or delete from queue | |
| properties: | |
| clear: | |
| type: boolean | |
| description: If true, clear all pending items | |
| delete: | |
| type: array | |
| items: | |
| type: string | |
| description: Array of prompt IDs to delete from queue | |
| # ------------------------------------------------------------------- | |
| # History | |
| # ------------------------------------------------------------------- | |
| HistoryEntry: | |
| type: object | |
| description: A single execution history entry | |
| properties: | |
| prompt: | |
| type: array | |
| description: | | |
| Prompt tuple: [number, prompt_id, prompt_graph, extra_data, output_node_ids] | |
| items: {} | |
| outputs: | |
| type: object | |
| description: Output data from execution keyed by node ID | |
| additionalProperties: true | |
| status: | |
| type: object | |
| description: Execution status (status_str, completed, messages, etc.) | |
| additionalProperties: true | |
| meta: | |
| type: object | |
| description: Metadata about the execution and nodes | |
| additionalProperties: true | |
| HistoryManageRequest: | |
| type: object | |
| description: Request to clear or delete history entries | |
| properties: | |
| clear: | |
| type: boolean | |
| description: If true, clear all history | |
| delete: | |
| type: array | |
| items: | |
| type: string | |
| description: Array of prompt IDs to delete from history | |
| # ------------------------------------------------------------------- | |
| # Jobs | |
| # ------------------------------------------------------------------- | |
| JobEntry: | |
| type: object | |
| description: Lightweight job data for list views | |
| required: | |
| - id | |
| - status | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| description: Unique job identifier (same as prompt_id) | |
| status: | |
| type: string | |
| description: Current job status | |
| create_time: | |
| type: number | |
| description: Job creation timestamp | |
| execution_start_time: | |
| type: number | |
| description: Workflow execution start timestamp | |
| execution_end_time: | |
| type: number | |
| description: Workflow execution end timestamp | |
| preview_output: | |
| type: object | |
| additionalProperties: true | |
| description: Primary preview output | |
| outputs_count: | |
| type: integer | |
| description: Total number of output files | |
| JobDetailResponse: | |
| type: object | |
| description: Full job details including workflow and outputs | |
| required: | |
| - id | |
| - status | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| status: | |
| type: string | |
| workflow: | |
| type: object | |
| additionalProperties: true | |
| description: Full ComfyUI workflow | |
| outputs: | |
| type: object | |
| additionalProperties: true | |
| description: Full outputs object from execution | |
| execution_error: | |
| $ref: "#/components/schemas/ExecutionError" | |
| create_time: | |
| type: number | |
| update_time: | |
| type: number | |
| execution_start_time: | |
| type: number | |
| execution_end_time: | |
| type: number | |
| preview_output: | |
| type: object | |
| additionalProperties: true | |
| outputs_count: | |
| type: integer | |
| execution_status: | |
| type: object | |
| additionalProperties: true | |
| execution_meta: | |
| type: object | |
| additionalProperties: true | |
| ExecutionError: | |
| type: object | |
| description: Detailed execution error from ComfyUI | |
| properties: | |
| node_id: | |
| type: string | |
| description: ID of the node that failed | |
| node_type: | |
| type: string | |
| description: Type name of the node | |
| exception_message: | |
| type: string | |
| description: Human-readable error message | |
| exception_type: | |
| type: string | |
| description: Python exception type | |
| traceback: | |
| type: array | |
| items: | |
| type: string | |
| description: Traceback lines | |
| current_inputs: | |
| type: object | |
| additionalProperties: true | |
| current_outputs: | |
| type: object | |
| additionalProperties: true | |
| PaginationInfo: | |
| type: object | |
| description: Pagination metadata returned alongside list responses. | |
| properties: | |
| offset: | |
| type: integer | |
| limit: | |
| type: integer | |
| total: | |
| type: integer | |
| has_more: | |
| type: boolean | |
| # ------------------------------------------------------------------- | |
| # Upload / View | |
| # ------------------------------------------------------------------- | |
| UploadResult: | |
| type: object | |
| description: Response body returned by the image/mask upload endpoints, describing where the uploaded file now lives. | |
| properties: | |
| name: | |
| type: string | |
| description: Saved filename (may be renamed to avoid collisions) | |
| subfolder: | |
| type: string | |
| description: Subfolder the file was saved to | |
| type: | |
| type: string | |
| description: Directory type (input, temp) | |
| # ------------------------------------------------------------------- | |
| # System | |
| # ------------------------------------------------------------------- | |
| DeviceStats: | |
| type: object | |
| description: GPU/compute device statistics | |
| required: | |
| - name | |
| - type | |
| - index | |
| properties: | |
| name: | |
| type: string | |
| description: Device name | |
| type: | |
| type: string | |
| description: Device type (cuda, mps, cpu, etc.) | |
| index: | |
| type: number | |
| description: Device index | |
| vram_total: | |
| type: number | |
| description: Total VRAM in bytes | |
| vram_free: | |
| type: number | |
| description: Free VRAM in bytes | |
| torch_vram_total: | |
| type: number | |
| description: Total PyTorch-managed VRAM in bytes | |
| torch_vram_free: | |
| type: number | |
| description: Free PyTorch-managed VRAM in bytes | |
| SystemStatsResponse: | |
| type: object | |
| description: Hardware, VRAM, Python, and ComfyUI version information for the running process. | |
| required: | |
| - system | |
| - devices | |
| properties: | |
| system: | |
| type: object | |
| required: | |
| - os | |
| - python_version | |
| - embedded_python | |
| - comfyui_version | |
| - pytorch_version | |
| - argv | |
| - ram_total | |
| - ram_free | |
| properties: | |
| os: | |
| type: string | |
| description: Operating system | |
| python_version: | |
| type: string | |
| description: Python version | |
| embedded_python: | |
| type: boolean | |
| description: Whether using embedded Python | |
| comfyui_version: | |
| type: string | |
| description: ComfyUI version string | |
| pytorch_version: | |
| type: string | |
| description: PyTorch version | |
| required_frontend_version: | |
| type: string | |
| description: Required frontend version | |
| argv: | |
| type: array | |
| items: | |
| type: string | |
| description: Command line arguments | |
| ram_total: | |
| type: number | |
| description: Total RAM in bytes | |
| ram_free: | |
| type: number | |
| description: Free RAM in bytes | |
| installed_templates_version: | |
| type: string | |
| nullable: true | |
| description: Version of the currently installed workflow templates | |
| required_templates_version: | |
| type: string | |
| nullable: true | |
| description: Minimum required workflow templates version for this ComfyUI build | |
| devices: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/DeviceStats" | |
| # ------------------------------------------------------------------- | |
| # Node / Object Info | |
| # ------------------------------------------------------------------- | |
| NodeInfo: | |
| type: object | |
| description: 'Definition of a registered node class: its inputs, outputs, category, and display metadata.' | |
| properties: | |
| input: | |
| type: object | |
| description: Input specifications (required and optional groups) | |
| additionalProperties: true | |
| input_order: | |
| type: object | |
| description: Ordered input names per group | |
| additionalProperties: | |
| type: array | |
| items: | |
| type: string | |
| output: | |
| type: array | |
| items: | |
| type: string | |
| description: Output type names | |
| output_is_list: | |
| type: array | |
| items: | |
| type: boolean | |
| description: Whether each output is a list | |
| output_name: | |
| type: array | |
| items: | |
| type: string | |
| description: Display names of outputs | |
| name: | |
| type: string | |
| description: Internal class name | |
| display_name: | |
| type: string | |
| description: Human-readable display name | |
| description: | |
| type: string | |
| description: Node description | |
| python_module: | |
| type: string | |
| description: Python module implementing the node | |
| category: | |
| type: string | |
| description: Node category path | |
| output_node: | |
| type: boolean | |
| description: Whether this is an output node | |
| output_tooltips: | |
| type: array | |
| items: | |
| type: string | |
| description: Tooltips for each output | |
| deprecated: | |
| type: boolean | |
| description: Whether the node is deprecated | |
| experimental: | |
| type: boolean | |
| description: Whether the node is experimental | |
| api_node: | |
| type: boolean | |
| description: Whether this is an API node | |
| is_input_list: | |
| type: boolean | |
| description: Whether the node accepts list inputs | |
| dev_only: | |
| type: boolean | |
| description: Whether the node is developer-only (hidden in production UI) | |
| has_intermediate_output: | |
| type: boolean | |
| description: Whether the node emits intermediate output during execution | |
| search_aliases: | |
| type: array | |
| items: | |
| type: string | |
| description: Alternative search terms for finding this node | |
| essentials_category: | |
| type: string | |
| description: Category override used by the essentials pack | |
| # ------------------------------------------------------------------- | |
| # Models | |
| # ------------------------------------------------------------------- | |
| ModelFolder: | |
| type: object | |
| description: A configured model folder and the list of disk paths it resolves to. | |
| required: | |
| - name | |
| - folders | |
| properties: | |
| name: | |
| type: string | |
| description: Model folder type name (e.g. "checkpoints") | |
| folders: | |
| type: array | |
| items: | |
| type: string | |
| description: Filesystem paths for this model type | |
| ModelFile: | |
| type: object | |
| description: A single model file in a folder, with filesystem metadata. | |
| required: | |
| - name | |
| - pathIndex | |
| properties: | |
| name: | |
| type: string | |
| description: Model filename | |
| pathIndex: | |
| type: integer | |
| description: Index into the folder's paths array | |
| modified: | |
| type: number | |
| description: File modification timestamp | |
| created: | |
| type: number | |
| description: File creation timestamp | |
| size: | |
| type: integer | |
| format: int64 | |
| description: File size in bytes | |
| # ------------------------------------------------------------------- | |
| # Subgraphs | |
| # ------------------------------------------------------------------- | |
| GlobalSubgraphInfo: | |
| type: object | |
| description: Metadata for a global subgraph blueprint (without full data) | |
| required: | |
| - source | |
| - name | |
| - info | |
| properties: | |
| source: | |
| type: string | |
| description: Source type ("templates" or "custom_node") | |
| name: | |
| type: string | |
| description: Display name of the subgraph blueprint | |
| info: | |
| type: object | |
| description: Additional information about the subgraph | |
| required: | |
| - node_pack | |
| properties: | |
| node_pack: | |
| type: string | |
| description: The node pack/module providing this subgraph | |
| data: | |
| type: string | |
| description: The full subgraph JSON data (may be empty in list view) | |
| GlobalSubgraphData: | |
| type: object | |
| description: Full data for a global subgraph blueprint | |
| required: | |
| - source | |
| - name | |
| - info | |
| - data | |
| properties: | |
| source: | |
| type: string | |
| description: Source type ("templates" or "custom_node") | |
| name: | |
| type: string | |
| description: Display name of the subgraph blueprint | |
| info: | |
| type: object | |
| description: Additional information about the subgraph | |
| required: | |
| - node_pack | |
| properties: | |
| node_pack: | |
| type: string | |
| description: The node pack/module providing this subgraph | |
| data: | |
| type: string | |
| description: The full subgraph JSON data as a string | |
| # ------------------------------------------------------------------- | |
| # Userdata | |
| # ------------------------------------------------------------------- | |
| UserDataResponse: | |
| description: | | |
| Response body for the POST endpoints `/api/userdata/{file}` and | |
| `/api/userdata/{file}/move/{dest}`. Returns a single item whose | |
| shape depends on the `full_info` query parameter. | |
| x-variant-selector: | |
| full_info=true: file-info object (`GetUserDataResponseFullFile`) | |
| default: relative path string | |
| oneOf: | |
| - $ref: "#/components/schemas/GetUserDataResponseFullFile" | |
| - type: string | |
| description: Relative path of the written or moved file. Returned when `full_info` is absent or false. | |
| ListUserdataResponse: | |
| description: | | |
| Response body for `GET /api/userdata`. The array item shape is | |
| determined by the `full_info` and `split` query parameters. | |
| x-variant-selector: | |
| full_info=true: array of file-info objects (`GetUserDataResponseFullFile`) | |
| split=true: array of `[relative_path, ...path_components]` arrays | |
| default: array of relative path strings | |
| oneOf: | |
| - type: array | |
| items: | |
| $ref: "#/components/schemas/GetUserDataResponseFullFile" | |
| description: Returned when `full_info=true`. | |
| - type: array | |
| items: | |
| type: array | |
| items: | |
| type: string | |
| minItems: 2 | |
| description: | | |
| Returned when `split=true` and `full_info=false`. Each inner | |
| array is `[relative_path, ...path_components]`. | |
| - type: array | |
| items: | |
| type: string | |
| description: Default shape — array of file paths relative to the user data root. | |
| GetUserDataResponseFullFile: | |
| type: object | |
| description: A single entry in a full-info user data listing. | |
| properties: | |
| path: | |
| type: string | |
| description: File name or path relative to the user directory | |
| created: | |
| type: number | |
| description: Unix timestamp of file creation | |
| size: | |
| type: integer | |
| description: File size in bytes | |
| modified: | |
| type: integer | |
| format: int64 | |
| description: Unix timestamp of last modification in milliseconds | |
| # ------------------------------------------------------------------- | |
| # Assets | |
| # ------------------------------------------------------------------- | |
| Asset: | |
| type: object | |
| description: A registered asset — an input/output file tracked in the asset database with content hash and metadata. | |
| required: | |
| - id | |
| - name | |
| - size | |
| - created_at | |
| - updated_at | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| description: Unique identifier for the asset | |
| name: | |
| type: string | |
| description: Name of the asset file | |
| asset_hash: | |
| type: string | |
| description: Blake3 hash of the asset content | |
| pattern: "^blake3:[a-f0-9]{64}$" | |
| size: | |
| type: integer | |
| format: int64 | |
| description: Size of the asset in bytes | |
| mime_type: | |
| type: string | |
| description: MIME type of the asset | |
| tags: | |
| type: array | |
| items: | |
| type: string | |
| description: Tags associated with the asset | |
| user_metadata: | |
| type: object | |
| description: Custom user metadata | |
| additionalProperties: true | |
| metadata: | |
| type: object | |
| description: System-managed metadata (read-only) | |
| additionalProperties: true | |
| readOnly: true | |
| preview_url: | |
| type: string | |
| format: uri | |
| description: URL for asset preview/thumbnail | |
| preview_id: | |
| type: string | |
| format: uuid | |
| description: ID of the preview asset if available | |
| prompt_id: | |
| type: string | |
| format: uuid | |
| description: ID of the prompt that created this asset | |
| created_at: | |
| type: string | |
| format: date-time | |
| updated_at: | |
| type: string | |
| format: date-time | |
| last_access_time: | |
| type: string | |
| format: date-time | |
| is_immutable: | |
| type: boolean | |
| description: Whether this asset is immutable | |
| AssetCreated: | |
| description: Response body returned after successfully registering a new asset. | |
| allOf: | |
| - $ref: "#/components/schemas/Asset" | |
| - type: object | |
| required: | |
| - created_new | |
| properties: | |
| created_new: | |
| type: boolean | |
| description: Whether this was a new creation (true) or returned existing (false) | |
| AssetUpdated: | |
| type: object | |
| description: Response body returned after updating an asset's metadata. | |
| required: | |
| - id | |
| - updated_at | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| name: | |
| type: string | |
| asset_hash: | |
| type: string | |
| pattern: "^blake3:[a-f0-9]{64}$" | |
| tags: | |
| type: array | |
| items: | |
| type: string | |
| mime_type: | |
| type: string | |
| user_metadata: | |
| type: object | |
| additionalProperties: true | |
| updated_at: | |
| type: string | |
| format: date-time | |
| ListAssetsResponse: | |
| type: object | |
| description: Paginated list of assets. | |
| required: | |
| - assets | |
| - total | |
| - has_more | |
| properties: | |
| assets: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/Asset" | |
| total: | |
| type: integer | |
| has_more: | |
| type: boolean | |
| TagInfo: | |
| type: object | |
| description: A tag known to the asset database, with the number of assets bearing it. | |
| required: | |
| - name | |
| - count | |
| properties: | |
| name: | |
| type: string | |
| count: | |
| type: integer | |
| ListTagsResponse: | |
| type: object | |
| description: Flat list of all tags, with counts. | |
| required: | |
| - tags | |
| - total | |
| - has_more | |
| properties: | |
| tags: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/TagInfo" | |
| total: | |
| type: integer | |
| has_more: | |
| type: boolean | |
| AssetTagHistogramResponse: | |
| type: object | |
| description: Tags that would refine a filtered asset query, with the count of assets each tag would additionally select. | |
| required: | |
| - tag_counts | |
| properties: | |
| tag_counts: | |
| type: object | |
| additionalProperties: | |
| type: integer | |
| description: Map of tag names to occurrence counts | |
| TagsModificationResponse: | |
| type: object | |
| description: Response body returned after adding or removing tags on an asset. | |
| required: | |
| - total_tags | |
| properties: | |
| added: | |
| type: array | |
| items: | |
| type: string | |
| description: Tags successfully added | |
| removed: | |
| type: array | |
| items: | |
| type: string | |
| description: Tags successfully removed | |
| already_present: | |
| type: array | |
| items: | |
| type: string | |
| description: Tags already present (for add) | |
| not_present: | |
| type: array | |
| items: | |
| type: string | |
| description: Tags not present (for remove) | |
| total_tags: | |
| type: array | |
| items: | |
| type: string | |
| description: All tags on the asset after the operation | |
| # ------------------------------------------------------------------- | |
| # Result / Output types | |
| # ------------------------------------------------------------------- | |
| ResultItem: | |
| type: object | |
| description: A single output file reference | |
| properties: | |
| filename: | |
| type: string | |
| subfolder: | |
| type: string | |
| type: | |
| type: string | |
| enum: [input, output, temp] | |
| display_name: | |
| type: string | |
| NodeOutputs: | |
| type: object | |
| description: | | |
| Outputs from a single node execution. Known keys are listed below, | |
| but custom nodes may add arbitrary keys (additionalProperties). | |
| properties: | |
| images: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/ResultItem" | |
| audio: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/ResultItem" | |
| video: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/ResultItem" | |
| animated: | |
| type: array | |
| items: | |
| type: boolean | |
| text: | |
| oneOf: | |
| - type: string | |
| - type: array | |
| items: | |
| type: string | |
| additionalProperties: true | |
| TerminalSize: | |
| type: object | |
| description: Terminal dimensions | |
| properties: | |
| cols: | |
| type: number | |
| row: | |
| type: number | |
| LogEntry: | |
| type: object | |
| description: A single log entry | |
| properties: | |
| t: | |
| type: string | |
| description: Timestamp | |
| m: | |
| type: string | |
| description: Log message | |
| StatusWsMessageStatus: | |
| type: object | |
| description: Inner payload of a `status` WebSocket message, describing the execution queue state. | |
| properties: | |
| exec_info: | |
| type: object | |
| required: | |
| - queue_remaining | |
| properties: | |
| queue_remaining: | |
| type: integer | |
| StatusWsMessage: | |
| type: object | |
| description: Initial status message sent on connect + queue status updates | |
| properties: | |
| status: | |
| $ref: "#/components/schemas/StatusWsMessageStatus" | |
| sid: | |
| type: string | |
| description: Session ID assigned by the server | |
| ProgressWsMessage: | |
| type: object | |
| description: Node execution progress (step N of M) | |
| required: | |
| - value | |
| - max | |
| - prompt_id | |
| - node | |
| properties: | |
| value: | |
| type: integer | |
| description: Current step | |
| max: | |
| type: integer | |
| description: Total steps | |
| prompt_id: | |
| type: string | |
| node: | |
| type: string | |
| description: Node ID currently executing | |
| ProgressTextWsMessage: | |
| type: object | |
| description: Text-based progress update from a node | |
| properties: | |
| nodeId: | |
| type: string | |
| text: | |
| type: string | |
| prompt_id: | |
| type: string | |
| NodeProgressState: | |
| type: object | |
| description: Progress state for a single node | |
| properties: | |
| value: | |
| type: number | |
| max: | |
| type: number | |
| state: | |
| type: string | |
| enum: [pending, running, finished, error] | |
| node_id: | |
| type: string | |
| prompt_id: | |
| type: string | |
| display_node_id: | |
| type: string | |
| parent_node_id: | |
| type: string | |
| real_node_id: | |
| type: string | |
| ProgressStateWsMessage: | |
| type: object | |
| description: Bulk progress state for all nodes in a prompt | |
| required: | |
| - prompt_id | |
| - nodes | |
| properties: | |
| prompt_id: | |
| type: string | |
| nodes: | |
| type: object | |
| description: Map of node ID to progress state | |
| additionalProperties: | |
| $ref: "#/components/schemas/NodeProgressState" | |
| ExecutingWsMessage: | |
| type: object | |
| description: Fired when a node begins execution | |
| required: | |
| - node | |
| - display_node | |
| - prompt_id | |
| properties: | |
| node: | |
| type: string | |
| description: Node ID | |
| display_node: | |
| type: string | |
| description: Display node ID (may differ for subgraphs) | |
| prompt_id: | |
| type: string | |
| ExecutedWsMessage: | |
| type: object | |
| description: Fired when a node completes execution with output | |
| required: | |
| - node | |
| - display_node | |
| - prompt_id | |
| - output | |
| properties: | |
| node: | |
| type: string | |
| display_node: | |
| type: string | |
| prompt_id: | |
| type: string | |
| output: | |
| $ref: "#/components/schemas/NodeOutputs" | |
| merge: | |
| type: boolean | |
| description: Whether to merge with existing output | |
| ExecutionWsMessageBase: | |
| type: object | |
| description: Base fields for execution lifecycle messages | |
| required: | |
| - prompt_id | |
| - timestamp | |
| properties: | |
| prompt_id: | |
| type: string | |
| timestamp: | |
| type: integer | |
| description: Unix timestamp in milliseconds | |
| ExecutionStartWsMessage: | |
| allOf: | |
| - $ref: "#/components/schemas/ExecutionWsMessageBase" | |
| description: Fired when prompt execution begins | |
| ExecutionSuccessWsMessage: | |
| allOf: | |
| - $ref: "#/components/schemas/ExecutionWsMessageBase" | |
| description: Fired when prompt execution completes successfully | |
| ExecutionCachedWsMessage: | |
| allOf: | |
| - $ref: "#/components/schemas/ExecutionWsMessageBase" | |
| - type: object | |
| properties: | |
| nodes: | |
| type: array | |
| items: | |
| type: string | |
| description: List of node IDs that were cached | |
| description: Fired when nodes are served from cache | |
| ExecutionInterruptedWsMessage: | |
| allOf: | |
| - $ref: "#/components/schemas/ExecutionWsMessageBase" | |
| - type: object | |
| properties: | |
| node_id: | |
| type: string | |
| node_type: | |
| type: string | |
| executed: | |
| type: array | |
| items: | |
| type: string | |
| description: Node IDs that completed before interruption | |
| description: Fired when execution is interrupted by user | |
| ExecutionErrorWsMessage: | |
| allOf: | |
| - $ref: "#/components/schemas/ExecutionWsMessageBase" | |
| - type: object | |
| properties: | |
| node_id: | |
| type: string | |
| node_type: | |
| type: string | |
| executed: | |
| type: array | |
| items: | |
| type: string | |
| exception_message: | |
| type: string | |
| exception_type: | |
| type: string | |
| traceback: | |
| type: array | |
| items: | |
| type: string | |
| current_inputs: {} | |
| current_outputs: {} | |
| description: Fired when a node throws an exception during execution | |
| LogsWsMessage: | |
| type: object | |
| description: Streaming log entries from the server | |
| properties: | |
| size: | |
| $ref: "#/components/schemas/TerminalSize" | |
| entries: | |
| type: array | |
| items: | |
| $ref: "#/components/schemas/LogEntry" | |
| NotificationWsMessage: | |
| type: object | |
| description: Server notification (e.g. model download complete) | |
| properties: | |
| value: | |
| type: string | |
| id: | |
| type: string | |
| FeatureFlagsWsMessage: | |
| type: object | |
| description: Feature flags sent on connect | |
| additionalProperties: true | |
| AssetDownloadWsMessage: | |
| type: object | |
| description: Asset download progress | |
| required: | |
| - task_id | |
| - asset_name | |
| - bytes_total | |
| - bytes_downloaded | |
| - progress | |
| - status | |
| properties: | |
| task_id: | |
| type: string | |
| asset_name: | |
| type: string | |
| bytes_total: | |
| type: number | |
| bytes_downloaded: | |
| type: number | |
| progress: | |
| type: number | |
| description: 0.0 to 1.0 | |
| status: | |
| type: string | |
| enum: [created, running, completed, failed] | |
| asset_id: | |
| type: string | |
| error: | |
| type: string | |
| AssetExportWsMessage: | |
| type: object | |
| description: Bulk asset export progress | |
| required: | |
| - task_id | |
| - assets_total | |
| - assets_attempted | |
| - assets_failed | |
| - bytes_total | |
| - bytes_processed | |
| - progress | |
| - status | |
| properties: | |
| task_id: | |
| type: string | |
| export_name: | |
| type: string | |
| assets_total: | |
| type: number | |
| assets_attempted: | |
| type: number | |
| assets_failed: | |
| type: number | |
| bytes_total: | |
| type: number | |
| bytes_processed: | |
| type: number | |
| progress: | |
| type: number | |
| description: 0.0 to 1.0 | |
| status: | |
| type: string | |
| enum: [created, running, completed, failed] | |
| error: | |
| type: string | |
Xet Storage Details
- Size:
- 99.6 kB
- Xet hash:
- a6cdbc4dac7efd6cdfe199ba4a7024f1c182780c0ee1b3901bb0fccc0c93d056
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.