mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-07 21:00:49 +08:00
906 lines
26 KiB
YAML
906 lines
26 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: comfyui
|
|
version: 0.0.1
|
|
servers:
|
|
- description: localhost
|
|
url: http://localhost:8188
|
|
paths:
|
|
/:
|
|
get:
|
|
summary: (UI) index.html
|
|
operationId: get_root_ui
|
|
responses:
|
|
200:
|
|
description: the index.html of the website
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
example: "<!DOCTYPE html>..."
|
|
/embeddings:
|
|
get:
|
|
summary: (UI) Get embeddings
|
|
operationId: get_embeddings_ui
|
|
responses:
|
|
200:
|
|
description: |
|
|
Returns a list of the files located in the embeddings/ directory that can be used as arguments for
|
|
embedding nodes. The file extension is omitted.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
description: |
|
|
File names without extensions in embeddings/ directory
|
|
type: array
|
|
items:
|
|
type: string
|
|
/extensions:
|
|
get:
|
|
summary: (UI) Get extensions
|
|
operationId: get_extensions_ui
|
|
responses:
|
|
200:
|
|
description: Returns a list of files located in extensions/**/*.js
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
/upload/image:
|
|
post:
|
|
summary: (UI) Upload an image.
|
|
description: |
|
|
Uploads an image to the input/ directory.
|
|
|
|
Never replaces files. The method will return a renamed file name if it would have overwritten an existing file.
|
|
operationId: upload_image_ui
|
|
requestBody:
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
description: The upload data
|
|
properties:
|
|
image:
|
|
description: The image binary data
|
|
type: string
|
|
format: binary
|
|
responses:
|
|
'200':
|
|
description: Successful upload
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
description: |
|
|
The name to use in a workflow.
|
|
type: string
|
|
'400':
|
|
description: |
|
|
The request was missing an image upload.
|
|
/view:
|
|
get:
|
|
summary: (UI) View image
|
|
operationId: view_image_ui
|
|
description: |
|
|
Reads the image with the specified file name and located in the specified subfolder.
|
|
parameters:
|
|
- in: query
|
|
name: filename
|
|
schema:
|
|
type: string
|
|
required: true
|
|
- in: query
|
|
name: type
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- output
|
|
- input
|
|
- temp
|
|
- in: query
|
|
name: subfolder
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: channel
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- 'rgba'
|
|
- 'rgb'
|
|
- 'a'
|
|
- in: query
|
|
name: preview
|
|
schema:
|
|
type: string
|
|
pattern: '^(?<format>webp|jpeg);(?<quality>\d{1,2})$'
|
|
responses:
|
|
'200':
|
|
description: Successful retrieval of file
|
|
headers:
|
|
Content-Disposition:
|
|
schema:
|
|
type: string
|
|
pattern: '^filename=".+"'
|
|
content:
|
|
image/png:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
image/jpeg:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
image/webp:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
'400':
|
|
description: Bad Request
|
|
'403':
|
|
description: Forbidden
|
|
'404':
|
|
description: Not Found
|
|
/prompt:
|
|
get:
|
|
summary: (UI) Get queue info
|
|
operationId: get_prompt_ui
|
|
responses:
|
|
200:
|
|
description: The current queue information
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
exec_info:
|
|
type: object
|
|
properties:
|
|
queue_remaining:
|
|
type: integer
|
|
post:
|
|
summary: (UI) Post prompt
|
|
operationId: post_prompt_ui
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/PromptRequest"
|
|
responses:
|
|
'200':
|
|
description: The prompt was queued and a prompt ID was returned.
|
|
content:
|
|
application/json:
|
|
example:
|
|
prompt_id: "some-value"
|
|
schema:
|
|
type: object
|
|
properties:
|
|
prompt_id:
|
|
description: The ID of the prompt that was queued
|
|
type: string
|
|
text/plain:
|
|
example: "some-value"
|
|
schema:
|
|
type: string
|
|
'400':
|
|
description: The prompt was invalid. The validation error is returned as the content.
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
/object_info:
|
|
get:
|
|
summary: (UI) Get object info
|
|
operationId: get_object_info_ui
|
|
responses:
|
|
'200':
|
|
description: The list of supported nodes
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/Node"
|
|
/history:
|
|
get:
|
|
summary: (UI) Get history
|
|
operationId: get_history_ui
|
|
responses:
|
|
"200":
|
|
description: History
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties:
|
|
type: object
|
|
properties:
|
|
prompt:
|
|
$ref: "#/components/schemas/QueueTuple"
|
|
outputs:
|
|
$ref: "#/components/schemas/Outputs"
|
|
status:
|
|
type: object
|
|
properties:
|
|
status_str:
|
|
type: string
|
|
completed:
|
|
type: boolean
|
|
messages:
|
|
type: array
|
|
items:
|
|
type: string
|
|
post:
|
|
summary: (UI) Post history
|
|
operationId: post_history_ui
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
clear:
|
|
type: boolean
|
|
delete:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
/queue:
|
|
get:
|
|
summary: (UI) Get queue
|
|
operationId: get_queue_ui
|
|
responses:
|
|
"200":
|
|
description: the queue state
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
queue_running:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/QueueTuple"
|
|
queue_pending:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/QueueTuple"
|
|
post:
|
|
summary: (UI) Post queue
|
|
operationId: post_queue_ui
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
clear:
|
|
type: boolean
|
|
delete:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
/interrupt:
|
|
post:
|
|
summary: (UI) Post interrupt
|
|
operationId: post_interrupt_ui
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
requestBody:
|
|
required: false
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
prompt_id:
|
|
type: string
|
|
description: |
|
|
The prompt to interrupt.
|
|
/free:
|
|
# from 6d281b4ff4ad3918a4f3b4ca4a8b547a2ba3bf80
|
|
post:
|
|
summary: (UI) Unload models or free memory
|
|
operationId: free_ui
|
|
responses:
|
|
200:
|
|
description: The free request was accepted. No content body.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
oneOf:
|
|
- type: object
|
|
properties:
|
|
unload_models:
|
|
type: boolean
|
|
enum: [ true ]
|
|
required:
|
|
- unload_models
|
|
additionalProperties: false
|
|
- type: object
|
|
properties:
|
|
free_memory:
|
|
type: boolean
|
|
enum: [ true ]
|
|
required:
|
|
- free_memory
|
|
additionalProperties: false
|
|
description: >-
|
|
A POST request to /free with: {"unload_models":true} will unload models from vram.
|
|
A POST request to /free with: {"free_memory":true} will unload models and free all cached data from the last run workflow.
|
|
/api/v1/prompts/{prompt_id}:
|
|
get:
|
|
operationId: get_prompt
|
|
summary: (API) Get prompt status
|
|
parameters:
|
|
- in: path
|
|
name: prompt_id
|
|
schema:
|
|
type: string
|
|
required: true
|
|
description: |
|
|
The ID of the prompt to query.
|
|
responses:
|
|
204:
|
|
description: |
|
|
The prompt is still in progress
|
|
200:
|
|
description: |
|
|
Prompt outputs
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Outputs"
|
|
404:
|
|
description: |
|
|
The prompt was not found
|
|
500:
|
|
description: |
|
|
An execution error occurred while processing the prompt.
|
|
content:
|
|
application/json:
|
|
description:
|
|
An execution status directly from the workers
|
|
schema:
|
|
$ref: "#/components/schemas/ExecutionStatusAsDict"
|
|
/api/v1/prompts:
|
|
get:
|
|
operationId: list_prompts
|
|
summary: (API) Get last prompt
|
|
description: |
|
|
Return the last prompt run anywhere that was used to produce an image
|
|
|
|
The prompt object can be POSTed to run the image again with your own parameters.
|
|
|
|
The last prompt, whether it was in the UI or via the API, will be returned here.
|
|
responses:
|
|
200:
|
|
description: |
|
|
The last prompt.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Prompt"
|
|
404:
|
|
description: |
|
|
There were no prompts in the history to return.
|
|
post:
|
|
operationId: generate
|
|
summary: (API) Generate image
|
|
description: |
|
|
Run a prompt to generate an image.
|
|
|
|
Blocks until the image is produced. This may take an arbitrarily long amount of time due to model loading.
|
|
|
|
Prompts that produce multiple images will return the last SaveImage output node in the Prompt by default. To return a specific image, remove other
|
|
SaveImage nodes.
|
|
|
|
When images are included in your request body, these are saved and their
|
|
filenames will be used in your Prompt.
|
|
responses:
|
|
200:
|
|
headers:
|
|
Digest:
|
|
description: The digest of the request body
|
|
example: SHA256=e5187160a7b2c496773c1c5a45bfd3ffbf25eaa5969328e6469d36f31cf240a3
|
|
schema:
|
|
type: string
|
|
Content-Disposition:
|
|
description: The filename when exactly one SaveImage node is specified.
|
|
example: filename=ComfyUI_00001.png
|
|
schema:
|
|
type: string
|
|
pattern: '^filename=.+'
|
|
Location:
|
|
description: The relative URL to revisit this request
|
|
schema:
|
|
type: string
|
|
description: |
|
|
The content of the last SaveImage node.
|
|
content:
|
|
image/png:
|
|
schema:
|
|
description: |
|
|
Binary image data. This will be the contents of the last node that returns image outputs in the workflow.
|
|
type: string
|
|
format: binary
|
|
application/json:
|
|
schema:
|
|
description: |
|
|
The complete outputs dictionary from the workflow.
|
|
type: object
|
|
required:
|
|
- urls
|
|
- outputs
|
|
properties:
|
|
urls:
|
|
deprecated: true
|
|
description: |
|
|
A deprecated list of URLs to binary outputs, whenever save nodes are used.
|
|
|
|
For each SaveImage node, there will be two URLs: the internal URL returned by the worker, and
|
|
the URL for the image based on the `--external-address` / `COMFYUI_EXTERNAL_ADDRESS` configuration.
|
|
type: array
|
|
items:
|
|
type: string
|
|
prompt_id:
|
|
type: string
|
|
description:
|
|
The ID of the prompt that was queued and executed
|
|
outputs:
|
|
$ref: "#/components/schemas/Outputs"
|
|
example:
|
|
outputs: { }
|
|
202:
|
|
description: |
|
|
The prompt was successfully queued.
|
|
content:
|
|
application/json:
|
|
description: Information about the item that was queued
|
|
schema:
|
|
type: object
|
|
properties:
|
|
prompt_id:
|
|
type: string
|
|
description: The ID of the prompt that was queued
|
|
headers:
|
|
Location:
|
|
description: The relative URL to check on the status of the request
|
|
schema:
|
|
type: string
|
|
Retry-After:
|
|
description: |
|
|
A hint for the number of seconds to check the provided Location for the status of your request.
|
|
|
|
This is the server's estimate for when the request will be completed.
|
|
204:
|
|
description: |
|
|
The prompt was run but did not contain any SaveImage outputs, so nothing will be returned.
|
|
|
|
This could be run to e.g. cause the backend to pre-load a model.
|
|
400:
|
|
description: |
|
|
The prompt is invalid.
|
|
content:
|
|
application/json:
|
|
description: A validation error dictionary from the ComfyUI frontend.
|
|
schema:
|
|
$ref: "#/components/schemas/ValidationErrorDict"
|
|
429:
|
|
description: |
|
|
The queue is currently too long to process your request.
|
|
500:
|
|
description: |
|
|
An execution error occurred while processing your prompt.
|
|
content:
|
|
application/json:
|
|
description:
|
|
An execution status directly from the workers
|
|
schema:
|
|
$ref: "#/components/schemas/ExecutionStatusAsDict"
|
|
507:
|
|
description: |
|
|
The server had an IOError like running out of disk space.
|
|
503:
|
|
description: |
|
|
The server is too busy to process this request right now.
|
|
|
|
This should only be returned by a load balancer. Standalone comfyui does not return this.
|
|
parameters:
|
|
- in: header
|
|
name: Accept
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- "application/json"
|
|
- "image/png"
|
|
- "application/json+respond-async"
|
|
required: false
|
|
description: |
|
|
Specifies the media type the client is willing to receive.
|
|
|
|
If +respond-async is specified after your Accept mimetype, the request will be run async and you will get 202 when the prompt was queued.
|
|
- in: header
|
|
title: prefer_header
|
|
name: Prefer
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- "respond-async"
|
|
- ""
|
|
required: false
|
|
allowEmptyValue: true
|
|
description: |
|
|
When respond-async is in your Prefer header, the request will be run async and you will get 202 when the prompt was queued.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Prompt"
|
|
multipart/formdata:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
prompt:
|
|
$ref: "#/components/schemas/Prompt"
|
|
files:
|
|
description: |
|
|
Files to upload along with this request.
|
|
|
|
The filename specified in the content-disposition can be used in your Prompt.
|
|
type: array
|
|
items:
|
|
type: string
|
|
format: binary
|
|
components:
|
|
schemas:
|
|
InputSpec:
|
|
type: array
|
|
prefixItems:
|
|
- oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: boolean
|
|
- type: object
|
|
properties:
|
|
default:
|
|
type: string
|
|
min:
|
|
type: number
|
|
max:
|
|
type: number
|
|
step:
|
|
type: number
|
|
multiline:
|
|
type: boolean
|
|
items: false
|
|
Node:
|
|
type: object
|
|
properties:
|
|
input:
|
|
type: object
|
|
required:
|
|
- required
|
|
properties:
|
|
required:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/InputSpec"
|
|
optional:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/InputSpec"
|
|
hidden:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/InputSpec"
|
|
output:
|
|
type: array
|
|
items:
|
|
type: string
|
|
output_is_list:
|
|
description: Indicates if the output of the corresponding index as the item in this array is a list output.
|
|
type: array
|
|
items:
|
|
type: boolean
|
|
output_name:
|
|
type: array
|
|
items:
|
|
type: string
|
|
name:
|
|
type: string
|
|
display_name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
category:
|
|
type: string
|
|
output_node:
|
|
type: boolean
|
|
ExtraData:
|
|
type: object
|
|
properties:
|
|
extra_pnginfo:
|
|
type: object
|
|
properties:
|
|
workflow:
|
|
$ref: "#/components/schemas/Workflow"
|
|
Prompt:
|
|
type: object
|
|
description: |
|
|
The keys are stringified integers corresponding to nodes.
|
|
|
|
You can retrieve the last prompt run using GET /api/v1/prompts
|
|
additionalProperties:
|
|
$ref: '#/components/schemas/PromptNode'
|
|
PromptNode:
|
|
type: object
|
|
required:
|
|
- class_type
|
|
- inputs
|
|
properties:
|
|
_meta:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
description: |
|
|
The title of the node when authored in the workflow. Set only when the end user changed it using the
|
|
panel properties in the UI.
|
|
class_type:
|
|
type: string
|
|
description: The node's class type, which maps to a class in NODE_CLASS_MAPPINGS.
|
|
inputs:
|
|
type: object
|
|
additionalProperties:
|
|
oneOf:
|
|
- type: number
|
|
- type: string
|
|
- type: boolean
|
|
- type: array
|
|
description: |
|
|
When this is specified, it is a node connection, followed by an output.
|
|
minItems: 2
|
|
maxItems: 2
|
|
prefixItems:
|
|
- type: string
|
|
- type: integer
|
|
description: The inputs for the node, which can be scalar values or references to other nodes' outputs.
|
|
is_changed:
|
|
oneOf:
|
|
- type: array
|
|
description: An array of hashes representing whether the node has changed (optional).
|
|
items:
|
|
type: string
|
|
- type: string
|
|
description: A string representing whether the node has changed (optional).
|
|
Workflow:
|
|
type: object
|
|
properties:
|
|
last_node_id:
|
|
type: integer
|
|
last_link_id:
|
|
type: integer
|
|
nodes:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
type:
|
|
type: string
|
|
pos:
|
|
type: array
|
|
maxItems: 2
|
|
minItems: 2
|
|
items:
|
|
type: number
|
|
size:
|
|
type: object
|
|
properties:
|
|
"0":
|
|
type: number
|
|
"1":
|
|
type: number
|
|
flags:
|
|
type: object
|
|
additionalProperties:
|
|
type: object
|
|
order:
|
|
type: integer
|
|
mode:
|
|
type: integer
|
|
inputs:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
link:
|
|
type: integer
|
|
outputs:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
links:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
slot_index:
|
|
type: integer
|
|
properties:
|
|
type: object
|
|
widgets_values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
links:
|
|
type: array
|
|
items:
|
|
type: array
|
|
items:
|
|
minItems: 6
|
|
maxItems: 6
|
|
oneOf:
|
|
- type: integer
|
|
- type: string
|
|
groups:
|
|
type: array
|
|
items:
|
|
type: object
|
|
config:
|
|
type: object
|
|
extra:
|
|
type: object
|
|
version:
|
|
type: number
|
|
PromptRequest:
|
|
type: object
|
|
required:
|
|
- prompt
|
|
properties:
|
|
client_id:
|
|
type: string
|
|
prompt:
|
|
$ref: "#/components/schemas/Prompt"
|
|
extra_data:
|
|
$ref: "#/components/schemas/ExtraData"
|
|
QueueTuple:
|
|
type: array
|
|
description: |
|
|
An item that was added to the queue.
|
|
minItems: 3
|
|
maxItems: 5
|
|
prefixItems:
|
|
- type: number
|
|
description: Queue priority.
|
|
- type: string
|
|
description: The hash id of the prompt object. This should be the the prompt ID.
|
|
- $ref: "#/components/schemas/Prompt"
|
|
- $ref: "#/components/schemas/ExtraData"
|
|
- type: array
|
|
description: A list of "good output" node IDs in the prompt.
|
|
items:
|
|
type: string
|
|
Outputs:
|
|
description: |
|
|
The keys are node IDs, the values are output objects.
|
|
type: object
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/Output"
|
|
Output:
|
|
type: object
|
|
properties:
|
|
images:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/FileOutput"
|
|
latents:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/FileOutput"
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/FileOutput"
|
|
FileOutput:
|
|
type: object
|
|
required:
|
|
- filename
|
|
- subfolder
|
|
- type
|
|
- abs_path
|
|
properties:
|
|
filename:
|
|
type: string
|
|
subfolder:
|
|
type: string
|
|
type:
|
|
type: string
|
|
abs_path:
|
|
type: string
|
|
ValidationErrorDict:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
message:
|
|
type: string
|
|
details:
|
|
type: string
|
|
extra_info:
|
|
type: object
|
|
required:
|
|
- exception_type
|
|
- traceback
|
|
properties:
|
|
exception_type:
|
|
type: string
|
|
traceback:
|
|
type: array
|
|
items:
|
|
type: string
|
|
node_errors:
|
|
type: object
|
|
description: "Detailed validation errors per node"
|
|
additionalProperties:
|
|
type: object
|
|
properties:
|
|
errors:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ValidationErrorDict"
|
|
dependent_outputs:
|
|
type: array
|
|
items:
|
|
type: string
|
|
class_type:
|
|
type: string
|
|
required:
|
|
- type
|
|
- details
|
|
- extra_info
|
|
- message
|
|
ExecutionStatusAsDict:
|
|
type: object
|
|
required:
|
|
- status_str
|
|
- completed
|
|
- messages
|
|
properties:
|
|
status_str:
|
|
type: string
|
|
enum:
|
|
- "success"
|
|
- "error"
|
|
completed:
|
|
type: boolean
|
|
messages:
|
|
type: array
|
|
items:
|
|
type: string |