A ComfyUI model may make meshes: from a picture, with its licence inside

G3, the part that needs no model: a ComfyUI model's comfyui.output (or
external.output) says pictures or meshes. A request for a 3D model — a
job at /v1/3d/generations — carries the picture as base64; at the replica
it is uploaded to ComfyUI's input directory (the gate lets /upload/image
through), the workflow is filled in with its name, the seed and the
resolution, and the mesh the workflow saves comes back with its type,
which is the file the job keeps. comfy.Client reads every list of files an
output names, not "images" only, and types a file by its extension where
ComfyUI sends octet-stream.

A model's license (name, url, notice) is said in /v1/models and in the
job, and written into a GLB's asset.extras, since the file travels without
the API; a mesh it cannot be written into is refused. per_mesh in
auth.pricing, usage.meshes in the rows, the sums and the export
(migration 0045). A picture asked of a mesh model, or a mesh of a picture
model, is refused saying which it makes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ilker ManapandClaude Opus 5.5 committed 2026-10-10 18:30:52 +02:00
1 parent ec233d3586
commit c87e413360
27 files changed
+899 -57

No files matched your search

+41
View File
@@ -7599,6 +7599,10 @@
"type": "integer",
"format": "int64"
},
"meshes": {
"type": "integer",
"format": "int64"
},
"cost_micros": {
"type": "integer",
"format": "int64"
@@ -8573,6 +8577,10 @@
"images": {
"type": "boolean",
"description": "Images is a model that makes pictures, asked for at /v1/images/generations. Implied by an external model whose API is ComfyUI's."
},
"meshes": {
"type": "boolean",
"description": "Meshes is a model that makes 3D models from a picture, asked for as a job at /v1/3d/generations. Implied by a ComfyUI model whose output is meshes."
}
}
},
@@ -8587,6 +8595,10 @@
"checkpoint": {
"type": "string",
"description": "Checkpoint is the file the workflow's {{checkpoint}} names: the source's own name unless set, which a source that is a set of files must."
},
"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."
}
}
},
@@ -8635,6 +8647,10 @@
"workflow": {
"type": "string",
"description": "Workflow is the ComfyUI workflow, in its API format: a built-in's name (flux-schnell, the default, or flux-dev) or a JSON file on the control plane."
},
"output": {
"type": "string",
"description": "Output is what it makes: pictures, or meshes (see ComfyUI.Output)."
}
}
},
@@ -8655,6 +8671,23 @@
}
}
},
"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.",
"properties": {
"name": {
"type": "string",
"description": "Name is the licence's own: MIT, Apache-2.0."
},
"url": {
"type": "string"
},
"notice": {
"type": "string",
"description": "Notice is what must accompany what was made: attribution, terms on the output, what the weights were trained on."
}
}
},
"catalog.Model": {
"type": "object",
"description": "Model is a catalog entry as clients see it.",
@@ -8701,6 +8734,10 @@
"$ref": "#/components/schemas/catalog.ComfyUI",
"description": "ComfyUI is how a model whose profiles run engine comfyui makes its pictures: the workflow, and the file it loads."
},
"license": {
"$ref": "#/components/schemas/catalog.License",
"description": "License is the terms of what the model makes, for a model whose output somebody ships: shown with every result and written into a mesh."
},
"adapters": {
"type": "array",
"items": {
@@ -10296,6 +10333,10 @@
"Images": {
"type": "integer",
"format": "int64"
},
"Meshes": {
"type": "integer",
"format": "int64"
}
}
},