{
"openapi": "3.1.1",
"info": {
"title": "Civitai Orchestration Consumer API",
"description": "The Civitai Orchestration API is a RESTful API that allows you to interact with the Civitai Orchestration system. The API is designed to be simple and easy to use, and is built on top of the OpenAPI specification.",
"version": "v2"
},
"paths": {
"/v2/consumer/blobs/{blobId}": {
"get": {
"tags": [
"Blobs"
],
"summary": "Get blob by ID. This will redirect to a cacheable content URL.",
"operationId": "GetBlob",
"parameters": [
{
"name": "blobId",
"in": "path",
"description": "The blob ID to retrieve.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "workflowId",
"in": "query",
"description": "The id of the workflow to obtain",
"schema": {
"type": "string"
}
},
{
"name": "nsfwLevel",
"in": "query",
"description": "A maximum nsfw level. If this is specified and the blob does not have a NSFW level specified or the NSFW level exceeds our max then we'll return an error",
"schema": {
"$ref": "#/components/schemas/NSFWLevel"
}
},
{
"name": "filename",
"in": "query",
"description": "Optional filename to use in the Content-Disposition header when the blob is served. Path components and control characters are stripped.",
"schema": {
"type": "string"
}
},
{
"name": "download",
"in": "query",
"description": "When true, the blob is served with Content-Disposition: attachment to prompt a download. Defaults to inline.",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"308": {
"description": "Permanent Redirect"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"head": {
"tags": [
"Blobs"
],
"summary": "Handles HTTP HEAD requests for a specific blob, checking its existence and NSFW level.",
"operationId": "HeadBlob",
"parameters": [
{
"name": "blobId",
"in": "path",
"description": "Identifies the specific blob to check for existence and NSFW level.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/blobs/upload": {
"get": {
"tags": [
"Blobs"
],
"summary": "Get a presigned URL for browser uploads.\nThe returned URL points to POST /v2/consumer/blobs with a signature for authentication.",
"operationId": "GetConsumerBlobUploadUrl",
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConsumerBlobPresignResponse"
}
}
}
}
}
}
},
"/v2/consumer/blobs": {
"post": {
"tags": [
"Blobs"
],
"summary": "Upload a blob directly with on-the-fly moderation.\nSupports both authenticated requests (Bearer token) and presigned URLs (sig query param).",
"operationId": "UploadConsumerBlob",
"parameters": [
{
"name": "public",
"in": "query",
"description": "Store the blob in the public tier and return a durable, unsigned URL for it. Privileged callers only: nothing gates a read of that URL, so a block decided after the fact cannot take it back.",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Blob"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"413": {
"description": "Content Too Large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Content",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/blobs/ingest": {
"post": {
"tags": [
"Blobs"
],
"summary": "Copy a trusted url into a blob named after that source, so the caller can ask for it again\nwithout holding the bytes. 200 when it already existed, 201 when copied.",
"operationId": "IngestConsumerBlob",
"parameters": [
{
"name": "sourceUrl",
"in": "query",
"description": "Object to copy; must resolve to a configured trusted source.",
"schema": {
"type": "string"
}
},
{
"name": "public",
"in": "query",
"description": "Store in the public tier and return a durable, unsigned URL.",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Blob"
}
}
}
},
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Blob"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Content",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"502": {
"description": "Bad Gateway"
}
},
"security": [ ]
}
},
"/v2/consumer/blobs/content/{encryptedToken}": {
"get": {
"tags": [
"Blobs"
],
"summary": "Serves cacheable blob content using a deterministic encrypted token",
"operationId": "GetBlobContent",
"parameters": [
{
"name": "encryptedToken",
"in": "path",
"description": "The encrypted token containing blob access parameters",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"500": {
"description": "Internal Server Error"
}
},
"security": [ ]
}
},
"/v2/consumer/blobs/blocked/{encryptedToken}": {
"get": {
"tags": [
"Blobs"
],
"summary": "Serves a blocked placeholder image with the specified dimensions",
"operationId": "GetBlockedContent",
"parameters": [
{
"name": "encryptedToken",
"in": "path",
"description": "The encrypted token containing blocked content parameters",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [ ]
}
},
"/v2/consumer/blobs/archive/{encryptedToken}": {
"get": {
"tags": [
"Blobs"
],
"summary": "Streams an archive (zip or tar) of the blobs referenced by a signed archive token.\nTokens are produced by the `blobArchive` workflow step.",
"operationId": "GetBlobArchive",
"parameters": [
{
"name": "encryptedToken",
"in": "path",
"description": "The signed token containing the archive manifest.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK"
},
"410": {
"description": "Gone",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [ ]
}
},
"/v2/consumer/blobs/{blobId}/refresh": {
"post": {
"tags": [
"Blobs"
],
"summary": "Refresh a blob's URL and debounce its lifetime.\nReturns a fresh presigned URL and resets the 30-day TTL.",
"operationId": "RefreshBlob",
"parameters": [
{
"name": "blobId",
"in": "path",
"description": "The blob ID to refresh.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Blob"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/civitai/{userId}": {
"delete": {
"tags": [
"CivitaiConsumer"
],
"operationId": "InvalidateUserCache",
"parameters": [
{
"name": "userId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"default": {
"description": "Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/civitai/{userId}/tokens": {
"delete": {
"tags": [
"CivitaiConsumer"
],
"operationId": "InvalidateUserTokens",
"parameters": [
{
"name": "userId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"default": {
"description": "Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/free-tier": {
"get": {
"tags": [
"Free tier"
],
"summary": "Get the free-tier models and the caller's remaining quota. Use them with `tier: \"free\"` on a workflow,\n`?tier=free` on a recipe, or `X-Civitai-Tier: free` on the OpenAI-compatible chat endpoint.",
"operationId": "GetFreeTier",
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FreeTierResponse"
}
}
}
}
}
}
},
"/v2/consumer/recipes/aceStepAudio": {
"post": {
"tags": [
"Recipes"
],
"summary": "Workflow step for generating music using ACE Step 1.5.\n/// Produces full songs from text descriptions and structured lyrics.",
"operationId": "InvokeAceStepAudioStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AceStepAudioInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AceStepAudioInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/AceStepAudioInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AceStepAudioOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/ageClassification": {
"post": {
"tags": [
"Recipes"
],
"summary": "Age classification",
"description": "Detects minors in media content. Returns a boolean value indicating whether the content contains minors as well as details on where minors are detected.",
"operationId": "InvokeAgeClassificationStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AgeClassificationInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AgeClassificationInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/AgeClassificationInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AgeClassificationOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/audioCaptioning": {
"post": {
"tags": [
"Recipes"
],
"summary": "Audio Captioning",
"description": "Generates music captions, lyrics, and metadata by running the ACE-Step captioner and transcriber models.",
"operationId": "InvokeAudioCaptioningStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioCaptioningInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/AudioCaptioningInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/AudioCaptioningInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioCaptioningOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/batchOCRSafetyClassification": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokeBatchOCRSafetyClassificationStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BatchOCRSafetyClassificationInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/BatchOCRSafetyClassificationInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/BatchOCRSafetyClassificationInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BatchOCRSafetyClassificationOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/blobArchive": {
"post": {
"tags": [
"Recipes"
],
"summary": "Bundles a set of blobs into a single archive (zip or tar) that callers can\n/// download from a signed streaming URL. Runs in-process in the orchestrator;\n/// no worker job is dispatched.",
"operationId": "InvokeBlobArchiveStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BlobArchiveInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/BlobArchiveInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/BlobArchiveInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BlobArchiveOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/chatCompletion": {
"post": {
"tags": [
"Recipes"
],
"summary": "ChatCompletion",
"description": "Generate chat completions using language models with support for text and image inputs.\n/// Compatible with OpenAI Chat Completions API format.",
"operationId": "InvokeChatCompletionStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChatCompletionInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ChatCompletionInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ChatCompletionInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChatCompletionOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/comfy": {
"post": {
"tags": [
"Recipes"
],
"summary": "Comfy workflows",
"description": "Runs a comfy workflow. Currently there are limited nodes available. Contact support for more information.",
"operationId": "InvokeComfyStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ComfyInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ComfyInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ComfyInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ComfyOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/comfyNodepackSnapshot": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokeComfyNodepackSnapshotStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/composeMedia": {
"post": {
"tags": [
"Recipes"
],
"summary": "Compose Media",
"description": "Composes multiple audio and/or video elements onto a single timeline and canvas: overlay and\n/// stack videos, scale and pad them to an output canvas, mix and place audio, and apply per-element\n/// transformers (fades, volume). Each element is placed at its own absolute or implicitly-sequenced\n/// start time. Produces a video blob when any element is video, otherwise an audio blob. Pair with\n/// text-to-speech, music, and video-generation steps to assemble narrated clips, multi-speaker\n/// scenes with cross-talk, or picture-in-picture compositions.",
"operationId": "InvokeComposeMediaStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ComposeMediaInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ComposeMediaInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ComposeMediaInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ComposeMediaOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/convertImage": {
"post": {
"tags": [
"Recipes"
],
"summary": "A workflow step that converts images to different formats and applies optional transforms.",
"operationId": "InvokeConvertImageStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConvertImageInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ConvertImageInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ConvertImageInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ConvertImageOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/customComfy": {
"post": {
"tags": [
"Recipes"
],
"summary": "CustomComfy",
"description": "Submit a raw ComfyUI workflow graph for execution. Every resource the\n/// workflow uses (checkpoints, loras, AND comfy:nodepack URNs for\n/// runtime-installable custom nodes) must be declared in Resources —\n/// the orchestrator does not scan the workflow. Billing happens after\n/// execution based on actual ComfyUI runtime; infra failures don't charge.",
"operationId": "InvokeCustomComfyStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomComfyInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CustomComfyInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CustomComfyInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomComfyOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/echo": {
"post": {
"tags": [
"Recipes"
],
"summary": "Echo",
"description": "A workflow step that takes a message string and retuns it.\n/// This step is intended for testing purposes.",
"operationId": "InvokeEchoStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EchoInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/EchoInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/EchoInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EchoOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/humanoidImageMask": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokeHumanoidImageMaskStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HumanoidImageMaskInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/HumanoidImageMaskInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/HumanoidImageMaskInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HumanoidImageMaskOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageBackgroundRemoval": {
"post": {
"tags": [
"Recipes"
],
"summary": "A workflow step that removes the background from an image using BiRefNet (builds a ComfyUI graph under the hood and runs it as a comfy job).",
"operationId": "InvokeImageBackgroundRemovalStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageBackgroundRemovalInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ImageBackgroundRemovalInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ImageBackgroundRemovalInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageBackgroundRemovalOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageGen": {
"post": {
"tags": [
"Recipes"
],
"summary": "Image Generation",
"description": "Generate images through text/image inputs using any of our supported engines",
"operationId": "InvokeImageGenStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageGenInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ImageGenInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ImageGenInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageGenOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageResourceTraining": {
"post": {
"tags": [
"Recipes"
],
"summary": "LORA Training",
"description": "Train LORA's",
"operationId": "InvokeImageResourceTrainingStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageResourceTrainingInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ImageResourceTrainingInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ImageResourceTrainingInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageResourceTrainingOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageScanning": {
"post": {
"tags": [
"Recipes"
],
"summary": "Image scanning",
"description": "Classifies one image for safety, origin, tags, human presence, and apparent age.",
"operationId": "InvokeImageScanningStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageScanningInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ImageScanningInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ImageScanningInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageScanningOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageToSvg": {
"post": {
"tags": [
"Recipes"
],
"summary": "Converts a raster image to an SVG using a local StarVector or OmniSVG model.",
"operationId": "InvokeImageToSvgStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageToSvgInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ImageToSvgInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ImageToSvgInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageToSvgOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageUpload": {
"post": {
"tags": [
"Recipes"
],
"summary": "Image upload",
"description": "Uploads an image to be used in a workflow",
"operationId": "InvokeImageUploadStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "string"
}
},
"text/json": {
"schema": {
"type": "string"
}
},
"application/*+json": {
"schema": {
"type": "string"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageUploadOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/imageUpscaler": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokeImageUpscalerStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageUpscalerInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ImageUpscalerInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ImageUpscalerInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageUpscalerOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/liveTranscription": {
"post": {
"tags": [
"Recipes"
],
"summary": "Live transcription",
"description": "Transcribes speech while it is recorded: append audio to output.inputUrl and read text from\n/// output.transcriptUrl as it decodes. Billed per second of audio once the session ends.",
"operationId": "InvokeLiveTranscriptionStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LiveTranscriptionInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/LiveTranscriptionInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/LiveTranscriptionInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LiveTranscriptionOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/mediaCaptioning": {
"post": {
"tags": [
"Recipes"
],
"summary": "Media Captioning",
"description": "Generates a descriptive caption for a single media item using the JoyCaption model.",
"operationId": "InvokeMediaCaptioningStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MediaCaptioningInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MediaCaptioningInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/MediaCaptioningInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MediaCaptioningOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/mediaHash": {
"post": {
"tags": [
"Recipes"
],
"summary": "MediaHash",
"description": "Generates perceptual hashes for media content to enable similarity detection and duplicate identification.",
"operationId": "InvokeMediaHashStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MediaHashInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MediaHashInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/MediaHashInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MediaHashOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/mediaRating": {
"post": {
"tags": [
"Recipes"
],
"summary": "MediaRating",
"description": "Performs NSFW level detection and content safety classification on media content.",
"operationId": "InvokeMediaRatingStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MediaRatingInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MediaRatingInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/MediaRatingInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MediaRatingOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/merge": {
"post": {
"tags": [
"Recipes"
],
"summary": "Merge",
"description": "Also waits for every step the referenced steps generate, such as each iteration of a repeat.",
"operationId": "InvokeMergeStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MergeInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MergeInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/MergeInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MergeOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/miniMaxMusic3": {
"post": {
"tags": [
"Recipes"
],
"summary": "Generate a complete song from a structured caption and lyrics with MiniMax Music 3.",
"operationId": "InvokeMiniMaxMusic3StepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MiniMaxMusic3Input"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/MiniMaxMusic3Input"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/MiniMaxMusic3Input"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MiniMaxMusic3Output"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/model3DPreview": {
"post": {
"tags": [
"Recipes"
],
"summary": "3D model preview",
"description": "Renders screenshots of a 3D model from predefined or supplied camera poses.",
"operationId": "InvokeModel3DPreviewStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Model3DPreviewInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Model3DPreviewInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/Model3DPreviewInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Model3DPreviewOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/modelClamScan": {
"post": {
"tags": [
"Recipes"
],
"summary": "ModelClamScan",
"description": "Runs ClamAV malware scanning against a model file.",
"operationId": "InvokeModelClamScanStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelClamScanInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ModelClamScanInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ModelClamScanInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelClamScanOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/modelHash": {
"post": {
"tags": [
"Recipes"
],
"summary": "ModelHash",
"description": "Computes Civitai content hashes (SHA256, AutoV1/2/3, Blake3, CRC32) of a model file.",
"operationId": "InvokeModelHashStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelHashInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ModelHashInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ModelHashInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelHashOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/modelParseMetadata": {
"post": {
"tags": [
"Recipes"
],
"summary": "ModelParseMetadata",
"description": "Extracts the embedded JSON metadata header from a safetensors model file.",
"operationId": "InvokeModelParseMetadataStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelParseMetadataInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ModelParseMetadataInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ModelParseMetadataInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelParseMetadataOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/modelPickleScan": {
"post": {
"tags": [
"Recipes"
],
"summary": "ModelPickleScan",
"description": "Runs picklescan against a model file to detect dangerous pickle imports.",
"operationId": "InvokeModelPickleScanStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelPickleScanInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ModelPickleScanInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ModelPickleScanInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ModelPickleScanOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/polyGen": {
"post": {
"tags": [
"Recipes"
],
"summary": "3D model generation",
"description": "Generate 3D models through text or image inputs using any of our supported engines.",
"operationId": "InvokePolyGenStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PolyGenInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PolyGenInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/PolyGenInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PolyGenOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/prepareResource": {
"post": {
"tags": [
"Recipes"
],
"summary": "Prepare Resource",
"description": "Loads a resource into a provider so later work needing it does not pay the cold-start download. Succeeds immediately when the resource is already available on the fleet.",
"operationId": "InvokePrepareResourceStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrepareResourceInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PrepareResourceInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/PrepareResourceInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrepareResourceOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/preprocessImage": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokePreprocessImageStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PreprocessImageInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PreprocessImageInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/PreprocessImageInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PreprocessImageOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/preprocessVideo": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokePreprocessVideoStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PreprocessVideoInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PreprocessVideoInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/PreprocessVideoInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PreprocessVideoOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/promptEnhancement": {
"post": {
"tags": [
"Recipes"
],
"summary": "PromptEnhancement",
"description": "Analyzes and enhances user prompts for a specific AI ecosystem.\n/// Returns detected issues, recommendations, and improved prompt variants.",
"operationId": "InvokePromptEnhancementStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PromptEnhancementInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/PromptEnhancementInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/PromptEnhancementInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PromptEnhancementOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/qwenImageBench": {
"post": {
"tags": [
"Recipes"
],
"summary": "Qwen Image Bench",
"description": "Scores generated images against their prompts using Qwen-Image-Bench.",
"operationId": "InvokeQwenImageBenchStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QwenImageBenchInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/QwenImageBenchInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/QwenImageBenchInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QwenImageBenchOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/repeat": {
"post": {
"tags": [
"Recipes"
],
"summary": "Repeat workflow step.",
"operationId": "InvokeRepeatStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RepeatInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/RepeatInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/RepeatInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RepeatOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/shieldstralModeration": {
"post": {
"tags": [
"Recipes"
],
"summary": "ShieldstralModeration",
"description": "Evaluate text or generation prompts against configurable natural-language Shieldstral policies.\n/// Generates one single-token yes/no ChatCompletion job per policy and returns normalized policy scores.",
"operationId": "InvokeShieldstralModerationStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShieldstralModerationInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/ShieldstralModerationInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/ShieldstralModerationInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ShieldstralModerationOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/soniloAudioGen": {
"post": {
"tags": [
"Recipes"
],
"summary": "Generate music or a standalone sound effect from a text prompt with Sonilo.",
"operationId": "InvokeSoniloAudioGenStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SoniloAudioGenInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/SoniloAudioGenInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/SoniloAudioGenInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SoniloAudioGenOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/textToImage": {
"post": {
"tags": [
"Recipes"
],
"summary": "TextToImage",
"description": "Generate images using text as input",
"operationId": "InvokeTextToImageStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TextToImageInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TextToImageInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/TextToImageInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TextToImageOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/textToSpeech": {
"post": {
"tags": [
"Recipes"
],
"summary": "Text-to-Speech",
"description": "Synthesizes speech from text, supporting both voice cloning (Base mode with reference audio) and built-in speakers (CustomVoice mode).",
"operationId": "InvokeTextToSpeechStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TextToSpeechInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TextToSpeechInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/TextToSpeechInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TextToSpeechOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/training": {
"post": {
"tags": [
"Recipes"
],
"summary": "Training",
"description": "A workflow step for training machine learning models (LoRAs, checkpoints, etc.)\n/// on various types of data (images, videos, audio). This replaces ImageResourceTraining\n/// with a cleaner architecture that creates one job per epoch instead of a single monolithic job.",
"operationId": "InvokeTrainingStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TrainingInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TrainingInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/TrainingInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TrainingOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/transcode": {
"post": {
"tags": [
"Recipes"
],
"summary": "Transcoding",
"operationId": "InvokeTranscodeStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TranscodeInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TranscodeInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/TranscodeInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TranscodeOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/transcription": {
"post": {
"tags": [
"Recipes"
],
"summary": "Transcription",
"description": "Performs automatic speech recognition (ASR) on audio media, returning transcribed text with optional timestamps.",
"operationId": "InvokeTranscriptionStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TranscriptionInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TranscriptionInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/TranscriptionInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TranscriptionOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/tryOnU": {
"post": {
"tags": [
"Recipes"
],
"operationId": "InvokeTryOnUStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TryOnUInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TryOnUInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/TryOnUInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TryOnUOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoBackgroundRemoval": {
"post": {
"tags": [
"Recipes"
],
"summary": "Tracks a prompted foreground object across a video and returns a lossless animated WebP with transparency.",
"operationId": "InvokeVideoBackgroundRemovalStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoBackgroundRemovalInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoBackgroundRemovalInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoBackgroundRemovalInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoBackgroundRemovalOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoEnhancement": {
"post": {
"tags": [
"Recipes"
],
"summary": "Upscale videos and/or interpolate frames",
"operationId": "InvokeVideoEnhancementStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoEnhancementInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoEnhancementInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoEnhancementInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoEnhancementOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoFrameExtraction": {
"post": {
"tags": [
"Recipes"
],
"summary": "Video Frame Extraction",
"description": "Extracts unique frames from a video at a specified rate, filtering near-duplicates by perceptual hash.",
"operationId": "InvokeVideoFrameExtractionStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoFrameExtractionInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoFrameExtractionInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoFrameExtractionInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoFrameExtractionOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoGen": {
"post": {
"tags": [
"Recipes"
],
"summary": "Video generation",
"description": "Generate videos through text/image inputs using any of our supported engines",
"operationId": "InvokeVideoGenStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoGenInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoGenInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoGenInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoGenOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoInterpolation": {
"post": {
"tags": [
"Recipes"
],
"summary": "Interpolate videos using VFI Mamba",
"operationId": "InvokeVideoInterpolationStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoInterpolationInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoInterpolationInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoInterpolationInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoInterpolationOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoMetadata": {
"post": {
"tags": [
"Recipes"
],
"summary": "Extract metadata from videos including width, height, FPS, and duration",
"operationId": "InvokeVideoMetadataStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoMetadataInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoMetadataInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoMetadataInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoMetadataOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/videoUpscaler": {
"post": {
"tags": [
"Recipes"
],
"summary": "Upscale videos using FlashVSR",
"operationId": "InvokeVideoUpscalerStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoUpscalerInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/VideoUpscalerInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/VideoUpscalerInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VideoUpscalerOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/wdTagging": {
"post": {
"tags": [
"Recipes"
],
"summary": "WDTagging",
"description": "Performs Waifu Diffusion tagging on media content to identify characteristics, objects, and themes.",
"operationId": "InvokeWDTaggingStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WDTaggingInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/WDTaggingInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/WDTaggingInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WDTaggingOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/webScrape": {
"post": {
"tags": [
"Recipes"
],
"summary": "WebScrape",
"description": "Fetches and renders a single web page, returning its content as markdown and/or HTML.",
"operationId": "InvokeWebScrapeStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebScrapeInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/WebScrapeInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/WebScrapeInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebScrapeOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/webSearch": {
"post": {
"tags": [
"Recipes"
],
"summary": "WebSearch",
"description": "Searches the web, returning result titles, URLs and descriptions, optionally with the scraped content of each result page.",
"operationId": "InvokeWebSearchStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebSearchInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/WebSearchInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/WebSearchInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebSearchOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/xGuardModeration": {
"post": {
"tags": [
"Recipes"
],
"summary": "XGuardModeration",
"description": "Evaluate text or generation prompts against XGuard content moderation policies.\n/// Generates one ChatCompletion job per label and aggregates results with logprob-based scoring.",
"operationId": "InvokeXGuardModerationStepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/XGuardModerationInput"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/XGuardModerationInput"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/XGuardModerationInput"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/XGuardModerationOutput"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/recipes/yuE2": {
"post": {
"tags": [
"Recipes"
],
"summary": "Generate a song from style and lyrics with YuE2.",
"operationId": "InvokeYuE2StepTemplate",
"parameters": [
{
"name": "experimental",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "allowMatureContent",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "whatif",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "ephemeral",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "tier",
"in": "query",
"description": "How a workflow is paid for.",
"schema": {
"$ref": "#/components/schemas/WorkflowTier"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/YuE2Input"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/YuE2Input"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/YuE2Input"
}
}
}
},
"responses": {
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/YuE2Output"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/resources": {
"get": {
"tags": [
"Resources"
],
"summary": "List resources: `view=Queue` is what the orchestrator is loading now, `view=Loaded`\nwhat at least one worker holds and can use now. Each page is a fresh snapshot.",
"operationId": "QueryResources",
"parameters": [
{
"name": "view",
"in": "query",
"description": "A projection of the resource collection. There is no view that lists every known resource — resources\nare addressed by AIR and only materialise once something asks for them.",
"required": true,
"schema": {
"$ref": "#/components/schemas/ResourceView"
}
},
{
"name": "cursor",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "take",
"in": "query",
"schema": {
"type": "integer",
"format": "int32",
"default": 100
}
},
{
"name": "type",
"in": "query",
"description": "Repeatable, OR'd. Matches the AIR's type segment literally, with no alias expansion: that\nsegment names the model's type rather than the file's, so `checkpoint` does not cover\nbase weights arriving as `diffusion_model`, `diffusionmodel` or `unet`.",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "excludeType",
"in": "query",
"description": "Repeatable, OR'd, and wins over `type`. `other`, `torchcompilecache` and\n`nodepacklayer` are the generated artifacts rather than models.",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "source",
"in": "query",
"description": "Repeatable, OR'd, matched against the AIR's source segment. `civitai` is the cheapest\nway to drop everything the orchestrator generated itself.",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "minSizeBytes",
"in": "query",
"description": "Inclusive. 1073741824 (1 GiB) is where a resource starts taking the large download lane. A\nresource whose provider never reported a byte count has size 0 and is excluded by any value.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "maxSizeBytes",
"in": "query",
"description": "Inclusive.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CursedArrayOfStringAndResourceInfo"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"503": {
"description": "Service Unavailable"
}
}
}
},
"/v2/resources/{air}": {
"get": {
"tags": [
"Resources"
],
"summary": "Get an existing resource.",
"operationId": "GetResource",
"parameters": [
{
"name": "air",
"in": "path",
"description": "A unique ID for the resource being requested. See https://developer.civitai.com/docs/getting-started/ai-resource-identifier for more info on AIRs.",
"required": true,
"schema": {
"pattern": "^(?!huggingface/).*$",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResourceInfo"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/services": {
"get": {
"tags": [
"Services"
],
"summary": "List services, optionally filtered.",
"operationId": "ListServices",
"parameters": [
{
"name": "category",
"in": "query",
"description": "Restrict to a category (image, video, chat, audio, text, 3d, model, utility).",
"schema": {
"type": "string"
}
},
{
"name": "prefix",
"in": "query",
"description": "Restrict to a subtree of the id, e.g. \"image/flux2\".",
"schema": {
"type": "string"
}
},
{
"name": "tags",
"in": "query",
"description": "Only services carrying all of these tags.",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "query",
"in": "query",
"description": "Free-text over id, name, description and tags.",
"schema": {
"type": "string"
}
},
{
"name": "status",
"in": "query",
"description": "Only services currently in this state.",
"schema": {
"$ref": "#/components/schemas/ServiceStatus"
}
},
{
"name": "window",
"in": "query",
"description": "Window the metrics and status are computed over: 1h, 24h or 7d.",
"schema": {
"type": "string",
"default": "24h"
}
},
{
"name": "limit",
"in": "query",
"description": "Maximum number of services to return.",
"schema": {
"type": "integer",
"format": "int32",
"default": 50
}
},
{
"name": "offset",
"in": "query",
"description": "Number of services to skip.",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponseOfServiceResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [ ]
}
},
"/v2/services/{serviceId}": {
"get": {
"tags": [
"Services"
],
"summary": "Get a single service by id, e.g. \"image/flux2/klein/createImage/9b\", with its bucketed\nhistory over the window.",
"operationId": "GetService",
"parameters": [
{
"name": "serviceId",
"in": "path",
"description": "The service id.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "window",
"in": "query",
"description": "Window the summary metrics and history cover: 1h, 24h or 7d.",
"schema": {
"type": "string",
"default": "24h"
}
},
{
"name": "interval",
"in": "query",
"description": "History bucket size: 5m, 1h or 1d.",
"schema": {
"type": "string",
"default": "1h"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServiceResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [ ]
}
},
"/v2/consumer/streaming-blobs/{blobKey}": {
"post": {
"tags": [
"StreamingBlobs"
],
"description": "Number chunks from `seq=0`; a resent seq is a no-op, a gap returns 409 with the expected seq,\nand `final=true` closes the blob.",
"operationId": "AppendStreamingBlob",
"parameters": [
{
"name": "blobKey",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "seq",
"in": "query",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "final",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StreamingBlobAppendResponse"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StreamingBlobAppendResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"413": {
"description": "Content Too Large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [ ]
},
"get": {
"tags": [
"StreamingBlobs"
],
"operationId": "GetStreamingBlob",
"parameters": [
{
"name": "blobKey",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [ ]
}
},
"/v2/consumer/workflows": {
"post": {
"tags": [
"Workflows"
],
"summary": "Submit workflow",
"operationId": "SubmitWorkflow",
"parameters": [
{
"name": "wait",
"in": "query",
"description": "Whether to wait for the workflow to complete before returning or to return immediately\nThe request may return a 202 if the clients waits for the workflow to complete and the workflow does not complete within the requested timeout. \nIn which case the client should use the token to query the status of the workflow.",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "whatif",
"in": "query",
"description": "Whether to actually submit the workflow or return an estimate on what would happen upon submission",
"schema": {
"type": "boolean",
"default": false
}
},
{
"name": "hideMatureContent",
"in": "query",
"description": "When set to true, any blob that has mature won't be available and won't have a URL",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowTemplate"
},
"examples": {
"TextToImage": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"quantity": 2,
"batchSize": 4,
"model": "urn:air:sdxl:model:civitai:101055@128078",
"additionalNetworks": {
"urn:air:sd1:embedding:civitai:7808@9208": {
"triggerWord": "easynegative"
}
},
"controlNets": [ ],
"prompt": "A curious cat",
"negativePrompt": "nsfw",
"scheduler": "eulerA",
"steps": 30,
"cfgScale": 7.5,
"width": 512,
"height": 512,
"seed": 1790693947,
"clipSkip": 2,
"outputFormat": "jpeg",
"sourceImageDenoiseStrenght": 0.8
},
"priority": "high",
"timeout": "00:05:00",
"retries": 5
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
},
"LORA training": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"maxTrainEpochs": 5,
"numRepeats": 8,
"resolution": 512,
"enableBucket": true,
"shuffleCaption": false,
"keepTokens": 0,
"clipSkip": 1,
"flipAugmentation": false,
"unetLR": 0.00005,
"textEncoderLR": 0.00005,
"lrSchedulerNumCycles": 3,
"engine": "kohya",
"model": "urn:air:sdxl:model:civitai:101055@128078",
"trainingData": "https://example.com/training-data",
"trainingDataImagesCount": 10,
"loraName": "mylora",
"samplePrompts": [ ]
},
"priority": "normal",
"retries": 1
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
},
"Comfy job": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"comfyWorkflow": {
"3": {
"class_type": "KSampler",
"inputs": {
"sampler_name": "euler",
"scheduler": "normal",
"seed": 740593329207015,
"steps": 20,
"cfg": 8,
"denoise": 1,
"model": [
"4",
0
],
"positive": [
"6",
0
],
"negative": [
"7",
0
],
"latent_image": [
"5",
0
]
}
},
"4": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "@civitai/46846"
}
},
"5": {
"class_type": "EmptyLatentImage",
"inputs": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
"6": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "beautiful scenery nature glass bottle landscape, purple galaxy bottle",
"clip": [
"4",
1
]
}
},
"7": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "text, watermark",
"clip": [
"4",
1
]
}
},
"8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"3",
0
],
"vae": [
"4",
2
]
}
},
"9": {
"class_type": "SaveImage",
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"8",
0
]
}
}
},
"quantity": 1
}
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
}
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowTemplate"
},
"examples": {
"TextToImage": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"quantity": 2,
"batchSize": 4,
"model": "urn:air:sdxl:model:civitai:101055@128078",
"additionalNetworks": {
"urn:air:sd1:embedding:civitai:7808@9208": {
"triggerWord": "easynegative"
}
},
"controlNets": [ ],
"prompt": "A curious cat",
"negativePrompt": "nsfw",
"scheduler": "eulerA",
"steps": 30,
"cfgScale": 7.5,
"width": 512,
"height": 512,
"seed": 1790693947,
"clipSkip": 2,
"outputFormat": "jpeg",
"sourceImageDenoiseStrenght": 0.8
},
"priority": "high",
"timeout": "00:05:00",
"retries": 5
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
},
"LORA training": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"maxTrainEpochs": 5,
"numRepeats": 8,
"resolution": 512,
"enableBucket": true,
"shuffleCaption": false,
"keepTokens": 0,
"clipSkip": 1,
"flipAugmentation": false,
"unetLR": 0.00005,
"textEncoderLR": 0.00005,
"lrSchedulerNumCycles": 3,
"engine": "kohya",
"model": "urn:air:sdxl:model:civitai:101055@128078",
"trainingData": "https://example.com/training-data",
"trainingDataImagesCount": 10,
"loraName": "mylora",
"samplePrompts": [ ]
},
"priority": "normal",
"retries": 1
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
},
"Comfy job": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"comfyWorkflow": {
"3": {
"class_type": "KSampler",
"inputs": {
"sampler_name": "euler",
"scheduler": "normal",
"seed": 740593329207015,
"steps": 20,
"cfg": 8,
"denoise": 1,
"model": [
"4",
0
],
"positive": [
"6",
0
],
"negative": [
"7",
0
],
"latent_image": [
"5",
0
]
}
},
"4": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "@civitai/46846"
}
},
"5": {
"class_type": "EmptyLatentImage",
"inputs": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
"6": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "beautiful scenery nature glass bottle landscape, purple galaxy bottle",
"clip": [
"4",
1
]
}
},
"7": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "text, watermark",
"clip": [
"4",
1
]
}
},
"8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"3",
0
],
"vae": [
"4",
2
]
}
},
"9": {
"class_type": "SaveImage",
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"8",
0
]
}
}
},
"quantity": 1
}
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
}
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/WorkflowTemplate"
},
"examples": {
"TextToImage": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"quantity": 2,
"batchSize": 4,
"model": "urn:air:sdxl:model:civitai:101055@128078",
"additionalNetworks": {
"urn:air:sd1:embedding:civitai:7808@9208": {
"triggerWord": "easynegative"
}
},
"controlNets": [ ],
"prompt": "A curious cat",
"negativePrompt": "nsfw",
"scheduler": "eulerA",
"steps": 30,
"cfgScale": 7.5,
"width": 512,
"height": 512,
"seed": 1790693947,
"clipSkip": 2,
"outputFormat": "jpeg",
"sourceImageDenoiseStrenght": 0.8
},
"priority": "high",
"timeout": "00:05:00",
"retries": 5
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
},
"LORA training": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"maxTrainEpochs": 5,
"numRepeats": 8,
"resolution": 512,
"enableBucket": true,
"shuffleCaption": false,
"keepTokens": 0,
"clipSkip": 1,
"flipAugmentation": false,
"unetLR": 0.00005,
"textEncoderLR": 0.00005,
"lrSchedulerNumCycles": 3,
"engine": "kohya",
"model": "urn:air:sdxl:model:civitai:101055@128078",
"trainingData": "https://example.com/training-data",
"trainingDataImagesCount": 10,
"loraName": "mylora",
"samplePrompts": [ ]
},
"priority": "normal",
"retries": 1
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
},
"Comfy job": {
"value": {
"metadata": {
"key1": "value1",
"key2": 2
},
"steps": [
{
"input": {
"comfyWorkflow": {
"3": {
"class_type": "KSampler",
"inputs": {
"sampler_name": "euler",
"scheduler": "normal",
"seed": 740593329207015,
"steps": 20,
"cfg": 8,
"denoise": 1,
"model": [
"4",
0
],
"positive": [
"6",
0
],
"negative": [
"7",
0
],
"latent_image": [
"5",
0
]
}
},
"4": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "@civitai/46846"
}
},
"5": {
"class_type": "EmptyLatentImage",
"inputs": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
"6": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "beautiful scenery nature glass bottle landscape, purple galaxy bottle",
"clip": [
"4",
1
]
}
},
"7": {
"class_type": "CLIPTextEncode",
"inputs": {
"text": "text, watermark",
"clip": [
"4",
1
]
}
},
"8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"3",
0
],
"vae": [
"4",
2
]
}
},
"9": {
"class_type": "SaveImage",
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"8",
0
]
}
}
},
"quantity": 1
}
}
],
"callbacks": [
{
"url": "https://example.com/callback",
"type": [
"workflow:succeeded",
"workflow:failed"
]
}
],
"tier": "paid",
"upgradeMode": "automatic",
"currencies": [ ]
}
}
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workflow"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workflow"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
},
"get": {
"tags": [
"Workflows"
],
"summary": "Query workflows",
"operationId": "QueryWorkflows",
"parameters": [
{
"name": "cursor",
"in": "query",
"description": "An optional cursor to continue querying workflows from a previous query.",
"schema": {
"type": "string"
}
},
{
"name": "take",
"in": "query",
"description": "How many workflows to return",
"schema": {
"type": "integer",
"format": "int32",
"default": 100
}
},
{
"name": "tags",
"in": "query",
"description": "An optional list of tags to query by",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "excludeTags",
"in": "query",
"description": "An optional list of tags; workflows with any of these tags are excluded",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "query",
"in": "query",
"description": "An optional additional query that is used to match workflows through metadata",
"schema": {
"type": "string"
}
},
{
"name": "ascending",
"in": "query",
"description": "Whether to return data from oldest to newest",
"schema": {
"type": "boolean"
}
},
{
"name": "hideMatureContent",
"in": "query",
"description": "When set to true, any blob that has mature won't be available and won't have a URL",
"schema": {
"type": "boolean",
"default": true
}
},
{
"name": "fromDate",
"in": "query",
"description": "An optional start date to filter workflows created on or after this date",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "toDate",
"in": "query",
"description": "An optional end date to filter workflows created on or before this date",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "excludeFailed",
"in": "query",
"description": "When set to true, excludes workflows with Failed, Expired, or Canceled status",
"schema": {
"type": "boolean",
"default": false
}
},
{
"name": "Accept",
"in": "header",
"description": "Specify 'application/zip' to get the response as a zip file",
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CursedArrayOfTelemetryCursorAndWorkflow"
}
},
"application/zip": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
}
}
}
},
"/v2/consumer/workflows/{workflowId}": {
"get": {
"tags": [
"Workflows"
],
"summary": "Get workflow",
"operationId": "GetWorkflow",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the workflow to get status for",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "wait",
"in": "query",
"description": "Whether to wait for the workflow to complete before returning or to return immediately\nThe request may return a 202 if the clients waits for the workflow to complete and the workflow does not complete within the requested timeout. \nIn which case the client should use the token to query the status of the workflow.",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "until",
"in": "query",
"description": "What wait waits for: `completion` (the default) returns once the workflow reaches a\nfinal status, `change` as soon as its status or any of its steps changes.",
"schema": {
"$ref": "#/components/schemas/WorkflowWaitUntil"
}
},
{
"name": "hideMatureContent",
"in": "query",
"description": "When set to true, any blob that has mature won't be available and won't have a URL",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workflow"
}
}
}
},
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workflow"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"put": {
"tags": [
"Workflows"
],
"summary": "Update workflow",
"description": "Updates a worfklow. This can currently be used to cancel a worfklow or override metadata and/or tags",
"operationId": "UpdateWorkflow",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the worfklow to update.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "whatif",
"in": "query",
"description": "Whether to apply the update or return what it would cost.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"requestBody": {
"description": "The details to update on the workflow.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWorkflowRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWorkflowRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UpdateWorkflowRequest"
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workflow"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"patch": {
"tags": [
"Workflows"
],
"summary": "Patch workflow",
"description": "Patches a worfklow using JSON Patch. This can currently be used to cancel a worfklow, update metadata and add additional tags",
"operationId": "PatchWorkflow",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the workflow to patch",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "A valid PATCH document",
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/JsonPatchDocument"
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"delete": {
"tags": [
"Workflows"
],
"summary": "Delete workflow",
"description": "This will delete a workflow. This may trigger a refund if the work requested with this workflow has not yet started",
"operationId": "DeleteWorkflow",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the workflow to delete.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/workflows/{workflowId}/tags": {
"post": {
"tags": [
"Workflows"
],
"summary": "Add workflow tag",
"description": "Adds a tag to a workflow",
"operationId": "AddWorkflowTag",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the worfklow to update.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The the tag to add to the workflow.",
"content": {
"application/json": {
"schema": {
"type": "string"
}
},
"text/json": {
"schema": {
"type": "string"
}
},
"application/*+json": {
"schema": {
"type": "string"
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"delete": {
"tags": [
"Workflows"
],
"summary": "Delete all workflow tags",
"operationId": "RemoveAllWorkflowTags",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the worfklow to update.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/workflows/{workflowId}/tags/{tag}": {
"delete": {
"tags": [
"Workflows"
],
"summary": "Delete workflow tag",
"operationId": "RemoveWorkflowTag",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The ID of the worfklow to update.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "tag",
"in": "path",
"description": "The the tag to remove from the workflow.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
},
"/v2/consumer/workflows/{workflowId}/steps/{stepName}": {
"get": {
"tags": [
"WorkflowSteps"
],
"summary": "Get the status of a workflow step",
"operationId": "GetWorkflowStep",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The id of the workflow to get status for",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "stepName",
"in": "path",
"description": "The name of the step within the workflow to get status for",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WorkflowStep"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"put": {
"tags": [
"WorkflowSteps"
],
"summary": "Updates a step within a particular workflow.",
"operationId": "UpdateWorkflowStep",
"parameters": [
{
"name": "workflowId",
"in": "path",
"description": "The id of the workflow to update.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "stepName",
"in": "path",
"description": "The name of the step to update.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "The details to update on the workflow step.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWorkflowStepRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWorkflowStepRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UpdateWorkflowStepRequest"
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
},
"patch": {
"tags": [
"WorkflowSteps"
],
"operationId": "PatchWorkflowStep",
"parameters": [
{
"name": "workflowId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "stepName",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/JsonPatchDocument"
}
}
}
},
"responses": {
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"204": {
"description": "No Content"
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"AIRecognitionResult": {
"required": [
"confidence",
"label"
],
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Classification label, taken from the model's own id2label — AIorNot-SigLIP2 emits\n\"AI\"/\"Real\". Casing varies per model, so compare case-insensitively."
},
"confidence": {
"type": "number",
"description": "Confidence in the classification given by Label (0.0 to 1.0) — not the probability of being AI.",
"format": "double"
}
},
"additionalProperties": false,
"description": "Represents AI vs real image recognition results."
},
"AIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/TrainingInput"
},
{
"required": [
"defaultSteps",
"ecosystem",
"engine",
"maxBatchSize",
"storageBuzzPerEpoch",
"trace",
"usesStepPricing"
],
"type": "object",
"properties": {
"ecosystem": {
"type": "string"
},
"epochs": {
"maximum": 200,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Number of training epochs — the number of saved checkpoints produced (each epoch\nyields one downloadable model). When omitted it is derived from Civitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.Steps;\nwhen both are supplied, both are honored (epochs = checkpoint count, steps = total).",
"format": "int32"
},
"steps": {
"maximum": 10000,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Total number of training steps. This is the primary control over training length and\ndetermines pricing. When supplied, Civitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.Epochs (the number of saved\ncheckpoints) is derived from it; when omitted, steps are derived from epochs.",
"format": "int32"
},
"batchSize": {
"maximum": 4,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Defaults to 1; raise it (up to the ecosystem's maximum) to train faster at the\ncost of more GPU memory. A larger batch sees more images per step, so fewer steps are needed for a\ncomparable result. Values above the ecosystem maximum are clamped down.",
"format": "int32"
},
"lr": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Sets the learning rate for the model. This is the learning rate when performing additional learning on each attention block (and other blocks depending on the setting).",
"format": "double",
"default": 0.0001
},
"textEncoderLr": {
"maximum": 1,
"minimum": 0,
"type": [
"null",
"number"
],
"description": "Sets the learning rate for the text encoder. Only used when TrainTextEncoder is true. For models with multiple text encoders, this applies to all of them.",
"format": "double"
},
"trainTextEncoder": {
"type": [
"null",
"boolean"
],
"description": "Whether to train the text encoder(s) alongside the model. Enabling this can improve prompt understanding but increases training time and memory usage."
},
"lrScheduler": {
"enum": [
"constant",
"constant_with_warmup",
"cosine",
"linear",
"step"
],
"type": [
"null",
"string"
],
"description": "You can change the learning rate in the middle of learning. A scheduler is a setting for how to change the learning rate."
},
"optimizerType": {
"enum": [
"adamw",
"adamw8bit",
"adam8bit",
"lion",
"lion8bit",
"adafactor",
"adagrad",
"prodigy",
"prodigy8bit",
"automagic"
],
"type": [
"null",
"string"
],
"description": "The optimizer determines how to update the neural net weights during training.\nVarious methods have been proposed for smart learning, but the most commonly used in LoRA learning is \"adamw8bit\"."
},
"networkDim": {
"maximum": 256,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "The larger the Dim setting, the more learning information can be stored, but the possibility of learning unnecessary information other than the learning target increases. A larger Dim also increases LoRA file size.",
"format": "int32"
},
"networkAlpha": {
"maximum": 256,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "The smaller the Network alpha value, the larger the stored LoRA neural net weights.\nFor example, with an Alpha of 16 and a Dim of 32, the strength of the weight used is 16/32 = 0.5,\nmeaning that the learning rate is only half as powerful as the Learning Rate setting.\n \nIf Alpha and Dim are the same number, the strength used will be 1 and will have no effect on the learning rate.",
"format": "int32"
},
"noiseOffset": {
"maximum": 1,
"minimum": 0,
"type": [
"null",
"number"
],
"description": "Adds noise to training images. 0 adds no noise at all. A value of 1 adds strong noise.",
"format": "double"
},
"flipAugmentation": {
"type": "boolean",
"description": "If this option is turned on, the image will be horizontally flipped randomly. It can learn left and right angles, which is useful when you want to learn symmetrical people and objects.",
"default": false
},
"shuffleTokens": {
"type": "boolean",
"description": "Randomly changes the order of your tags during training. The intent of shuffling is to improve learning. If you are using captions (sentences), this option has no meaning.",
"default": false
},
"keepTokens": {
"maximum": 10,
"minimum": 0,
"type": "integer",
"description": "If your training images have tags, you can randomly shuffle them.\nHowever, if you have words that you want to keep at the beginning, you can use this option to specify \"Keep the first 0 words at the beginning\".\nThis option does nothing if the Shuffle Tokens option is off.",
"format": "int32",
"default": 0
},
"triggerWord": {
"type": [
"null",
"string"
],
"description": "A trigger word that activates the trained LoRA when used in prompts.\nOnly applicable to certain ecosystems (sd1, sdxl, flux1, chroma, zimagebase, zimageturbo, flux2klein)."
},
"continueFrom": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional previously-trained LoRA to continue training from (\"train further\"). When set, the first\nepoch resumes from this model instead of the base model, and the new epochs build on top of it."
},
"trace": {
"$ref": "#/components/schemas/TrainingTraceMode"
},
"storageBuzzPerEpoch": {
"type": "number",
"description": "Per-epoch surcharge (buzz). Each epoch is a delivered checkpoint plus its preview samples, billed on\ntop of the per-step training cost — so raising the epoch count raises the price by this much each.\nOverride per ecosystem where per-epoch samples are expensive to compute (e.g. video).",
"format": "double",
"readOnly": true
},
"defaultSteps": {
"type": "integer",
"description": "Default total step budget when neither Civitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.Steps nor Civitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.Epochs is supplied.\nOverride per ecosystem where the default training length differs (e.g. video needs more steps,\nquickly-overtrained models need fewer).",
"format": "int32",
"readOnly": true
},
"usesStepPricing": {
"type": "boolean",
"description": "True when billing uses the per-step model. This is the default; the only exception is the legacy\npath where the caller supplied Civitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.Epochs but no Civitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.Steps (existing consumers),\nwhich keeps the historical flat per-epoch price.",
"readOnly": true
},
"maxBatchSize": {
"type": "integer",
"description": "Ecosystem-specific maximum training batch size — the upper bound the user's\nCivitai.Orchestration.Grains.Workflows.Steps.Training.AIToolkit.AIToolkitTrainingInput.BatchSize is clamped to. Most ecosystems cap at 1.",
"format": "int32",
"readOnly": true
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "ecosystem",
"mapping": {
"flux1": "#/components/schemas/Flux1AIToolkitTrainingInput",
"sdxl": "#/components/schemas/SdxlAIToolkitTrainingInput",
"sd1": "#/components/schemas/SD1AIToolkitTrainingInput",
"chroma": "#/components/schemas/ChromaAIToolkitTrainingInput",
"ernie": "#/components/schemas/ErnieAIToolkitTrainingInput",
"qwen": "#/components/schemas/QwenAIToolkitTrainingInput",
"qwen21": "#/components/schemas/Qwen21AIToolkitTrainingInput",
"zimageturbo": "#/components/schemas/ZImageTurboAIToolkitTrainingInput",
"zimagebase": "#/components/schemas/ZImageBaseAIToolkitTrainingInput",
"flux2klein": "#/components/schemas/Flux2KleinAIToolkitTrainingInput",
"ltx2": "#/components/schemas/Ltx2AIToolkitTrainingInput",
"ltx23": "#/components/schemas/Ltx23AIToolkitTrainingInput",
"ltx25": "#/components/schemas/Ltx25AIToolkitTrainingInput",
"ace_step_15": "#/components/schemas/AceStep15AIToolkitTrainingInput",
"ace_step_15_xl": "#/components/schemas/AceStep15XlAIToolkitTrainingInput",
"hidream-o1": "#/components/schemas/HiDreamO1AIToolkitTrainingInput",
"anima": "#/components/schemas/AnimaAIToolkitTrainingInput",
"boogu": "#/components/schemas/BooguAIToolkitTrainingInput",
"krea2": "#/components/schemas/Krea2AIToolkitTrainingInput",
"ideogram4": "#/components/schemas/Ideogram4AIToolkitTrainingInput",
"mageflow": "#/components/schemas/MageFlowAIToolkitTrainingInput",
"ming": "#/components/schemas/MingAIToolkitTrainingInput",
"yue2": "#/components/schemas/YuE2AIToolkitTrainingInput",
"minimaxh3": "#/components/schemas/MiniMaxH3AIToolkitTrainingInput"
}
}
}
],
"description": "Base input for AI Toolkit training across all ecosystems"
},
"AceStep15AIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AIToolkitTrainingInput"
},
{
"required": [
"ecosystem",
"engine"
],
"type": "object",
"properties": {
"samplesOverrides": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AceStepSampleOverride"
}
},
"ecosystem": {
"enum": [
"ace_step_15"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
},
"batchSize": {
"maximum": 1,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Fixed at 1 for this ecosystem.",
"default": 1
}
},
"additionalProperties": false
}
],
"description": "AI Toolkit training for ACE-Step 1.5 base models."
},
"AceStep15XlAIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AIToolkitTrainingInput"
},
{
"required": [
"ecosystem",
"engine",
"modelVariant"
],
"type": "object",
"properties": {
"modelVariant": {
"type": "string"
},
"samplesOverrides": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AceStepSampleOverride"
}
},
"ecosystem": {
"enum": [
"ace_step_15_xl"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "modelVariant",
"mapping": {
"base": "#/components/schemas/AceStep15XlBaseAIToolkitTrainingInput",
"sft": "#/components/schemas/AceStep15XlSftAIToolkitTrainingInput"
}
}
}
],
"description": "AI Toolkit training for ACE-Step 1.5 XL models."
},
"AceStep15XlBaseAIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AceStep15XlAIToolkitTrainingInput"
},
{
"required": [
"ecosystem",
"engine",
"modelVariant"
],
"type": "object",
"properties": {
"modelVariant": {
"enum": [
"base"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ace_step_15_xl"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
},
"batchSize": {
"maximum": 1,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Fixed at 1 for this ecosystem.",
"default": 1
}
},
"additionalProperties": false
}
],
"description": "AI Toolkit training for ACE-Step 1.5 XL base models."
},
"AceStep15XlSftAIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AceStep15XlAIToolkitTrainingInput"
},
{
"required": [
"ecosystem",
"engine",
"modelVariant"
],
"type": "object",
"properties": {
"modelVariant": {
"enum": [
"sft"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ace_step_15_xl"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
},
"batchSize": {
"maximum": 1,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Fixed at 1 for this ecosystem.",
"default": 1
}
},
"additionalProperties": false
}
],
"description": "AI Toolkit training for ACE-Step 1.5 XL SFT models."
},
"AceStepAudioCover": {
"required": [
"imageUrl"
],
"type": "object",
"properties": {
"imageUrl": {
"type": "string",
"description": "The cover image source.",
"format": "source-image"
}
},
"additionalProperties": false,
"description": "Cover image configuration for ACE Step audio output.\nWhen present, the output is a WebM video with this image as the visual."
},
"AceStepAudioInput": {
"required": [
"lyrics",
"musicDescription",
"seed"
],
"type": "object",
"properties": {
"musicDescription": {
"type": "string",
"description": "Music style/genre description (e.g., \"Neo-Soul: A warm, organic neo-soul track...\")"
},
"lyrics": {
"type": "string",
"description": "Structured lyrics with section markers like [Verse], [Chorus], [Bridge], etc."
},
"seed": {
"type": "integer",
"description": "Random seed for reproducible generation",
"format": "int32"
},
"duration": {
"maximum": 190,
"minimum": 1,
"type": "number",
"description": "Duration in seconds (1-190)",
"format": "float",
"default": 60
},
"bpm": {
"maximum": 200,
"minimum": 40,
"type": "integer",
"description": "Beats per minute (40-200)",
"format": "int32",
"default": 120
},
"timeSignature": {
"enum": [
"2",
"3",
"4",
"6"
],
"type": "string",
"description": "Time signature (e.g., \"4\" for 4/4 time)",
"default": "4"
},
"language": {
"enum": [
"en",
"ja",
"zh",
"es",
"de",
"fr",
"pt",
"ru",
"it",
"nl",
"pl",
"tr",
"vi",
"cs",
"fa",
"id",
"ko",
"uk",
"hu",
"ar",
"sv",
"ro",
"el"
],
"type": "string",
"description": "Language code (e.g., \"en\", \"zh\", \"ja\", \"ko\")",
"default": "en"
},
"key": {
"enum": [
"C major",
"C# major",
"Db major",
"D major",
"D# major",
"Eb major",
"E major",
"F major",
"F# major",
"Gb major",
"G major",
"G# major",
"Ab major",
"A major",
"A# major",
"Bb major",
"B major",
"C minor",
"C# minor",
"Db minor",
"D minor",
"D# minor",
"Eb minor",
"E minor",
"F minor",
"F# minor",
"Gb minor",
"G minor",
"G# minor",
"Ab minor",
"A minor",
"A# minor",
"Bb minor",
"B minor"
],
"type": "string",
"description": "Musical key (e.g., \"C major\", \"E minor\"). Mirrors ComfyUI's\nTextEncodeAceStepAudio1.5 keyscale combo: 17 roots × {major, minor}.",
"default": "C major"
},
"instrumentalWeight": {
"type": "number",
"description": "Weight for instrumental elements (0.0-1.0)",
"format": "float",
"default": 0.85
},
"vocalWeight": {
"type": "number",
"description": "Weight for vocal elements (0.0-1.0)",
"format": "float",
"default": 0.9
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional diffusion model (unet) override. Defaults to ACE-Step 1.5 turbo 2B."
},
"cover": {
"$ref": "#/components/schemas/AceStepAudioCover"
},
"clipModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional text encoder (CLIP) override. Defaults to qwen_4b_ace15."
},
"vaeModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional VAE override. Defaults to ace_1.5_vae."
},
"languageModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional language model override for audio code generation. Defaults to qwen_0.6b_ace15."
},
"steps": {
"maximum": 200,
"minimum": 1,
"type": "integer",
"description": "Number of sampling steps. Turbo variants converge at 8; non-turbo base / sft\nvariants expect the full 50-step schedule.",
"format": "int32",
"default": 8
},
"cfg": {
"maximum": 30,
"minimum": 0,
"type": "number",
"description": "Classifier-free guidance scale. Turbo variants run CFG-off at 1.0;\nnon-turbo base / sft variants expect CFG on (around 4).",
"format": "float",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
},
"description": "Optional LoRAs to apply. Each entry's strength is applied to both the\ndiffusion model (UNET) and the dual CLIP via ComfyUI's LoraLoader.\nCompatibility with non-default base models is the caller's responsibility."
}
},
"additionalProperties": false,
"description": "Input parameters for ACE Step 1.5 audio generation workflow step"
},
"AceStepAudioOutput": {
"required": [
"blob"
],
"type": "object",
"properties": {
"blob": {
"$ref": "#/components/schemas/Blob"
}
},
"additionalProperties": false,
"description": "Output from ACE Step 1.5 audio generation workflow step.\nReturns a VideoBlob (when a background image is provided) or an AudioBlob (audio only)."
},
"AceStepAudioStep": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStep"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/AceStepAudioInput"
},
"output": {
"$ref": "#/components/schemas/AceStepAudioOutput"
},
"$type": {
"enum": [
"aceStepAudio"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Workflow step for generating music using ACE Step 1.5.\nProduces full songs from text descriptions and structured lyrics."
},
"AceStepAudioStepTemplate": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStepTemplate"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/AceStepAudioInput"
},
"$type": {
"enum": [
"aceStepAudio"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Workflow step for generating music using ACE Step 1.5.\nProduces full songs from text descriptions and structured lyrics."
},
"AceStepSampleOverride": {
"type": "object",
"properties": {
"lyrics": {
"type": [
"null",
"string"
]
},
"duration": {
"type": [
"null",
"number"
],
"format": "float"
},
"bpm": {
"type": [
"null",
"integer"
],
"format": "int32"
},
"timeSignature": {
"type": [
"null",
"string"
]
},
"language": {
"type": [
"null",
"string"
]
},
"key": {
"type": [
"null",
"string"
]
},
"instrumentalWeight": {
"type": [
"null",
"number"
],
"format": "float"
},
"vocalWeight": {
"type": [
"null",
"number"
],
"format": "float"
},
"steps": {
"type": [
"null",
"integer"
],
"format": "int32"
},
"cfg": {
"type": [
"null",
"number"
],
"format": "float"
}
},
"additionalProperties": false,
"description": "Optional per-prompt overrides for AceStep training sample generation.\nIndex-aligned with `Samples.Prompts`: entry `[i]` overrides the\ndefaults for the sample produced for prompt `[i]`. Any field left\nnull falls back to the hardcoded sample default."
},
"AgeClassificationInput": {
"required": [
"mediaUrl"
],
"type": "object",
"properties": {
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "An optional model to use for age classification. If not provided, the default model will determined by the worker"
},
"mediaUrl": {
"type": "string",
"description": "The URL of the media to classify. This can either be a URL to an image or a video or a ZIP containing multiple images",
"format": "uri"
},
"faceDetectionThreshold": {
"type": [
"null",
"number"
],
"description": "Optional face detection confidence threshold. Defaults to 0.25 if not provided.",
"format": "double"
},
"personDetectionThreshold": {
"type": [
"null",
"number"
],
"description": "Optional person detection confidence threshold. Defaults to 0.35 if not provided.",
"format": "double"
}
},
"additionalProperties": false
},
"AgeClassificationOutput": {
"required": [
"faceRecognitionAvailable",
"hasMinor",
"labels",
"numFlagged",
"numPredictions"
],
"type": "object",
"properties": {
"labels": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AgeClassifierLabel"
}
},
"description": "Age classification results per image"
},
"hasMinor": {
"type": "boolean",
"description": "Whether any minor was detected in the dataset"
},
"numPredictions": {
"type": "integer",
"description": "Total number of age predictions made",
"format": "int32"
},
"numFlagged": {
"type": "integer",
"description": "Number of flagged predictions (minors)",
"format": "int32"
},
"faceRecognitionFaces": {
"type": [
"null",
"object"
],
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FaceDetectionInfo"
}
},
"description": "Face recognition results per image (if available)"
},
"faceRecognitionNumFaces": {
"type": [
"null",
"integer"
],
"description": "Total number of faces detected across all images",
"format": "int32"
},
"faceRecognitionNumUniquePeople": {
"type": [
"null",
"integer"
],
"description": "Estimated number of unique people in the dataset (based on similarity clustering)",
"format": "int32"
},
"faceRecognitionAvailable": {
"type": "boolean",
"description": "Whether face recognition data is available for this result"
}
},
"additionalProperties": false
},
"AgeClassificationResult": {
"required": [
"detections"
],
"type": "object",
"properties": {
"detections": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AgeDetection"
},
"description": "Array of detected people with age classifications."
},
"status": {
"type": [
"null",
"string"
]
},
"ran": {
"type": [
"null",
"boolean"
]
},
"detector": {
"type": [
"null",
"string"
]
},
"minorDetected": {
"type": [
"null",
"boolean"
]
},
"error": {
"type": [
"null",
"string"
]
}
},
"additionalProperties": false,
"description": "Represents age classification results for media content."
},
"AgeClassificationStep": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStep"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/AgeClassificationInput"
},
"output": {
"$ref": "#/components/schemas/AgeClassificationOutput"
},
"$type": {
"enum": [
"ageClassification"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Age classification"
},
"AgeClassificationStepTemplate": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStepTemplate"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/AgeClassificationInput"
},
"$type": {
"enum": [
"ageClassification"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Age classification"
},
"AgeClassifierLabel": {
"required": [
"age",
"boundingBox",
"isMinor"
],
"type": "object",
"properties": {
"age": {
"type": "string"
},
"isMinor": {
"type": "boolean"
},
"boundingBox": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
}
},
"topK": {
"type": [
"null",
"object"
],
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"faceDetectionConfidence": {
"type": [
"null",
"number"
],
"format": "double"
},
"personDetectionConfidence": {
"type": [
"null",
"number"
],
"format": "double"
}
},
"additionalProperties": false
},
"AgeDetection": {
"required": [
"ageLabel",
"boundingBox",
"confidence",
"detectorType",
"isMinor"
],
"type": "object",
"properties": {
"detectorType": {
"type": "string",
"description": "The detector type used (e.g., \"yolo\", \"mediapipe\", \"ensemble\")."
},
"boundingBox": {
"$ref": "#/components/schemas/BoundingBox"
},
"ageLabel": {
"type": "string",
"description": "The age label (e.g., \"adult\", \"child\", \"teen\")."
},
"confidence": {
"type": "number",
"description": "Confidence score for the age classification (0.0 to 1.0).",
"format": "double"
},
"isMinor": {
"type": "boolean",
"description": "Whether the detected person is classified as a minor."
},
"topK": {
"type": [
"null",
"object"
],
"additionalProperties": {
"type": "number",
"format": "double"
},
"description": "Full probability distribution across all age labels.\nKeys are age labels (e.g., \"Child 0-12\", \"Adult 21-44\"), values are confidence scores (0.0 to 1.0)."
}
},
"additionalProperties": false,
"description": "Represents a single age detection in an image."
},
"AnimaAIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AIToolkitTrainingInput"
},
{
"required": [
"defaultSteps",
"ecosystem",
"engine"
],
"type": "object",
"properties": {
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string",
"description": "The primary Anima model to train upon. Custom checkpoints use the base Anima repository as extras.",
"default": "urn:air:anima:repository:huggingface:circlestone-labs/Anima-Base-v1.0-Diffusers@main.tar"
},
"defaultSteps": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
},
"batchSize": {
"maximum": 1,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Fixed at 1 for this ecosystem.",
"default": 1
}
},
"additionalProperties": false
}
],
"description": "AI Toolkit training for Anima models."
},
"AnimaCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/AnimaImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"sdcpp"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"AnimaImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/SdCppImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampleMethod": {
"$ref": "#/components/schemas/SdCppSampleMethod"
},
"schedule": {
"$ref": "#/components/schemas/SdCppSchedule"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 30
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 4
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffuserModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"sdcpp"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/AnimaCreateImageGenInput",
"createVariant": "#/components/schemas/AnimaVariantImageGenInput"
}
}
}
]
},
"AnimaVariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/AnimaImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"image",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"strength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.7
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"sdcpp"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"AnimalPoseBboxDetector": {
"enum": [
"yolox_l.torchscript.pt",
"yolox_l.onnx",
"yolo_nas_l_fp16.onnx",
"yolo_nas_m_fp16.onnx",
"yolo_nas_s_fp16.onnx"
],
"type": "string"
},
"AnimalPoseEstimator": {
"enum": [
"rtmpose-m_ap10k_256_bs5.torchscript.pt",
"rtmpose-m_ap10k_256.onnx"
],
"type": "string"
},
"AnimeBodyAgeClassificationResult": {
"required": [
"ageBand",
"apparentAge",
"childDetected",
"minorDetected",
"oodDetected",
"oodProbability",
"ordinalCutpointProbabilities",
"under13Probability",
"under18Probability"
],
"type": "object",
"properties": {
"apparentAge": {
"type": "number",
"format": "double"
},
"ageBand": {
"type": "string"
},
"under13Probability": {
"type": "number",
"format": "double"
},
"under18Probability": {
"type": "number",
"format": "double"
},
"oodProbability": {
"type": "number",
"format": "double"
},
"ordinalCutpointProbabilities": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"childDetected": {
"type": "boolean"
},
"minorDetected": {
"type": "boolean"
},
"oodDetected": {
"type": "boolean"
},
"status": {
"type": [
"null",
"string"
]
},
"ran": {
"type": [
"null",
"boolean"
]
},
"warning": {
"type": [
"null",
"string"
]
},
"error": {
"type": [
"null",
"string"
]
}
},
"additionalProperties": false,
"description": "Represents anime apparent-age and child-risk results for a complete image.\nThe model is an additional risk signal, not a verified chronological-age claim."
},
"AnimeRecognitionResult": {
"required": [
"confidence",
"label"
],
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Classification label: \"anime\" or \"real\"."
},
"confidence": {
"type": "number",
"description": "Confidence score for the classification (0.0 to 1.0).",
"format": "double"
}
},
"additionalProperties": false,
"description": "Represents anime vs real image recognition results."
},
"AnylineMergeWith": {
"enum": [
"lineart_standard",
"lineart_realistic",
"lineart_anime",
"manga_line"
],
"type": "string"
},
"ArchiveFormat": {
"enum": [
"zip",
"tar"
],
"type": "string",
"description": "Container format for a Civitai.Orchestration.Grains.Workflows.Steps.BlobArchive.BlobArchiveStep output."
},
"AssistantMessage": {
"allOf": [
{
"$ref": "#/components/schemas/ChatCompletionMessage"
},
{
"required": [
"role"
],
"type": "object",
"properties": {
"content": {
"type": [
"null",
"string"
],
"description": "The assistant message content (text only)."
},
"name": {
"type": [
"null",
"string"
],
"description": "Optional name for the participant."
},
"refusal": {
"type": [
"null",
"string"
],
"description": "Optional refusal message if the model refused to respond."
},
"tool_calls": {
"type": [
"null",
"array"
],
"items": {
"$ref": "#/components/schemas/ChatCompletionToolCall"
},
"description": "Tool calls requested by the model."
},
"images": {
"type": [
"null",
"array"
],
"items": {
"$ref": "#/components/schemas/ChatCompletionGeneratedImage"
},
"description": "Generated images attached to this assistant message, populated when the request\nincluded \"image\" in its modalities. Each entry is a base64 data URI."
},
"reasoning_content": {
"type": [
"null",
"string"
],
"description": "Model reasoning separated from the answer by the host's reasoning parser (vLLM convention)."
},
"reasoning": {
"type": [
"null",
"string"
],
"description": "Input alias for the vLLM 0.26+ / OpenRouter field name; responses always use reasoning_content.",
"writeOnly": true
},
"role": {
"enum": [
"assistant"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "An assistant message representing a prior response."
},
"AudioBlob": {
"allOf": [
{
"$ref": "#/components/schemas/Blob"
},
{
"required": [
"type"
],
"type": "object",
"properties": {
"duration": {
"type": [
"null",
"number"
],
"description": "Duration of the audio in seconds",
"format": "float"
},
"type": {
"enum": [
"audio"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"AudioCaptioningInput": {
"required": [
"maxNewTokens",
"mediaUrl",
"temperature"
],
"type": "object",
"properties": {
"mediaUrl": {
"type": "string",
"description": "The URL of the audio file or zip archive to caption.",
"format": "uri"
},
"temperature": {
"type": "number",
"description": "Sampling temperature for both ACE-Step requests.",
"format": "double"
},
"maxNewTokens": {
"type": "integer",
"description": "Maximum number of tokens to generate for each ACE-Step request.",
"format": "int32"
}
},
"additionalProperties": false
},
"AudioCaptioningOutput": {
"required": [
"results"
],
"type": "object",
"properties": {
"results": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/AudioCaptioningOutputItem"
}
}
},
"additionalProperties": false
},
"AudioCaptioningOutputItem": {
"required": [
"text"
],
"type": "object",
"properties": {
"text": {
"type": "string"
},
"caption": {
"type": [
"null",
"string"
]
},
"lyrics": {
"type": [
"null",
"string"
]
},
"bpm": {
"type": [
"null",
"string"
]
},
"keyScale": {
"type": [
"null",
"string"
]
},
"timeSignature": {
"type": [
"null",
"string"
]
},
"duration": {
"type": [
"null",
"string"
]
},
"language": {
"type": [
"null",
"string"
]
}
},
"additionalProperties": false
},
"AudioCaptioningStep": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStep"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/AudioCaptioningInput"
},
"output": {
"$ref": "#/components/schemas/AudioCaptioningOutput"
},
"$type": {
"enum": [
"audioCaptioning"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Audio Captioning"
},
"AudioCaptioningStepTemplate": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStepTemplate"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/AudioCaptioningInput"
},
"$type": {
"enum": [
"audioCaptioning"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Audio Captioning"
},
"AudioComposeMediaOutput": {
"allOf": [
{
"$ref": "#/components/schemas/ComposeMediaOutput"
},
{
"required": [
"audioBlob",
"type"
],
"type": "object",
"properties": {
"audioBlob": {
"$ref": "#/components/schemas/AudioBlob"
},
"type": {
"enum": [
"audio"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "An audio mixdown produced when the composition has no video."
},
"AvailableResourceAvailability": {
"allOf": [
{
"$ref": "#/components/schemas/ResourceAvailability"
},
{
"required": [
"status",
"workers"
],
"type": "object",
"properties": {
"workers": {
"type": "integer",
"format": "int32"
},
"status": {
"enum": [
"available"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"AvifOutputFormat": {
"allOf": [
{
"$ref": "#/components/schemas/ImageOutputFormat"
},
{
"required": [
"format"
],
"type": "object",
"properties": {
"quality": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"description": "Quality setting for AVIF compression (1-100). Only applies when Lossless is false.",
"format": "int32",
"default": 85
},
"lossless": {
"type": "boolean",
"description": "When true, uses lossless compression. When false, uses lossy compression with the Quality setting.",
"default": false
},
"format": {
"enum": [
"avif"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "AVIF output format configuration. Animated sources are reduced to their first frame."
},
"BackgroundRemovalTransformer": {
"allOf": [
{
"$ref": "#/components/schemas/MediaTransformer"
},
{
"required": [
"type"
],
"type": "object",
"properties": {
"shadowRemoval": {
"$ref": "#/components/schemas/ShadowRemoval"
},
"fromCenter": {
"type": "boolean",
"description": "Also seed the fill from the frame centre, for artwork with an enclosed background-coloured\nhole (e.g. avatar frames).",
"default": false
},
"type": {
"enum": [
"backgroundRemoval"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Removes the element's background per frame via a deterministic edge-connected flood fill\n(unlike the AI-matting `imageBackgroundRemoval` step): the background colour is estimated\nfrom the frame border and every border-connected pixel within tolerance becomes transparent,\nso background-coloured pixels enclosed inside the artwork are kept. Video elements only. Pair\nwith an alpha-capable output container (webp) and a transparent canvas background to carry the\ntransparency into the output."
},
"BasicAnimationsBlobs": {
"type": "object",
"properties": {
"walkingModel": {
"$ref": "#/components/schemas/Model3DBlob"
},
"walkingFbxModel": {
"$ref": "#/components/schemas/Model3DBlob"
},
"walkingArmatureModel": {
"$ref": "#/components/schemas/Model3DBlob"
},
"runningModel": {
"$ref": "#/components/schemas/Model3DBlob"
},
"runningFbxModel": {
"$ref": "#/components/schemas/Model3DBlob"
},
"runningArmatureModel": {
"$ref": "#/components/schemas/Model3DBlob"
}
},
"additionalProperties": false
},
"BatchOCRSafetyClassificationInput": {
"required": [
"mediaUrls"
],
"type": "object",
"properties": {
"mediaUrls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
}
},
"additionalProperties": false
},
"BatchOCRSafetyClassificationOutput": {
"required": [
"results"
],
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BatchOCRSafetyClassificationResult"
}
}
},
"additionalProperties": false
},
"BatchOCRSafetyClassificationResult": {
"required": [
"classification",
"mediaUrl"
],
"type": "object",
"properties": {
"mediaUrl": {
"type": "string",
"format": "uri"
},
"classification": {
"type": "string"
},
"text": {
"type": [
"null",
"string"
]
}
},
"additionalProperties": false
},
"Blob": {
"required": [
"available",
"id",
"type"
],
"type": "object",
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string",
"description": "Gets the id of the blob that contains this image."
},
"available": {
"type": "boolean",
"description": "Gets a value indicating whether the blob is available."
},
"url": {
"type": [
"null",
"string"
],
"description": "Gets a url that can be used to preview the blob.",
"format": "uri"
},
"urlExpiresAt": {
"type": [
"null",
"string"
],
"description": "Get when the url is set to expire",
"format": "date-time"
},
"jobId": {
"type": [
"null",
"string"
],
"description": "Get the id of the job that is associated with this blob."
},
"nsfwLevel": {
"$ref": "#/components/schemas/NSFWLevel"
},
"blockedReason": {
"type": [
"null",
"string"
],
"description": "Get an optional reason for why the blob was blocked. This is only set if the blob was blocked."
},
"tier": {
"type": [
"null",
"string"
],
"description": "Get the storage tier holding this blob, when one was declared. Null resolves to the private\nmanaged tier, falling back to the classic one for blobs written before producers moved off it."
}
},
"additionalProperties": false,
"description": "Represents a blob that gets produced as part of a specific job",
"discriminator": {
"propertyName": "type",
"mapping": {
"image": "#/components/schemas/ImageBlob",
"video": "#/components/schemas/VideoBlob",
"audio": "#/components/schemas/AudioBlob",
"model3d": "#/components/schemas/Model3DBlob"
}
}
},
"BlobArchiveEntry": {
"required": [
"blobId"
],
"type": "object",
"properties": {
"blobId": {
"minLength": 1,
"type": "string",
"description": "The blob ID to include in the archive."
},
"fileName": {
"type": [
"null",
"string"
],
"description": "Optional filename to use inside the archive. When omitted, the blob ID is used.\nPath components and control characters are stripped."
}
},
"additionalProperties": false,
"description": "A single entry within a Civitai.Orchestration.Grains.Workflows.Steps.BlobArchive.BlobArchiveStep."
},
"BlobArchiveInput": {
"required": [
"entries"
],
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BlobArchiveEntry"
},
"description": "The blobs to include in the archive. Must contain at least 1 and at most 1000 entries."
},
"archiveName": {
"type": [
"null",
"string"
],
"description": "Optional filename for the archive itself (used in the Content-Disposition header).\nDefaults to \"archive.zip\" or \"archive.tar\" based on Civitai.Orchestration.Grains.Workflows.Steps.BlobArchive.BlobArchiveInput.Format."
},
"format": {
"$ref": "#/components/schemas/ArchiveFormat"
}
},
"additionalProperties": false,
"description": "Input configuration for the BlobArchive workflow step."
},
"BlobArchiveOutput": {
"required": [
"entryCount",
"expiresAt",
"format",
"url"
],
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The signed URL that streams the archive when requested.",
"format": "uri"
},
"entryCount": {
"type": "integer",
"description": "The number of entries included in the archive.",
"format": "int32"
},
"format": {
"$ref": "#/components/schemas/ArchiveFormat"
},
"expiresAt": {
"type": "string",
"description": "The UTC time at which this URL expires.",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "Output produced by the BlobArchive workflow step."
},
"BlobArchiveStep": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStep"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/BlobArchiveInput"
},
"output": {
"$ref": "#/components/schemas/BlobArchiveOutput"
},
"$type": {
"enum": [
"blobArchive"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Bundles a set of blobs into a single archive (zip or tar) that callers can\ndownload from a signed streaming URL. Runs in-process in the orchestrator;\nno worker job is dispatched."
},
"BlobArchiveStepTemplate": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStepTemplate"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/BlobArchiveInput"
},
"$type": {
"enum": [
"blobArchive"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Bundles a set of blobs into a single archive (zip or tar) that callers can\ndownload from a signed streaming URL. Runs in-process in the orchestrator;\nno worker job is dispatched."
},
"BlobTrainingDataItem": {
"required": [
"air"
],
"type": "object",
"properties": {
"air": {
"type": "string",
"description": "The blob reference. Accepts an AIR urn (urn:air:other:other:orchestrator:blob@{blobKey}),\na /v2/consumer/blobs/{blobKey} URL, or a bare blob key; normalized to the AIR urn form at submission."
},
"caption": {
"type": [
"null",
"string"
],
"description": "Optional caption for this item, written as the trainer's sidecar caption file."
}
},
"additionalProperties": false,
"description": "A single training item: a consumer-uploaded blob plus an optional caption."
},
"BlobsTrainingData": {
"allOf": [
{
"$ref": "#/components/schemas/TrainingData"
},
{
"required": [
"items",
"type"
],
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BlobTrainingDataItem"
},
"description": "The training items, in dataset order. Each references a consumer-uploaded blob."
},
"type": {
"enum": [
"blobs"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Training data supplied as individually uploaded blobs (via POST /v2/consumer/blobs),\nso each item passed through per-asset moderation on upload."
},
"BlurRegion": {
"required": [
"x1",
"x2",
"y1",
"y2"
],
"type": "object",
"properties": {
"x1": {
"type": "integer",
"description": "Left edge X coordinate in pixels.",
"format": "int32"
},
"y1": {
"type": "integer",
"description": "Top edge Y coordinate in pixels.",
"format": "int32"
},
"x2": {
"type": "integer",
"description": "Right edge X coordinate in pixels.",
"format": "int32"
},
"y2": {
"type": "integer",
"description": "Bottom edge Y coordinate in pixels.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "A rectangular region defined by pixel coordinates."
},
"BlurRegionMode": {
"enum": [
"include",
"exclude"
],
"type": "string",
"description": "Determines how regions are applied to the blur operation."
},
"BlurTransform": {
"allOf": [
{
"$ref": "#/components/schemas/ImageTransform"
},
{
"required": [
"blur",
"mode",
"type"
],
"type": "object",
"properties": {
"blur": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"description": "The blur intensity (1-100).",
"format": "int32"
},
"mode": {
"$ref": "#/components/schemas/BlurRegionMode"
},
"regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BlurRegion"
},
"description": "Rectangular regions that define the blur mask."
},
"type": {
"enum": [
"blur"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Applies a Gaussian blur with optional region-based masking."
},
"BodyAgeClassificationResult": {
"required": [
"detections"
],
"type": "object",
"properties": {
"detections": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BodyAgeDetection"
}
},
"status": {
"type": [
"null",
"string"
]
},
"ran": {
"type": [
"null",
"boolean"
]
},
"childDetected": {
"type": [
"null",
"boolean"
]
},
"minorDetected": {
"type": [
"null",
"boolean"
]
},
"oodDetected": {
"type": [
"null",
"boolean"
]
},
"error": {
"type": [
"null",
"string"
]
}
},
"additionalProperties": false,
"description": "Represents body-only apparent-age and child-risk results for media content.\nThe model is an additional risk signal, not a verified chronological-age claim."
},
"BodyAgeDetection": {
"required": [
"ageBand",
"apparentAge",
"boundingBox",
"headGeometrySource",
"isChild",
"isMinor",
"isOod",
"oodProbability",
"personDetected",
"personDetectionConfidence",
"under13Probability",
"under13ViewProbabilities",
"under18Probability"
],
"type": "object",
"properties": {
"boundingBox": {
"$ref": "#/components/schemas/BoundingBox"
},
"personDetected": {
"type": "boolean"
},
"personDetectionConfidence": {
"type": "number",
"format": "double"
},
"faceBoundingBox": {
"$ref": "#/components/schemas/BoundingBox"
},
"faceDetectionConfidence": {
"type": [
"null",
"number"
],
"format": "double"
},
"headGeometrySource": {
"type": "string"
},
"apparentAge": {
"type": "number",
"format": "double"
},
"ageBand": {
"type": "string"
},
"under13Probability": {
"type": "number",
"format": "double"
},
"under18Probability": {
"type": "number",
"format": "double"
},
"oodProbability": {
"type": "number",
"format": "double"
},
"under13ViewProbabilities": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
},
"isChild": {
"type": "boolean"
},
"isMinor": {
"type": "boolean"
},
"isOod": {
"type": "boolean"
}
},
"additionalProperties": false,
"description": "Represents one body-only age estimate for a detected person."
},
"BooguAIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AIToolkitTrainingInput"
},
{
"required": [
"defaultSteps",
"ecosystem",
"engine"
],
"type": "object",
"properties": {
"defaultSteps": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
},
"batchSize": {
"maximum": 1,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Fixed at 1 for this ecosystem.",
"default": 1
}
},
"additionalProperties": false
}
],
"description": "AI Toolkit training for Boogu Image models."
},
"BoundingBox": {
"required": [
"x1",
"x2",
"y1",
"y2"
],
"type": "object",
"properties": {
"x1": {
"type": "number",
"format": "double"
},
"y1": {
"type": "number",
"format": "double"
},
"x2": {
"type": "number",
"format": "double"
},
"y2": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false,
"description": "Represents a bounding box with coordinates."
},
"BucketResponse": {
"required": [
"at",
"canceledRate",
"requests",
"userErrorRate"
],
"type": "object",
"properties": {
"at": {
"type": "string",
"format": "date-time"
},
"requests": {
"type": "integer",
"format": "int64"
},
"successRate": {
"type": [
"null",
"number"
],
"format": "double"
},
"canceledRate": {
"type": "number",
"format": "double"
},
"userErrorRate": {
"type": "number",
"format": "double"
},
"costBuzz": {
"$ref": "#/components/schemas/PercentilesResponse"
},
"latencySeconds": {
"$ref": "#/components/schemas/PercentilesResponse"
}
},
"additionalProperties": false
},
"BuzzClientAccount": {
"enum": [
"yellow",
"blue",
"green",
"fakeRed"
],
"type": "string"
},
"ChatCompletionChoice": {
"required": [
"index",
"message"
],
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "The index of this choice.",
"format": "int32"
},
"message": {
"$ref": "#/components/schemas/AssistantMessage"
},
"finishReason": {
"type": [
"null",
"string"
],
"description": "The reason the model stopped generating."
},
"logprobs": {
"type": "null",
"description": "Log probability information (if requested)."
}
},
"additionalProperties": false,
"description": "A completion choice."
},
"ChatCompletionContentPart": {
"required": [
"type"
],
"type": "object",
"properties": {
"type": {
"type": "string",
"readOnly": true
},
"text": {
"type": [
"null",
"string"
],
"description": "The text content."
},
"imageUrl": {
"$ref": "#/components/schemas/ChatCompletionImageUrl"
}
},
"additionalProperties": false,
"description": "Base type for message content parts.\nSupports both camelCase (imageUrl) and snake_case (image_url) type discriminators via ContentPartJsonConverter."
},
"ChatCompletionFunction": {
"required": [
"name"
],
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": [
"null",
"string"
]
},
"parameters": {
"type": "null"
},
"strict": {
"type": [
"null",
"boolean"
]
}
},
"additionalProperties": false,
"description": "A function definition within a tool."
},
"ChatCompletionFunctionCall": {
"required": [
"arguments",
"name"
],
"type": "object",
"properties": {
"name": {
"type": "string"
},
"arguments": {
"type": "string"
}
},
"additionalProperties": false,
"description": "The function call details within a tool call."
},
"ChatCompletionGeneratedImage": {
"required": [
"image_url"
],
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Always \"image_url\".",
"default": "image_url"
},
"image_url": {
"$ref": "#/components/schemas/ChatCompletionGeneratedImageUrl"
}
},
"additionalProperties": false,
"description": "A generated image attached to an assistant message when \"image\" is included in\nCivitai.Orchestration.Grains.Workflows.Steps.ChatCompletion.ChatCompletionInput.Modalities. Matches the OpenRouter wire shape."
},
"ChatCompletionGeneratedImageUrl": {
"required": [
"url"
],
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Base64 data URI (e.g. \"data:image/png;base64,...\")."
}
},
"additionalProperties": false,
"description": "The image_url payload on a generated image. Currently always a base64 data URI."
},
"ChatCompletionImageConfig": {
"type": "object",
"properties": {
"aspect_ratio": {
"enum": [
"1:1",
"16:9",
"9:16",
"4:3",
"3:4",
"21:9"
],
"type": [
"null",
"string"
],
"description": "Width:height aspect ratio. Examples: \"1:1\", \"16:9\", \"9:16\", \"4:3\", \"3:4\", \"21:9\"."
},
"image_size": {
"enum": [
"0.5K",
"1K",
"2K",
"4K"
],
"type": [
"null",
"string"
],
"description": "Approximate output resolution. \"1K\" ≈ 1MP, \"2K\" ≈ 2MP, etc. Engines clamp to their supported range."
},
"n": {
"maximum": 10,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Number of images to generate. Engines may clamp to their supported maximum.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Image generation parameters used when Civitai.Orchestration.Grains.Workflows.Steps.ChatCompletion.ChatCompletionInput.Modalities contains \"image\".\nMirrors OpenRouter's `image_config` shape on chat-completion requests."
},
"ChatCompletionImageUrl": {
"required": [
"url"
],
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The image source (can be a URL, base64 data URI, or raw base64).\nAfter processing, this will contain the blob URL.",
"format": "source-image"
},
"detail": {
"type": [
"null",
"string"
],
"description": "The detail level for processing the image.\n\"low\", \"high\", or \"auto\" (default).",
"default": "auto"
}
},
"additionalProperties": false,
"description": "Image URL details matching OpenAI API spec."
},
"ChatCompletionInput": {
"required": [
"messages",
"model"
],
"type": "object",
"properties": {
"model": {
"minLength": 1,
"type": "string",
"description": "The model to use for chat completion.\nExamples: \"gpt-4o\", \"gpt-4-turbo\", \"gpt-4o-mini\""
},
"messages": {
"minItems": 1,
"type": "array",
"items": {
"$ref": "#/components/schemas/ChatCompletionMessage"
},
"description": "The messages to generate a completion for."
},
"temperature": {
"maximum": 2,
"minimum": 0,
"type": "number",
"description": "Temperature for sampling (0-2). Higher values make output more random.",
"format": "double",
"default": 1
},
"topP": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Nucleus sampling parameter. Consider tokens with top_p probability mass.",
"format": "double",
"default": 1
},
"maxTokens": {
"maximum": 128000,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Maximum number of tokens to generate.",
"format": "int32"
},
"thinkingTokenBudget": {
"maximum": 2147483647,
"minimum": -1,
"type": [
"null",
"integer"
],
"description": "Optional vLLM reasoning-token limit per completion, including each server-tool round.\nUse 0 to end thinking immediately, or -1/null for no separate thinking limit.\nMaxTokens still limits the total generated thinking and answer tokens.",
"format": "int32"
},
"reasoningEffort": {
"pattern": "^(none|minimal|low|medium|high|xhigh)$",
"type": [
"null",
"string"
],
"description": "OpenAI reasoning_effort: none, minimal, low, medium, high or xhigh. Portable across vLLM\nand hosted providers; the worker translates it to each provider's native reasoning control."
},
"n": {
"maximum": 128,
"minimum": 1,
"type": "integer",
"description": "Number of completions to generate.",
"format": "int32",
"default": 1
},
"stop": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Up to 4 sequences where the API will stop generating tokens."
},
"presencePenalty": {
"maximum": 2,
"minimum": -2,
"type": "number",
"description": "Presence penalty (-2.0 to 2.0). Positive values penalize new tokens based on whether they appear in the text so far.",
"format": "double",
"default": 0
},
"frequencyPenalty": {
"maximum": 2,
"minimum": -2,
"type": "number",
"description": "Frequency penalty (-2.0 to 2.0). Positive values penalize new tokens based on their existing frequency in the text.",
"format": "double",
"default": 0
},
"seed": {
"type": [
"null",
"integer"
],
"description": "Seed for deterministic sampling (beta feature).",
"format": "int64"
},
"user": {
"type": [
"null",
"string"
],
"description": "A unique identifier for the end-user."
},
"logprobs": {
"type": [
"null",
"boolean"
],
"description": "Request token log probabilities in the response."
},
"topLogprobs": {
"maximum": 20,
"minimum": 0,
"type": [
"null",
"integer"
],
"description": "Number of top log probability candidates to return per generated token.\nRequires Civitai.Orchestration.Grains.Workflows.Steps.ChatCompletion.ChatCompletionInput.Logprobs to be enabled.",
"format": "int32"
},
"chatTemplateKwargs": {
"type": [
"null",
"object"
],
"additionalProperties": { },
"description": "Model-specific chat template options, forwarded unchanged to vLLM as chat_template_kwargs.\nPrefer reasoningEffort and thinkingTokenBudget for reasoning control."
},
"tools": {
"type": [
"null",
"array"
],
"items": {
"$ref": "#/components/schemas/ChatCompletionTool"
},
"description": "Tool definitions available for the model to call."
},
"tool_choice": {
"type": "null",
"description": "Controls which (if any) tool is called by the model.\nCan be \"auto\", \"none\", \"required\", or an object specifying a particular function."
},
"modalities": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Output modalities the model should produce. Defaults to text-only when omitted.\nSupported values: \"text\", \"image\". When \"image\" is included, the request is routed\nto the image generation pipeline and returns generated images on the assistant message."
},
"image_config": {
"$ref": "#/components/schemas/ChatCompletionImageConfig"
},
"responseFormat": {
"$ref": "#/components/schemas/ChatCompletionResponseFormat"
}
},
"additionalProperties": false,
"description": "Input for a chat completion step, compatible with OpenAI Chat Completions API."
},
"ChatCompletionJsonSchema": {
"required": [
"name",
"schema"
],
"type": "object",
"properties": {
"name": {
"minLength": 1,
"type": "string"
},
"description": {
"type": [
"null",
"string"
]
},
"schema": { },
"strict": {
"type": [
"null",
"boolean"
],
"description": "OpenAI strict mode. Forces additionalProperties=false and all fields required."
}
},
"additionalProperties": false
},
"ChatCompletionMessage": {
"required": [
"role"
],
"type": "object",
"properties": {
"role": {
"type": "string"
}
},
"additionalProperties": false,
"description": "Base type for chat messages, discriminated by the \"role\" property.\nUses ChatCompletionMessageJsonConverter to handle polymorphism and user message content flexibility.",
"discriminator": {
"propertyName": "role",
"mapping": {
"user": "#/components/schemas/UserMessage",
"system": "#/components/schemas/SystemMessage",
"assistant": "#/components/schemas/AssistantMessage",
"tool": "#/components/schemas/ToolMessage"
}
}
},
"ChatCompletionOutput": {
"required": [
"choices",
"created",
"id",
"model"
],
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the completion."
},
"object": {
"type": "string",
"description": "The object type, always \"chat.completion\".",
"default": "chat.completion"
},
"created": {
"type": "integer",
"description": "Unix timestamp of when the completion was created.",
"format": "int64"
},
"model": {
"type": "string",
"description": "The model used for completion."
},
"choices": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ChatCompletionChoice"
},
"description": "The generated completion choices."
},
"usage": {
"$ref": "#/components/schemas/ChatCompletionUsage"
},
"systemFingerprint": {
"type": [
"null",
"string"
],
"description": "System fingerprint for the model configuration."
},
"parsed": {
"type": "null",
"description": "Parsed JSON content of `Choices[0].Message.Content`. Populated when the request\nspecified a JSON-flavored `response_format` and the content was parseable.\nReachable from downstream workflow steps via `$ref` paths like\n`output.parsed.` — DynamicAssignmentEvaluator walks JsonElement trees\nthe same way it walks the rest of this output."
}
},
"additionalProperties": false,
"description": "Output from a chat completion step."
},
"ChatCompletionResponseFormat": {
"required": [
"type"
],
"type": "object",
"properties": {
"type": {
"minLength": 1,
"type": "string",
"description": "OpenAI-compatible value: `text`, `json_object`, or `json_schema`."
},
"jsonSchema": {
"$ref": "#/components/schemas/ChatCompletionJsonSchema"
}
},
"additionalProperties": false,
"description": "OpenAI-compatible response_format. When Civitai.Orchestration.Grains.Workflows.Steps.ChatCompletion.ChatCompletionResponseFormat.Type is `json_object` or\n`json_schema`, the LLM-emitted content is parsed as JSON server-side and exposed on\nCivitai.Orchestration.Grains.Workflows.Steps.ChatCompletion.ChatCompletionOutput.Parsed, allowing downstream workflow steps to reference\nindividual fields via `$ref` paths like `output.parsed.`."
},
"ChatCompletionStep": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStep"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/ChatCompletionInput"
},
"output": {
"$ref": "#/components/schemas/ChatCompletionOutput"
},
"$type": {
"enum": [
"chatCompletion"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "ChatCompletion"
},
"ChatCompletionStepTemplate": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStepTemplate"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/ChatCompletionInput"
},
"$type": {
"enum": [
"chatCompletion"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "ChatCompletion"
},
"ChatCompletionTokensDetails": {
"type": "object",
"properties": {
"reasoningTokens": {
"type": [
"null",
"integer"
],
"description": "Reasoning tokens generated before the answer; billed as completion tokens.",
"format": "int32"
}
},
"additionalProperties": false
},
"ChatCompletionTool": {
"required": [
"type"
],
"type": "object",
"properties": {
"type": {
"type": "string"
},
"function": {
"$ref": "#/components/schemas/ChatCompletionFunction"
},
"parameters": {
"type": "null",
"description": "Server-tool parameters for providers such as OpenRouter."
}
},
"additionalProperties": false,
"description": "A tool definition sent in a chat completion request."
},
"ChatCompletionToolCall": {
"required": [
"function",
"id",
"type"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"function": {
"$ref": "#/components/schemas/ChatCompletionFunctionCall"
}
},
"additionalProperties": false,
"description": "A tool call returned in an assistant message response."
},
"ChatCompletionUsage": {
"required": [
"completionTokens",
"promptTokens",
"totalTokens"
],
"type": "object",
"properties": {
"promptTokens": {
"type": "integer",
"description": "Number of tokens in the prompt.",
"format": "int32"
},
"completionTokens": {
"type": "integer",
"description": "Number of tokens in the generated completion.",
"format": "int32"
},
"totalTokens": {
"type": "integer",
"description": "Total number of tokens (prompt + completion).",
"format": "int32"
},
"completionTokensDetails": {
"$ref": "#/components/schemas/ChatCompletionTokensDetails"
}
},
"additionalProperties": false,
"description": "Token usage statistics for the completion."
},
"ChromaAIToolkitTrainingInput": {
"allOf": [
{
"$ref": "#/components/schemas/AIToolkitTrainingInput"
},
{
"required": [
"ecosystem",
"engine"
],
"type": "object",
"properties": {
"ecosystem": {
"enum": [
"chroma"
],
"type": "string"
},
"engine": {
"enum": [
"ai-toolkit"
],
"type": "string"
},
"batchSize": {
"maximum": 1,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Training batch size. Fixed at 1 for this ecosystem.",
"default": 1
}
},
"additionalProperties": false
}
],
"description": "AI Toolkit training for Chroma models"
},
"CoarseMode": {
"enum": [
"disable",
"enable"
],
"type": "string"
},
"ComfyAnimaCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyAnimaImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyAnimaImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "createImage"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 30
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 4
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffuserModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"controlNets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ImageJobControlNet"
}
},
"vaeModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyAnimaCreateImageGenInput",
"createVariant": "#/components/schemas/ComfyAnimaVariantImageGenInput"
}
}
}
]
},
"ComfyAnimaVariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyAnimaImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"image",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"denoiseStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.75
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"ecosystem": {
"enum": [
"anima"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyBooguBaseCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguBaseImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"base"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyBooguBaseImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 4
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"base"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyBooguBaseCreateImageGenInput"
}
}
}
]
},
"ComfyBooguEditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 25
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 3.5
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"edit"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"editImage": "#/components/schemas/ComfyBooguEditImageInput"
}
}
}
]
},
"ComfyBooguEditImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguEditImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"images": {
"maxItems": 2,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"edit"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyBooguEditTurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 4
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"editTurbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"editImage": "#/components/schemas/ComfyBooguEditTurboImageInput"
}
}
}
]
},
"ComfyBooguEditTurboImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguEditTurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"images": {
"maxItems": 2,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"editTurbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyBooguImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"base": "#/components/schemas/ComfyBooguBaseImageGenInput",
"turbo": "#/components/schemas/ComfyBooguTurboImageGenInput",
"edit": "#/components/schemas/ComfyBooguEditImageGenInput",
"editTurbo": "#/components/schemas/ComfyBooguEditTurboImageGenInput"
}
}
}
]
},
"ComfyBooguTurboCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguTurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyBooguTurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyBooguImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 4
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"boogu"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyBooguTurboCreateImageGenInput"
}
}
}
]
},
"ComfyChromaCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyChromaImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"chroma"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyChromaImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 28
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 3.5
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"ecosystem": {
"enum": [
"chroma"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyChromaCreateImageGenInput"
}
}
}
]
},
"ComfyErnieImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"ecosystem": {
"enum": [
"ernie"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"ernie": "#/components/schemas/ComfyErnieStandardImageGenInput",
"turbo": "#/components/schemas/ComfyErnieTurboImageGenInput"
}
}
}
]
},
"ComfyErnieStandardCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyErnieStandardImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"ernie"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ernie"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyErnieStandardImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyErnieImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 4
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"ernie"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ernie"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyErnieStandardCreateImageGenInput"
}
}
}
]
},
"ComfyErnieTurboCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyErnieTurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ernie"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyErnieTurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyErnieImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 8
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ernie"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyErnieTurboCreateImageGenInput"
}
}
}
]
},
"ComfyFlux1CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux1EditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"steps": {
"type": "integer",
"format": "int32",
"default": 28
},
"images": {
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"description": "Uses only the first image for image-to-image at denoise strength 0.7. An empty list generates from text, matching sdcpp Flux 1 editImage."
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Compatibility route for sdcpp Flux 1 editing: ordinary image-to-image using only\nthe first source image, or text-to-image when the image list is empty."
},
"ComfyFlux1ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "createImage"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 3.5
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"vaeModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"controlNets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ImageJobControlNet"
}
},
"ecosystem": {
"enum": [
"flux1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyFlux1CreateImageGenInput",
"createVariant": "#/components/schemas/ComfyFlux1VariantImageGenInput",
"editImage": "#/components/schemas/ComfyFlux1EditImageGenInput"
}
}
}
]
},
"ComfyFlux1VariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"image",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"denoiseStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.75
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux2DevCreateImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux2DevImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux2Dev"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux2DevEditImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux2DevImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 9,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux2Dev"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux2DevImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 1000,
"minLength": 0,
"type": "string"
},
"width": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"cfgScale": {
"maximum": 20,
"minimum": 1,
"type": "number",
"format": "double",
"default": 1
},
"steps": {
"maximum": 50,
"minimum": 4,
"type": "integer",
"format": "int32",
"default": 20
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"negativePrompt": {
"type": [
"null",
"string"
]
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"ecosystem": {
"enum": [
"flux2Dev"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyFlux2DevCreateImageInput",
"editImage": "#/components/schemas/ComfyFlux2DevEditImageInput",
"createVariant": "#/components/schemas/ComfyFlux2DevVariantImageGenInput"
}
}
}
]
},
"ComfyFlux2DevVariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux2DevImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"image",
"operation"
],
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"strength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.7
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux2Dev"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux2KleinCreateImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux2KleinImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux2Klein"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux2KleinEditImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux2KleinImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux2Klein"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyFlux2KleinImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 1000,
"minLength": 0,
"type": "string"
},
"width": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"cfgScale": {
"maximum": 20,
"minimum": 1,
"type": "number",
"format": "double",
"default": 5
},
"steps": {
"maximum": 50,
"minimum": 4,
"type": "integer",
"format": "int32",
"default": 20
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"negativePrompt": {
"type": [
"null",
"string"
]
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"modelVersion": {
"enum": [
"4b",
"4b-base",
"9b",
"9b-base",
"9b-kv"
],
"type": "string",
"description": "Klein model variant. Both 9b and 9b-kv always use the 9B KV checkpoint and reference-image caching. 4B and Base variants use their original checkpoints.",
"default": "4b"
},
"ecosystem": {
"enum": [
"flux2Klein"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyFlux2KleinCreateImageInput",
"editImage": "#/components/schemas/ComfyFlux2KleinEditImageInput",
"createVariant": "#/components/schemas/ComfyFlux2KleinVariantImageGenInput"
}
}
}
]
},
"ComfyFlux2KleinVariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyFlux2KleinImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"image",
"operation"
],
"type": "object",
"properties": {
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"strength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.7
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"ecosystem": {
"enum": [
"flux2Klein"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyHiDreamI1CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamI1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyHiDreamI1ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"variant": {
"$ref": "#/components/schemas/HiDreamI1Variant"
},
"precision": {
"$ref": "#/components/schemas/HiDreamI1Precision"
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": [
"null",
"integer"
],
"description": "Defaults to 16 for fast, 28 for dev and 50 for full.",
"format": "int32"
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": [
"null",
"number"
],
"description": "Defaults to 1 for fast and dev, 5 for full.",
"format": "double"
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"ecosystem": {
"enum": [
"hidream"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyHiDreamI1CreateImageGenInput"
}
}
}
]
},
"ComfyHiDreamImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"HiDream-O1-Image": "#/components/schemas/ComfyHiDreamO1ImageGenInput",
"HiDream-O1-Image-dev": "#/components/schemas/ComfyHiDreamO1DevImageGenInput"
}
}
}
]
},
"ComfyHiDreamO1CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamO1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"HiDream-O1-Image"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyHiDreamO1DevCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamO1DevImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"HiDream-O1-Image-dev"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyHiDreamO1DevEditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamO1DevImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"HiDream-O1-Image-dev"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyHiDreamO1DevImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 2048
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 2048
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 28
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"checkpointModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string",
"default": "urn:air:hidream-o1:checkpoint:civitai:2618495@2939964"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"model": {
"enum": [
"HiDream-O1-Image-dev"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyHiDreamO1DevCreateImageGenInput",
"editImage": "#/components/schemas/ComfyHiDreamO1DevEditImageGenInput"
}
}
}
]
},
"ComfyHiDreamO1EditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamO1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"HiDream-O1-Image"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyHiDreamO1ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyHiDreamImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 2048
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 2048
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 40
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 5
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"checkpointModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string",
"default": "urn:air:hidream-o1:checkpoint:civitai:2618495@2939946"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"model": {
"enum": [
"HiDream-O1-Image"
],
"type": "string"
},
"ecosystem": {
"enum": [
"hidream-o1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyHiDreamO1CreateImageGenInput",
"editImage": "#/components/schemas/ComfyHiDreamO1EditImageGenInput"
}
}
}
]
},
"ComfyIdeogram4CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyIdeogram4ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ideogram4"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyIdeogram4ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 12
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 7
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"unconditionalDiffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"ecosystem": {
"enum": [
"ideogram4"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyIdeogram4CreateImageGenInput"
}
}
}
]
},
"ComfyImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ImageGenInput"
},
{
"required": [
"ecosystem",
"engine"
],
"type": "object",
"properties": {
"ecosystem": {
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "ecosystem",
"mapping": {
"sd1": "#/components/schemas/ComfySd1ImageGenInput",
"sdxl": "#/components/schemas/ComfySdxlImageGenInput",
"flux1": "#/components/schemas/ComfyFlux1ImageGenInput",
"flux2Dev": "#/components/schemas/ComfyFlux2DevImageGenInput",
"ernie": "#/components/schemas/ComfyErnieImageGenInput",
"hidream-o1": "#/components/schemas/ComfyHiDreamImageGenInput",
"hidream": "#/components/schemas/ComfyHiDreamI1ImageGenInput",
"chroma": "#/components/schemas/ComfyChromaImageGenInput",
"ponyV7": "#/components/schemas/ComfyPonyV7ImageGenInput",
"anima": "#/components/schemas/ComfyAnimaImageGenInput",
"lens": "#/components/schemas/ComfyLensImageGenInput",
"ming": "#/components/schemas/ComfyMingImageGenInput",
"ideogram4": "#/components/schemas/ComfyIdeogram4ImageGenInput",
"boogu": "#/components/schemas/ComfyBooguImageGenInput",
"krea2": "#/components/schemas/ComfyKrea2ImageGenInput",
"mageflow": "#/components/schemas/ComfyMageFlowImageGenInput",
"flux2Klein": "#/components/schemas/ComfyFlux2KleinImageGenInput",
"qwen": "#/components/schemas/ComfyQwenImageGenInput",
"zImage": "#/components/schemas/ComfyZImageImageGenInput"
}
}
}
]
},
"ComfyImageToSvgInput": {
"allOf": [
{
"$ref": "#/components/schemas/ImageToSvgInput"
},
{
"required": [
"ecosystem",
"engine"
],
"type": "object",
"properties": {
"ecosystem": {
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "ecosystem",
"mapping": {
"starvector": "#/components/schemas/StarVectorImageToSvgInput",
"omnisvg": "#/components/schemas/OmniSvgImageToSvgInput",
"vtracer": "#/components/schemas/VTracerImageToSvgInput"
}
}
}
]
},
"ComfyInput": {
"required": [
"comfyWorkflow"
],
"type": "object",
"properties": {
"comfyWorkflow": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ComfyNode"
},
"description": "Get the comfy workflow that needs to be executed"
},
"quantity": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"description": "The number of jobs to start with this workflow.",
"format": "int32",
"default": 1
},
"imageMetadata": {
"type": [
"null",
"string"
],
"description": "External metadata that will be stored with the image"
},
"useSpineComfy": {
"type": [
"null",
"boolean"
],
"description": "Opt-into using the spine controller exclusively"
}
},
"additionalProperties": false
},
"ComfyKrea2EditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyKrea2ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 10
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"edit"
],
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"editImage": "#/components/schemas/ComfyKrea2EditImageInput"
}
}
}
]
},
"ComfyKrea2EditImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyKrea2EditImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"images",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"images": {
"maxItems": 2,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"edit"
],
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyKrea2ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"raw": "#/components/schemas/ComfyKrea2RawImageGenInput",
"turbo": "#/components/schemas/ComfyKrea2TurboImageGenInput",
"edit": "#/components/schemas/ComfyKrea2EditImageGenInput"
}
}
}
]
},
"ComfyKrea2RawCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyKrea2RawImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"raw"
],
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyKrea2RawImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyKrea2ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 4
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"raw"
],
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyKrea2RawCreateImageGenInput"
}
}
}
]
},
"ComfyKrea2TurboCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyKrea2TurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyKrea2TurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyKrea2ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 8
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"krea2"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyKrea2TurboCreateImageGenInput"
}
}
}
]
},
"ComfyLensImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"ecosystem": {
"enum": [
"lens"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"normal": "#/components/schemas/ComfyLensNormalImageGenInput",
"turbo": "#/components/schemas/ComfyLensTurboImageGenInput"
}
}
}
]
},
"ComfyLensNormalCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLensNormalImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"normal"
],
"type": "string"
},
"ecosystem": {
"enum": [
"lens"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyLensNormalImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLensImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 4
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"normal"
],
"type": "string"
},
"ecosystem": {
"enum": [
"lens"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyLensNormalCreateImageGenInput"
}
}
}
]
},
"ComfyLensTurboCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLensTurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"lens"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyLensTurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLensImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 4
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"lens"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyLensTurboCreateImageGenInput"
}
}
}
]
},
"ComfyLtx23AudioToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx23VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceAudio"
],
"type": "object",
"properties": {
"referenceImage": {
"type": [
"null",
"string"
],
"description": "Optional reference image (e.g. talking-head subject). When provided, the video is anchored to this image.",
"format": "source-image"
},
"sourceAudio": {
"type": "string",
"format": "uri"
},
"imageGuideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Strength of the image guide conditioning (0.0 to 1.0). Only used when ReferenceImage is provided.\nStage 1 strength; stage 2 is fixed at 0.5.",
"format": "float",
"default": 0.7
},
"audioToVideoAttentionScale": {
"maximum": 10,
"minimum": 0,
"type": "number",
"description": "Audio-to-video cross-attention boost applied via LTX2AttentionTunerPatch.\nHigher values make audio drive the video more strongly.",
"format": "float",
"default": 2
},
"operation": {
"enum": [
"audioToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Generate video driven by a reference audio track, optionally anchored to a reference image (ComfyUI backend)"
},
"ComfyLtx23CreateVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx23VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"description": "Optional source image for image-to-video generation"
},
"operation": {
"enum": [
"createVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Create video from text prompt, optionally with a source image (ComfyUI backend)"
},
"ComfyLtx23EditVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx23VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"cannyLowThreshold": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 0.4
},
"cannyHighThreshold": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 0.8
},
"guideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 1
},
"operation": {
"enum": [
"editVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Edit/transform an existing video using Canny edge control (ComfyUI backend)"
},
"ComfyLtx23ExtendVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx23VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"numFrames": {
"maximum": 481,
"minimum": 9,
"type": "integer",
"format": "int32",
"default": 121
},
"operation": {
"enum": [
"extendVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Extend an existing video with new content (ComfyUI backend)"
},
"ComfyLtx23FirstLastFrameToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx23VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"firstFrame": {
"type": [
"null",
"string"
],
"description": "First frame guide image. At least one of FirstFrame or LastFrame must be provided.",
"format": "source-image"
},
"lastFrame": {
"type": [
"null",
"string"
],
"description": "Last frame guide image. At least one of FirstFrame or LastFrame must be provided.",
"format": "source-image"
},
"frameGuideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Strength of the frame guide conditioning (0.0 to 1.0).",
"format": "float",
"default": 0.7
},
"operation": {
"enum": [
"firstLastFrameToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Generate video guided by first and/or last frame images using LTXVAddGuide conditioning (ComfyUI backend)"
},
"ComfyLtx23VideoGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "createVideo"
},
"negativePrompt": {
"type": [
"null",
"string"
]
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int32"
},
"duration": {
"maximum": 20,
"minimum": 3,
"type": "integer",
"description": "Duration in seconds (3 through 20)",
"format": "int32",
"default": 5
},
"width": {
"type": "integer",
"format": "int32",
"default": 1280
},
"height": {
"type": "integer",
"format": "int32",
"default": 720
},
"fps": {
"maximum": 60,
"minimum": 1,
"type": "number",
"format": "float",
"default": 24
},
"generateAudio": {
"type": "boolean",
"default": true
},
"guidanceScale": {
"maximum": 10,
"minimum": 1,
"type": "number",
"format": "float",
"default": 4
},
"steps": {
"maximum": 50,
"minimum": 8,
"type": "integer",
"format": "int32",
"default": 20
},
"model": {
"enum": [
"22b-dev",
"22b-distilled"
],
"type": "string",
"default": "22b-dev"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional override for the LTX 2.3 diffusion-model checkpoint. When set, replaces the\ntransformer file selected by Civitai.Orchestration.Grains.Workflows.Steps.VideoGen.ComfyLtx23VideoGenInput.Model while leaving the CLIPs, VAEs, and\nupscale-LoRA behavior unchanged. Use to point at a community fine-tune (e.g. SulphurAI/Sulphur-2-base)."
},
"quantity": {
"maximum": 10,
"minimum": 1,
"type": "integer",
"description": "Number of videos to generate in this single job. Each video uses a distinct seed\n(Seed + slotIndex) and is produced by re-running the Comfy workflow.",
"format": "int32",
"default": 1
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createVideo": "#/components/schemas/ComfyLtx23CreateVideoInput",
"extendVideo": "#/components/schemas/ComfyLtx23ExtendVideoInput",
"editVideo": "#/components/schemas/ComfyLtx23EditVideoInput",
"firstLastFrameToVideo": "#/components/schemas/ComfyLtx23FirstLastFrameToVideoInput",
"videoToVideo": "#/components/schemas/ComfyLtx23VideoToVideoInput",
"audioToVideo": "#/components/schemas/ComfyLtx23AudioToVideoInput"
}
}
}
],
"description": "LTX Video v2.3 generation via ComfyUI backend"
},
"ComfyLtx23VideoToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx23VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"guideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 0.2
},
"operation": {
"enum": [
"videoToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.3"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Style-transfer an existing video using prompt guidance (ComfyUI backend)"
},
"ComfyLtx25AudioToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx25VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceAudio"
],
"type": "object",
"properties": {
"referenceImage": {
"type": [
"null",
"string"
],
"description": "Optional reference image (e.g. talking-head subject). When provided, the video is anchored to this image.",
"format": "source-image"
},
"sourceAudio": {
"type": "string",
"format": "uri"
},
"imageGuideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Strength of the image guide conditioning (0.0 to 1.0). Only used when ReferenceImage is provided.\nStage 1 strength; stage 2 is fixed at 0.5.",
"format": "float",
"default": 0.7
},
"audioToVideoAttentionScale": {
"maximum": 10,
"minimum": 0,
"type": "number",
"description": "Audio-to-video cross-attention boost applied via LTX2AttentionTunerPatch.\nHigher values make audio drive the video more strongly.",
"format": "float",
"default": 2
},
"operation": {
"enum": [
"audioToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Generate video driven by a reference audio track, optionally anchored to a reference image (ComfyUI backend)"
},
"ComfyLtx25CreateVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx25VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"description": "Optional source image for image-to-video generation"
},
"operation": {
"enum": [
"createVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Create video from text prompt, optionally with a source image (ComfyUI backend)"
},
"ComfyLtx25EditVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx25VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"guideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 1
},
"operation": {
"enum": [
"editVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Edit/transform an existing video using prompt and source-video guidance (ComfyUI backend)"
},
"ComfyLtx25ExtendVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx25VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"numFrames": {
"maximum": 481,
"minimum": 9,
"type": "integer",
"format": "int32",
"default": 121
},
"operation": {
"enum": [
"extendVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Extend an existing video with new content (ComfyUI backend)"
},
"ComfyLtx25FirstLastFrameToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx25VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"firstFrame": {
"type": [
"null",
"string"
],
"description": "First frame guide image. At least one of FirstFrame or LastFrame must be provided.",
"format": "source-image"
},
"lastFrame": {
"type": [
"null",
"string"
],
"description": "Last frame guide image. At least one of FirstFrame or LastFrame must be provided.",
"format": "source-image"
},
"frameGuideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Strength of the frame guide conditioning (0.0 to 1.0).",
"format": "float",
"default": 0.7
},
"operation": {
"enum": [
"firstLastFrameToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Generate video guided by first and/or last frame images using LTXVAddGuide conditioning (ComfyUI backend)"
},
"ComfyLtx25VideoGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "createVideo"
},
"negativePrompt": {
"type": [
"null",
"string"
]
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int32"
},
"duration": {
"maximum": 20,
"minimum": 3,
"type": "integer",
"description": "Duration in seconds (3 through 20)",
"format": "int32",
"default": 5
},
"width": {
"type": "integer",
"format": "int32",
"default": 1280
},
"height": {
"type": "integer",
"format": "int32",
"default": 720
},
"fps": {
"maximum": 60,
"minimum": 1,
"type": "number",
"format": "float",
"default": 24
},
"generateAudio": {
"type": "boolean",
"default": true
},
"guidanceScale": {
"maximum": 10,
"minimum": 1,
"type": "number",
"format": "float",
"default": 4
},
"steps": {
"maximum": 50,
"minimum": 8,
"type": "integer",
"format": "int32",
"default": 20
},
"model": {
"enum": [
"22b-dev",
"22b-distilled"
],
"type": "string",
"default": "22b-dev"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "Optional override for the LTX 2.5 diffusion-model checkpoint. When set, replaces the\ntransformer file selected by Civitai.Orchestration.Grains.Workflows.Steps.VideoGen.ComfyLtx25VideoGenInput.Model while leaving the text encoder, VAEs, and\nupscale-LoRA behavior unchanged. Use to point at a community fine-tune (e.g. SulphurAI/Sulphur-2-base)."
},
"quantity": {
"maximum": 10,
"minimum": 1,
"type": "integer",
"description": "Number of videos to generate in this single job. Each video uses a distinct seed\n(Seed + slotIndex) and is produced by re-running the Comfy workflow.",
"format": "int32",
"default": 1
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createVideo": "#/components/schemas/ComfyLtx25CreateVideoInput",
"extendVideo": "#/components/schemas/ComfyLtx25ExtendVideoInput",
"editVideo": "#/components/schemas/ComfyLtx25EditVideoInput",
"firstLastFrameToVideo": "#/components/schemas/ComfyLtx25FirstLastFrameToVideoInput",
"videoToVideo": "#/components/schemas/ComfyLtx25VideoToVideoInput",
"audioToVideo": "#/components/schemas/ComfyLtx25AudioToVideoInput"
}
}
}
],
"description": "LTX Video v2.5 generation via ComfyUI backend"
},
"ComfyLtx25VideoToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx25VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"guideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 0.2
},
"operation": {
"enum": [
"videoToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2.5"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Style-transfer an existing video using prompt guidance (ComfyUI backend)"
},
"ComfyLtx2CreateVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx2VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"description": "Optional source image for image-to-video generation"
},
"operation": {
"enum": [
"createVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Create video from text prompt, optionally with a source image (ComfyUI backend)"
},
"ComfyLtx2EditVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx2VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"cannyLowThreshold": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 0.4
},
"cannyHighThreshold": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 0.8
},
"guideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "float",
"default": 1
},
"operation": {
"enum": [
"editVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Edit/transform an existing video using Canny edge control (ComfyUI backend)"
},
"ComfyLtx2ExtendVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx2VideoGenInput"
},
{
"required": [
"engine",
"operation",
"sourceVideo"
],
"type": "object",
"properties": {
"sourceVideo": {
"type": "string",
"format": "uri"
},
"numFrames": {
"maximum": 481,
"minimum": 9,
"type": "integer",
"format": "int32",
"default": 121
},
"operation": {
"enum": [
"extendVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Extend an existing video with new content (ComfyUI backend)"
},
"ComfyLtx2FirstLastFrameToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyLtx2VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"firstFrame": {
"type": [
"null",
"string"
],
"description": "First frame guide image. At least one of FirstFrame or LastFrame must be provided.",
"format": "source-image"
},
"lastFrame": {
"type": [
"null",
"string"
],
"description": "Last frame guide image. At least one of FirstFrame or LastFrame must be provided.",
"format": "source-image"
},
"frameGuideStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"description": "Strength of the frame guide conditioning (0.0 to 1.0).",
"format": "float",
"default": 0.7
},
"operation": {
"enum": [
"firstLastFrameToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"ltx2"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Generate video guided by first and/or last frame images using LTXVAddGuide conditioning (ComfyUI backend)"
},
"ComfyLtx2VideoGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "createVideo"
},
"negativePrompt": {
"type": [
"null",
"string"
]
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int32"
},
"duration": {
"enum": [
3,
5
],
"type": "integer",
"description": "Duration in seconds (3 or 5)",
"format": "int32",
"default": 5
},
"width": {
"type": "integer",
"format": "int32",
"default": 1280
},
"height": {
"type": "integer",
"format": "int32",
"default": 720
},
"fps": {
"maximum": 60,
"minimum": 1,
"type": "number",
"format": "float",
"default": 24
},
"generateAudio": {
"type": "boolean",
"default": true
},
"guidanceScale": {
"maximum": 10,
"minimum": 1,
"type": "number",
"format": "float",
"default": 4
},
"steps": {
"maximum": 50,
"minimum": 8,
"type": "integer",
"format": "int32",
"default": 20
},
"model": {
"enum": [
"19b-dev",
"19b-distilled"
],
"type": "string",
"default": "19b-dev"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"engine": {
"enum": [
"ltx2"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createVideo": "#/components/schemas/ComfyLtx2CreateVideoInput",
"extendVideo": "#/components/schemas/ComfyLtx2ExtendVideoInput",
"editVideo": "#/components/schemas/ComfyLtx2EditVideoInput",
"firstLastFrameToVideo": "#/components/schemas/ComfyLtx2FirstLastFrameToVideoInput"
}
}
}
],
"description": "LTX Video v2 generation via ComfyUI backend"
},
"ComfyMageFlow4bCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlow4bImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"4b"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyMageFlow4bEditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlowImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"images",
"model",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 30
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 5
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"images": {
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"model": {
"enum": [
"4b-edit"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"editImage": "#/components/schemas/ComfyMageFlow4bEditImageInput"
}
}
}
]
},
"ComfyMageFlow4bEditImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlow4bEditImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"images",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"images": {
"maxItems": 16,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"4b-edit"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyMageFlow4bEditTurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlowImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"images",
"model",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 4
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"quantity": {
"maximum": 4,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"images": {
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"model": {
"enum": [
"4b-edit-turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"editImage": "#/components/schemas/ComfyMageFlow4bEditTurboImageInput"
}
}
}
]
},
"ComfyMageFlow4bEditTurboImageInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlow4bEditTurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"images",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"images": {
"maxItems": 16,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"4b-edit-turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyMageFlow4bImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlowImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 5
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"enum": [
"4b"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyMageFlow4bCreateImageGenInput"
}
}
}
]
},
"ComfyMageFlow4bTurboCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlow4bTurboImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 512,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"4b-turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyMageFlow4bTurboImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMageFlowImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 4
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"enum": [
"4b-turbo"
],
"type": "string"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyMageFlow4bTurboCreateImageGenInput"
}
}
}
]
},
"ComfyMageFlowImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"cfgScale",
"ecosystem",
"engine",
"model",
"prompt",
"quantity",
"steps"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"steps": {
"type": "integer",
"format": "int32"
},
"cfgScale": {
"type": "number",
"format": "double"
},
"quantity": {
"type": "integer",
"format": "int32"
},
"ecosystem": {
"enum": [
"mageflow"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"4b": "#/components/schemas/ComfyMageFlow4bImageGenInput",
"4b-turbo": "#/components/schemas/ComfyMageFlow4bTurboImageGenInput",
"4b-edit": "#/components/schemas/ComfyMageFlow4bEditImageGenInput",
"4b-edit-turbo": "#/components/schemas/ComfyMageFlow4bEditTurboImageGenInput"
}
}
}
]
},
"ComfyMingDesignCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMingDesignImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 256,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 256,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"design"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ming"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyMingDesignEditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMingDesignImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"height",
"images",
"model",
"operation",
"width"
],
"type": "object",
"properties": {
"images": {
"maxItems": 3,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"resolution": {
"maximum": 2048,
"minimum": 256,
"type": "integer",
"description": "Reference pixel budget as resolution squared, preserving the first image's aspect ratio.",
"format": "int32",
"default": 1024
},
"width": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"height": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"design"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ming"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyMingDesignImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMingImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "createImage"
},
"prompt": {
"maxLength": 20000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 20000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 12
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"design"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ming"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyMingDesignCreateImageGenInput",
"editImage": "#/components/schemas/ComfyMingDesignEditImageGenInput"
}
}
}
]
},
"ComfyMingImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": [
"null",
"string"
],
"default": "design"
},
"ecosystem": {
"enum": [
"ming"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"design": "#/components/schemas/ComfyMingDesignImageGenInput"
}
}
}
]
},
"ComfyMiniMaxH3ControlVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMiniMaxH3VideoGenInput"
},
{
"required": [
"engine",
"operation",
"video"
],
"type": "object",
"properties": {
"video": {
"type": "string",
"format": "uri"
},
"strength": {
"maximum": 10,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"startPercent": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0
},
"endPercent": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"operation": {
"enum": [
"controlVideo"
],
"type": "string"
},
"engine": {
"enum": [
"minimax-h3-comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Video-to-video structure control using a preprocessed map and the MiniMax H3 Fun ControlNet Union model patch."
},
"ComfyMiniMaxH3ImageToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMiniMaxH3VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"firstFrame": {
"type": [
"null",
"string"
],
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"lastFrame": {
"type": [
"null",
"string"
],
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"operation": {
"enum": [
"imageToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"minimax-h3-comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Text-to-video or first/last-frame video using the FL2VA weights."
},
"ComfyMiniMaxH3ReferenceToVideoInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyMiniMaxH3VideoGenInput"
},
{
"required": [
"engine",
"images",
"operation"
],
"type": "object",
"properties": {
"images": {
"maxItems": 9,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"operation": {
"enum": [
"referenceToVideo"
],
"type": "string"
},
"engine": {
"enum": [
"minimax-h3-comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
],
"description": "Reference-image-to-video using the REF2VA weights."
},
"ComfyMiniMaxH3VideoGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/VideoGenInput"
},
{
"required": [
"engine",
"operation"
],
"type": "object",
"properties": {
"operation": {
"type": [
"null",
"string"
],
"default": "imageToVideo"
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int32"
},
"duration": {
"maximum": 15,
"minimum": 4,
"type": "integer",
"format": "int32",
"default": 5
},
"width": {
"maximum": 1344,
"minimum": 32,
"type": "integer",
"format": "int32",
"default": 864
},
"height": {
"maximum": 1344,
"minimum": 32,
"type": "integer",
"format": "int32",
"default": 480
},
"steps": {
"maximum": 60,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"fast": {
"type": "boolean",
"description": "Enables EasyCache with its default configuration.",
"default": false
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"turbo": {
"type": "boolean",
"default": false
},
"engine": {
"enum": [
"minimax-h3-comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"imageToVideo": "#/components/schemas/ComfyMiniMaxH3ImageToVideoInput",
"referenceToVideo": "#/components/schemas/ComfyMiniMaxH3ReferenceToVideoInput",
"controlVideo": "#/components/schemas/ComfyMiniMaxH3ControlVideoInput"
}
}
}
],
"description": "MiniMax H3 generation through the local ComfyUI backend."
},
"ComfyNode": {
"required": [
"classType",
"inputs"
],
"type": "object",
"properties": {
"classType": {
"type": "string"
},
"meta": {
"type": [
"null",
"object"
],
"additionalProperties": {
"type": "string"
}
},
"isChanged": {
"type": [
"null",
"string"
]
},
"inputs": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"maxItems": 2,
"minItems": 2,
"type": "array",
"items": {
"type": "number"
}
}
]
}
}
},
"additionalProperties": false
},
"ComfyNodepackSnapshotInput": {
"required": [
"nodepacks"
],
"type": "object",
"properties": {
"comfyImage": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
],
"description": "The comfy container image to install against, as an `oci:image` AIR\n(e.g. `urn:air:oci:image:ghcr:civitai/civitai-spine-comfy-cloud@v2.7.0`).\nThe captured layer is only valid for this exact image, so it is part of\nthe artifact's identity (hashed into the blob key). Optional: when omitted\n(e.g. a caller with no managed image of its own, like civitai-comfy-nodes\noffload) the handler resolves the configured default/\"latest\" comfy image\n(`ComfyImageOptions.DefaultComfyImage`)."
},
"nodepacks": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
},
"description": "The `comfy:nodepack` AIRs to install and snapshot, e.g.\n`urn:air:comfy:nodepack:comfyregistry:kijai/comfyui-kjnodes@1.4.0`.\nOne snapshot job is produced per pack (per-pack cache granularity)."
},
"minVramGb": {
"type": [
"null",
"integer"
],
"description": "Optional minimum GPU VRAM (GB) the capturing worker must report, gated in\nM:Civitai.Orchestration.Grains.Jobs.ComfyNodepackSnapshotJob.GetWorkerSupport(Civitai.Orchestration.Workers.WorkerRegistration). Mirrors the\nsession's tier so the install happens on representative hardware.",
"format": "int32"
},
"useSageAttention": {
"type": [
"null",
"boolean"
],
"description": "Optional Sage Attention toggle, forwarded to the worker's launch so the\ncaptured environment matches how the consumer runs the image."
}
},
"additionalProperties": false,
"description": "Input for a ComfyNodepackSnapshot step: install one or more ComfyUI custom\nnodepacks on a given comfy image (and hardware tier) and capture the\nresolved install + editor metadata as reusable blobs. Runs on a real worker\nso compiled/arch-specific deps match the fleet the consumer will run on."
},
"ComfyNodepackSnapshotOutput": {
"required": [
"results"
],
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotResult"
}
}
},
"additionalProperties": false,
"description": "Output of a ComfyNodepackSnapshot step: one result per installed pack, each\ncarrying the three captured blobs (install layer, full /object_info, web\nassets). Consumers read these directly from orchestrator blob storage."
},
"ComfyNodepackSnapshotResult": {
"required": [
"layer",
"layerAir",
"nodepack",
"objectInfo",
"web"
],
"type": "object",
"properties": {
"nodepack": {
"type": "string",
"description": "The pack AIR this result is for."
},
"layerAir": {
"type": "string",
"description": "The complete install-layer AIR — `urn:air:comfy:nodepacklayer:…@+`,\nthe (pack, comfy image) pair as a single self-describing resource. Consumers declare THIS on a\ncustomComfy step's `resources` (not the bare pack URN) so the worker resolves the layer through\nthe normal resource pipeline."
},
"layer": {
"$ref": "#/components/schemas/Blob"
},
"objectInfo": {
"$ref": "#/components/schemas/Blob"
},
"web": {
"$ref": "#/components/schemas/Blob"
}
},
"additionalProperties": false
},
"ComfyNodepackSnapshotStep": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStep"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotInput"
},
"output": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotOutput"
},
"$type": {
"enum": [
"comfyNodepackSnapshot"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyNodepackSnapshotStepTemplate": {
"allOf": [
{
"$ref": "#/components/schemas/WorkflowStepTemplate"
},
{
"required": [
"$type",
"input"
],
"type": "object",
"properties": {
"input": {
"$ref": "#/components/schemas/ComfyNodepackSnapshotInput"
},
"$type": {
"enum": [
"comfyNodepackSnapshot"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyOutput": {
"required": [
"blobs"
],
"type": "object",
"properties": {
"blobs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Blob"
},
"description": "Get a list of blobs that got generated by this comfy workflow step."
}
},
"additionalProperties": false
},
"ComfyPolyGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/PolyGenInput"
},
{
"required": [
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"hunyuan3D": "#/components/schemas/Hunyuan3DComfyPolyGenInput",
"trellis2": "#/components/schemas/Trellis2ComfyPolyGenInput"
}
}
}
]
},
"ComfyPonyV7CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyPonyV7ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"ponyV7"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyPonyV7ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 25
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 7
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"ecosystem": {
"enum": [
"ponyV7"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyPonyV7CreateImageGenInput"
}
}
}
]
},
"ComfyQwen20bCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwen20bImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"version": {
"enum": [
"latest",
"2509",
"2512"
],
"type": "string",
"default": "latest"
},
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"20b"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyQwen20bEditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwen20bImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"height",
"images",
"model",
"operation",
"width"
],
"type": "object",
"properties": {
"version": {
"enum": [
"latest",
"2509",
"2511"
],
"type": "string",
"default": "latest"
},
"images": {
"maxItems": 3,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"width": {
"maximum": 2048,
"minimum": 0,
"type": "integer",
"format": "int32",
"readOnly": true
},
"height": {
"maximum": 2048,
"minimum": 0,
"type": "integer",
"format": "int32",
"readOnly": true
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"20b"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyQwen20bImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwenImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 20
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 2.5
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"model": {
"enum": [
"20b"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyQwen20bCreateImageGenInput",
"editImage": "#/components/schemas/ComfyQwen20bEditImageGenInput",
"createVariant": "#/components/schemas/ComfyQwen20bVariantImageGenInput"
}
}
}
]
},
"ComfyQwen20bVariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwen20bImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"height",
"image",
"model",
"operation",
"width"
],
"type": "object",
"properties": {
"version": {
"enum": [
"latest",
"2509",
"2512"
],
"type": "string",
"default": "latest"
},
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"strength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.7
},
"width": {
"maximum": 2048,
"minimum": 0,
"type": "integer",
"format": "int32",
"readOnly": true
},
"height": {
"maximum": 2048,
"minimum": 0,
"type": "integer",
"format": "int32",
"readOnly": true
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"model": {
"enum": [
"20b"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyQwen21CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwen21ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"model": {
"enum": [
"2.1"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyQwen21EditImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwen21ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"height",
"images",
"model",
"operation",
"width"
],
"type": "object",
"properties": {
"images": {
"maxItems": 10,
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
}
},
"resolution": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"description": "Reference pixel budget as resolution squared; preserves each image's aspect ratio.",
"format": "int32",
"default": 1024
},
"width": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"height": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"operation": {
"enum": [
"editImage"
],
"type": "string"
},
"model": {
"enum": [
"2.1"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfyQwen21ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyQwenImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 25
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 1
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"diffusionModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"model": {
"enum": [
"2.1"
],
"type": "string"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfyQwen21CreateImageGenInput",
"editImage": "#/components/schemas/ComfyQwen21EditImageGenInput"
}
}
}
]
},
"ComfyQwenImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model"
],
"type": "object",
"properties": {
"model": {
"type": [
"null",
"string"
],
"default": "20b"
},
"ecosystem": {
"enum": [
"qwen"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "model",
"mapping": {
"20b": "#/components/schemas/ComfyQwen20bImageGenInput",
"2.1": "#/components/schemas/ComfyQwen21ImageGenInput"
}
}
}
]
},
"ComfySampler": {
"enum": [
"euler",
"euler_ancestral",
"euler_cfg_pp",
"euler_ancestral_cfg_pp",
"heun",
"heunpp2",
"dpm_2",
"dpm_2_ancestral",
"lms",
"dpm_fast",
"dpm_adaptive",
"dpmpp_2s_ancestral",
"dpmpp_2s_ancestral_cfg_pp",
"dpmpp_sde",
"dpmpp_sde_gpu",
"dpmpp_2m",
"dpmpp_2m_cfg_pp",
"dpmpp_2m_sde",
"dpmpp_2m_sde_gpu",
"dpmpp_3m_sde",
"dpmpp_3m_sde_gpu",
"ddpm",
"lcm",
"ipndm",
"ipndm_v",
"deis",
"ddim",
"uni_pc",
"uni_pc_bh2",
"res_multistep",
"er_sde"
],
"type": "string"
},
"ComfyScheduler": {
"enum": [
"normal",
"karras",
"exponential",
"sgm_uniform",
"simple",
"ddim_uniform",
"beta"
],
"type": "string"
},
"ComfySd1CreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfySd1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 1024,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 512
},
"height": {
"maximum": 1024,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 512
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"sd1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfySd1ImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 30
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 7
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"vaeModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"embeddings": {
"type": "array",
"items": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
}
},
"clipSkip": {
"type": "integer",
"format": "int32",
"default": 2
},
"controlNets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ImageJobControlNet"
}
},
"ecosystem": {
"enum": [
"sd1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "operation",
"mapping": {
"createImage": "#/components/schemas/ComfySd1CreateImageGenInput",
"createVariant": "#/components/schemas/ComfySd1VariantImageGenInput"
}
}
}
]
},
"ComfySd1VariantImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfySd1ImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"image",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 1024,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 512
},
"height": {
"maximum": 1024,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 512
},
"image": {
"type": "string",
"description": "Either A URL, A DataURL or a Base64 string",
"format": "source-image"
},
"denoiseStrength": {
"maximum": 1,
"minimum": 0,
"type": "number",
"format": "double",
"default": 0.75
},
"operation": {
"enum": [
"createVariant"
],
"type": "string"
},
"ecosystem": {
"enum": [
"sd1"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfySdxlCreateImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfySdxlImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"operation"
],
"type": "object",
"properties": {
"width": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"height": {
"maximum": 2048,
"minimum": 64,
"type": "integer",
"format": "int32",
"default": 1024
},
"operation": {
"enum": [
"createImage"
],
"type": "string"
},
"ecosystem": {
"enum": [
"sdxl"
],
"type": "string"
},
"engine": {
"enum": [
"comfy"
],
"type": "string"
}
},
"additionalProperties": false
}
]
},
"ComfySdxlImageGenInput": {
"allOf": [
{
"$ref": "#/components/schemas/ComfyImageGenInput"
},
{
"required": [
"ecosystem",
"engine",
"model",
"operation",
"prompt"
],
"type": "object",
"properties": {
"operation": {
"type": "string"
},
"prompt": {
"maxLength": 10000,
"minLength": 0,
"type": "string"
},
"negativePrompt": {
"maxLength": 10000,
"minLength": 0,
"type": [
"null",
"string"
]
},
"sampler": {
"$ref": "#/components/schemas/ComfySampler"
},
"scheduler": {
"$ref": "#/components/schemas/ComfyScheduler"
},
"steps": {
"maximum": 150,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 30
},
"cfgScale": {
"maximum": 30,
"minimum": 0,
"type": "number",
"format": "double",
"default": 7
},
"seed": {
"type": [
"null",
"integer"
],
"format": "int64"
},
"quantity": {
"maximum": 12,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
},
"model": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": "string"
},
"vaeModel": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?[a-zA-Z0-9_\\-\\/.=,%+:]+))?(?:\\.(?[a-zA-Z0-9_\\-]+))?$",
"type": [
"null",
"string"
]
},
"loras": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double"
}
},
"embeddings": {
"type": "array",
"items": {
"pattern": "^(?:urn:)?(?:air:)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?:(?[a-zA-Z0-9_\\-\\/]+):)?(?[a-zA-Z0-9_\\-\\/]+):(?[a-zA-Z0-9_\\-\\/\\.]+)(?:@(?