Any ComfyUI workflow runs as a job, from the inputs its catalog entry declares
A model's catalog entry now says what its workflow takes and makes:
comfyui.inputs, each a placeholder of its name with a type (text, int,
float, bool, choice, image, mask, audio, video, file), bounds, choices
and a default; and comfyui.output, which gains video, audio and files
beside pictures and meshes. POST /v1/workflows/runs with {model, inputs}
checks a request against them before a job is written — a required input
left out, an unknown one, a number out of bounds, a song sent as a
picture, another owner's file id are each refused with what was wrong —
and the job worker replays it to a replica, where the files go into
ComfyUI's input directory, the workflow is filled and run, and the first
file of the model's output kind is the job's result. /v1/models lists
each ComfyUI model's workflow, so a client can build its form.
A PNG result carries the licence in an iTXt chunk, as a GLB does in
asset.extras. A file whose server named no type is typed by its name
before its bytes, so a WAV is audio/wav, not audio/wave.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
b43e66c95e
commit
b6bfc33ef7
20 files changed
+1660
-44
No files matched your search
@@ -8774,7 +8774,14 @@
|
||||
},
|
||||
"output": {
|
||||
"type": "string",
|
||||
"description": "Output is what the workflow makes: pictures (the default), asked for at /v1/images/generations, or meshes, asked for as a job at /v1/3d/generations from a picture."
|
||||
"description": "Output is what the workflow makes: pictures (the default), asked for at /v1/images/generations; meshes, asked for as a job at /v1/3d/generations from a picture; or video, audio or files. Every kind is asked for as a job at /v1/workflows/runs too."
|
||||
},
|
||||
"inputs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/catalog.Input"
|
||||
},
|
||||
"description": "Inputs are what the workflow takes from a request at /v1/workflows/runs, each the placeholder of its name."
|
||||
},
|
||||
"nodes": {
|
||||
"type": "array",
|
||||
@@ -8879,6 +8886,47 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"catalog.Input": {
|
||||
"type": "object",
|
||||
"description": "Input is one thing a workflow takes from a request: the placeholder {{name}} in its graph, filled with the request's inputs.name.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Name is the placeholder's, and the request's key."
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Type is one of text, int, float, bool, choice, image, mask, audio, video, file. The last five are files, sent as base64, a data URL, or the id of a file uploaded to /v1/files, and put in ComfyUI's input directory; the placeholder gets the name they were given there."
|
||||
},
|
||||
"required": {
|
||||
"type": "boolean",
|
||||
"description": "Required inputs must be in every request; the others take Default, or the workflow's own {{name|default}}."
|
||||
},
|
||||
"default": {},
|
||||
"min": {
|
||||
"type": "number",
|
||||
"description": "Min and Max bound a number; for text, Max bounds its length."
|
||||
},
|
||||
"max": {
|
||||
"type": "number"
|
||||
},
|
||||
"choices": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Choices are what a choice may be."
|
||||
},
|
||||
"max_mb": {
|
||||
"type": "integer",
|
||||
"description": "MaxMB bounds a file input; zero is the type's own bound."
|
||||
},
|
||||
"doc": {
|
||||
"type": "string",
|
||||
"description": "Doc says what the input is for, to whoever fills it in."
|
||||
}
|
||||
}
|
||||
},
|
||||
"catalog.License": {
|
||||
"type": "object",
|
||||
"description": "License is the terms what a model makes comes under: said beside every result, and written into a mesh, which travels without the API.",
|
||||
|
||||
Reference in new issue
Block a user