{ "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_\\-\\/\\.]+)(?:@(?[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": [ "sdxl" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/ComfySdxlCreateImageGenInput", "createVariant": "#/components/schemas/ComfySdxlVariantImageGenInput" } } } ] }, "ComfySdxlVariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfySdxlImageGenInput" }, { "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": [ "sdxl" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "ComfyStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ComfyInput" }, "output": { "$ref": "#/components/schemas/ComfyOutput" }, "$type": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ], "description": "Comfy workflows" }, "ComfyStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ComfyInput" }, "$type": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ], "description": "Comfy workflows" }, "ComfyTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/TrainingInput" }, { "required": [ "defaultSteps", "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 4 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 }, "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 }, "resolution": { "maximum": 1024, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "noHalfVae": { "type": "boolean", "default": false }, "minSnrGamma": { "maximum": 20, "minimum": 0, "type": [ "null", "integer" ], "description": "Min-SNR gamma passed through to compatible training backends.", "format": "int32" }, "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 checkpoint to train upon. The model ecosystem drives Comfy training behavior.", "default": "urn:air:sdxl:checkpoint:civitai:101055@128078" }, "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": "Split diffusion model used by native Comfy training nodes. When omitted, checkpoint-backed families load Civitai.Orchestration.Grains.Workflows.Steps.Training.Comfy.ComfyTrainingInput.Model." }, "textEncoderModel": { "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": "Split text encoder used by native Comfy training nodes." }, "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": "Split VAE used by native Comfy training nodes." }, "trainingDtype": { "type": [ "null", "string" ] }, "loraDtype": { "type": [ "null", "string" ] }, "quantizedBackward": { "type": [ "null", "boolean" ] }, "bypassMode": { "type": [ "null", "boolean" ] }, "gradAccumulationSteps": { "type": [ "null", "integer" ], "format": "int32" }, "lossFunction": { "type": [ "null", "string" ] }, "algorithm": { "type": [ "null", "string" ] }, "checkpointDepth": { "type": [ "null", "integer" ], "format": "int32" }, "offloading": { "type": [ "null", "boolean" ] }, "clipType": { "type": [ "null", "string" ] }, "unetWeightDtype": { "type": [ "null", "string" ] }, "modelSamplingShift": { "type": [ "null", "number" ], "format": "double" }, "datasetCaching": { "type": [ "null", "boolean" ] }, "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for model-family-driven Comfy-backed LoRA training." }, "ComfyZImageBaseCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyZImageBaseImageGenInput" }, { "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": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "ComfyZImageBaseImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyZImageImageGenInput" }, { "required": [ "ecosystem", "engine", "model", "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": 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" } }, "controlNets": { "type": "array", "items": { "$ref": "#/components/schemas/ImageJobControlNet" } }, "model": { "enum": [ "base" ], "type": "string" }, "ecosystem": { "enum": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/ComfyZImageBaseCreateImageGenInput" } } } ] }, "ComfyZImageImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyImageGenInput" }, { "required": [ "ecosystem", "engine", "model" ], "type": "object", "properties": { "model": { "type": [ "null", "string" ], "default": "turbo" }, "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": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "turbo": "#/components/schemas/ComfyZImageTurboImageGenInput", "base": "#/components/schemas/ComfyZImageBaseImageGenInput" } } } ] }, "ComfyZImageTurboCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyZImageTurboImageGenInput" }, { "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": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "ComfyZImageTurboImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyZImageImageGenInput" }, { "required": [ "ecosystem", "engine", "model", "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": 9 }, "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" } }, "controlNets": { "type": "array", "items": { "$ref": "#/components/schemas/ImageJobControlNet" } }, "model": { "enum": [ "turbo" ], "type": "string" }, "ecosystem": { "enum": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/ComfyZImageTurboCreateImageGenInput" } } } ] }, "ComposeMediaElementInput": { "type": "object", "properties": { "url": { "type": [ "null", "string" ], "description": "The source media URL. Either a direct `\"https://...\"` URL or a `$ref` to a prior\nstep's `Output.AudioBlob.Url` or `Output.VideoBlob.Url`.", "format": "uri" }, "at": { "type": [ "null", "number" ], "description": "Absolute start time on the output timeline, in seconds. When set, this element is anchored\nat this position and excluded from the implicit sequencing chain — useful for a music bed,\nor for placing an audio track at a known time over a video. When unset, the element starts\nafter the previous non-anchored element ends, nudged by Civitai.Orchestration.Grains.Workflows.Steps.ComposeMedia.ComposeMediaElementInput.Offset.", "format": "float" }, "offset": { "type": "number", "description": "Seconds to nudge this element relative to its implicit \"after-previous\" position. Negative\nvalues produce overlap/interruption; positive values produce a gap. Ignored when\nCivitai.Orchestration.Grains.Workflows.Steps.ComposeMedia.ComposeMediaElementInput.At is set.", "format": "float", "default": 0 }, "layout": { "$ref": "#/components/schemas/MediaLayout" }, "transformers": { "type": "array", "items": { "$ref": "#/components/schemas/MediaTransformer" }, "description": "Ordered per-element transformers (fades, volume, ...) applied in array order." } }, "additionalProperties": false, "description": "A single audio or video element participating in a composition." }, "ComposeMediaInput": { "required": [ "elements" ], "type": "object", "properties": { "elements": { "type": "array", "items": { "$ref": "#/components/schemas/ComposeMediaElementInput" }, "description": "The elements to compose, in implicit sequencing order. Overlapping audio intervals are\nmixed; overlapping video is layered by canvas `zOrder` then array order. To stitch\nvideos end-to-end, list them in order with no `at`/`offset`." }, "canvas": { "$ref": "#/components/schemas/MediaCanvas" }, "output": { "$ref": "#/components/schemas/ComposeMediaOutputSpec" }, "normalize": { "type": "boolean", "description": "If true, divide the audio mix by the number of overlapping elements to avoid clipping.\nDefaults to false to preserve per-element volume levels.", "default": false } }, "additionalProperties": false, "description": "Input for the ComposeMedia workflow step." }, "ComposeMediaOutput": { "required": [ "elements", "type" ], "type": "object", "properties": { "type": { "type": "string" }, "elements": { "type": "array", "items": { "$ref": "#/components/schemas/ComposeMediaResolvedElement" }, "description": "Per-element resolved timing in input order — useful for rendering subtitles, speaker\nhighlights, or chapter markers without re-probing every source clip." } }, "additionalProperties": false, "description": "Output from the ComposeMedia workflow step. Discriminated on `type`: an\nCivitai.Orchestration.Grains.Workflows.Steps.ComposeMedia.AudioComposeMediaOutput (`\"audio\"`) for an audio mixdown, or a\nCivitai.Orchestration.Grains.Workflows.Steps.ComposeMedia.VideoComposeMediaOutput (`\"video\"`) for a video composition.", "discriminator": { "propertyName": "type", "mapping": { "audio": "#/components/schemas/AudioComposeMediaOutput", "video": "#/components/schemas/VideoComposeMediaOutput" } } }, "ComposeMediaOutputSpec": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/MediaOutputType" }, "container": { "$ref": "#/components/schemas/MediaContainer" } }, "additionalProperties": false, "description": "Describes the desired output of a composition. Both fields are optional — leave\nCivitai.Orchestration.Grains.Workflows.Steps.ComposeMedia.ComposeMediaOutputSpec.Type unset to derive the kind from the elements." }, "ComposeMediaResolvedElement": { "required": [ "duration", "startSeconds" ], "type": "object", "properties": { "startSeconds": { "type": "number", "description": "Where this element starts on the output timeline, in seconds.", "format": "float" }, "duration": { "type": "number", "description": "Probed duration of the source clip, in seconds.", "format": "float" } }, "additionalProperties": false, "description": "Resolved timing for a single element in the composed output." }, "ComposeMediaStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ComposeMediaInput" }, "output": { "$ref": "#/components/schemas/ComposeMediaOutput" }, "$type": { "enum": [ "composeMedia" ], "type": "string" } }, "additionalProperties": false } ], "description": "Compose Media" }, "ComposeMediaStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ComposeMediaInput" }, "$type": { "enum": [ "composeMedia" ], "type": "string" } }, "additionalProperties": false } ], "description": "Compose Media" }, "ConsumerBlobPresignResponse": { "required": [ "expiresAt", "uploadUrl" ], "type": "object", "properties": { "uploadUrl": { "type": "string", "format": "uri" }, "expiresAt": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "ContainerFormat": { "enum": [ "mp4", "webM" ], "type": "string" }, "ConvertImageInput": { "required": [ "image", "output" ], "type": "object", "properties": { "image": { "type": "string", "description": "The source image to convert.", "format": "source-image" }, "transforms": { "type": "array", "items": { "$ref": "#/components/schemas/ImageTransform" }, "description": "Optional list of transforms to apply to the image before conversion.\nTransforms are applied in order." }, "output": { "$ref": "#/components/schemas/ImageOutputFormat" }, "public": { "type": [ "null", "boolean" ], "description": "Stores the result in a bucket that serves it directly, so the returned url is stable and\nunsigned rather than presigned — a CDN can cache it, and reading it never touches the\norchestrator. Restricted to privileged callers: nothing gates a read of that url, so no NSFW\nlevel, blocked reason or mature-content restriction applies to it, and a block decided after\nthe fact cannot take it back." } }, "additionalProperties": false, "description": "Input configuration for the ConvertImage workflow step." }, "ConvertImageOutput": { "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/ImageBlob" } }, "additionalProperties": false, "description": "Output from the ConvertImage workflow step." }, "ConvertImageStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ConvertImageInput" }, "output": { "$ref": "#/components/schemas/ConvertImageOutput" }, "$type": { "enum": [ "convertImage" ], "type": "string" } }, "additionalProperties": false } ], "description": "A workflow step that converts images to different formats and applies optional transforms." }, "ConvertImageStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ConvertImageInput" }, "$type": { "enum": [ "convertImage" ], "type": "string" } }, "additionalProperties": false } ], "description": "A workflow step that converts images to different formats and applies optional transforms." }, "CursedArrayOfStringAndResourceInfo": { "required": [ "items", "next" ], "type": "object", "properties": { "next": { "type": [ "null", "string" ] }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/ResourceInfo" } } }, "additionalProperties": false }, "CursedArrayOfTelemetryCursorAndWorkflow": { "required": [ "items", "next" ], "type": "object", "properties": { "next": { "type": "string" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow" } } }, "additionalProperties": false }, "CustomComfyInput": { "required": [ "resources", "trace", "workflow" ], "type": "object", "properties": { "resources": { "minItems": 1, "type": "array", "items": { "type": "string" }, "description": "All resources the workflow needs, declared explicitly as AIR URNs.\nIncludes checkpoint/lora/vae models AND `comfy:nodepack` URNs\nfor runtime-installable custom nodes\n(e.g. `urn:air:comfy:nodepack:comfyregistry:kijai/comfyui-kjnodes@1.4.0`).\nAnything the workflow references that isn't listed here will fail at\nload time inside ComfyUI." }, "workflow": { "description": "The raw ComfyUI workflow graph. Forwarded opaquely to the worker;\nthe orchestrator does not inspect or validate node contents." }, "trace": { "$ref": "#/components/schemas/TraceMode" }, "sessionId": { "type": [ "null", "string" ], "description": "Optional session identifier. When set, the scheduler prefers a\nworker that already holds this session's ComfyUI container (P5\nsession affinity). Null = no preference, treated as a fresh session." }, "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": "Optional custom comfy container image, declared as an\n`urn:air:oci:image::@` AIR\n(e.g. `urn:air:oci:image:ghcr:civitai/civitai-spine-comfy@v2.5.5`).\nWhen set, the worker pulls and runs this image instead of its default\ncomfy image. Null = worker default." }, "minVramGb": { "type": [ "null", "integer" ], "description": "Optional minimum GPU VRAM (in GB) the claiming worker must have. The\nscheduler only offers the job to workers whose reported host VRAM\n(`WorkerCapabilities.HostResources.MaxVramGb`) is at least this.\nNull = no requirement (any comfy-capable worker). Lets a session\nrequest a higher-VRAM tier (e.g. 48) for heavy workflows.", "format": "int32" }, "useSageAttention": { "type": [ "null", "boolean" ], "description": "Optional toggle for ComfyUI's Sage Attention. When true, the worker\nlaunches ComfyUI with `--use-sage-attention`. Null/false = the\nimage's default (off for the cloud/slim images). The SageAttention\nwheel is baked into the comfy images; this only flips the flag." }, "minimumDurationSeconds": { "type": [ "null", "integer" ], "description": "Optional submit-time affordability gate (seconds). When set, the workflow is rejected at\nsubmit (→ 400) unless the user can afford at least this many seconds of generation — the\ncheck lives in `CustomComfyHandler.InitializeAsync`. The consumer (comfy-cloud)\ndefaults it to e.g. 300 and, when rejected, warns the user how much generation they have\nleft; choosing \"run anyway\" resubmits with this omitted to skip the gate. The live-balance\nguard still cancels mid-run if the balance later goes negative. Null = no gate.", "format": "int32" } }, "additionalProperties": false, "description": "Input for a CustomComfy step." }, "CustomComfyOutput": { "required": [ "blobs", "tempBlobs" ], "type": "object", "properties": { "blobs": { "type": "array", "items": { "$ref": "#/components/schemas/Blob" } }, "traceUrl": { "type": [ "null", "string" ], "description": "Consumer URL for the recorded ComfyUI `/ws` trace (plain-text\n`.txt` log or framed binary `.bin` recording, per the requested\n`trace` mode), tailable live while the job runs. Null when tracing\nwasn't requested.", "format": "uri" }, "tempBlobs": { "type": "array", "items": { "$ref": "#/components/schemas/Blob" } }, "usage": { "$ref": "#/components/schemas/CustomComfyUsage" } }, "additionalProperties": false, "description": "Output from a CustomComfy step." }, "CustomComfyStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/CustomComfyInput" }, "output": { "$ref": "#/components/schemas/CustomComfyOutput" }, "$type": { "enum": [ "customComfy" ], "type": "string" } }, "additionalProperties": false } ], "description": "CustomComfy" }, "CustomComfyStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/CustomComfyInput" }, "$type": { "enum": [ "customComfy" ], "type": "string" } }, "additionalProperties": false } ], "description": "CustomComfy" }, "CustomComfyUsage": { "required": [ "buzzPerSecond", "computedAt", "estimatedCost", "runtimeSeconds" ], "type": "object", "properties": { "buzzPerSecond": { "type": "number", "format": "double" }, "runtimeSeconds": { "type": "number", "format": "double" }, "estimatedCost": { "type": "number", "description": "Estimate as of Civitai.Orchestration.Grains.Workflows.Steps.CustomComfy.CustomComfyUsage.ComputedAt: `Max(1, RuntimeSeconds × BuzzPerSecond)` (mirrors the billing floor).", "format": "double" }, "startedAt": { "type": [ "null", "string" ], "description": "When GPU runtime began accruing, or null before the worker reports. Distinct\nfrom `WorkflowStep.StartedAt`, which is the earlier (unbilled) claim time.", "format": "date-time" }, "computedAt": { "type": "string", "format": "date-time" } }, "additionalProperties": false }, "CustomTextToSpeechInput": { "allOf": [ { "$ref": "#/components/schemas/TextToSpeechInput" }, { "required": [ "engine", "xVectorOnlyMode" ], "type": "object", "properties": { "refAudioUrl": { "type": [ "null", "string" ], "description": "Reference audio URL for Base voice-cloning mode.\nAccepts AIR URNs (existing resources) or HTTP(S) URLs.", "format": "uri" }, "refText": { "type": [ "null", "string" ], "description": "Transcript of the reference audio.\nRequired for Base mode unless XVectorOnlyMode is true." }, "xVectorOnlyMode": { "type": "boolean", "description": "If true, uses only speaker embedding for Base mode (ref_text not required)." }, "speaker": { "enum": [ "aiden", "dylan", "eric", "ono_anna", "ryan", "serena", "sohee", "uncle_fu", "vivian" ], "type": [ "null", "string" ], "description": "Built-in speaker name for CustomVoice mode." }, "instruct": { "type": [ "null", "string" ], "description": "Optional style instruction for CustomVoice mode." }, "maxNewTokens": { "type": [ "null", "integer" ], "description": "Optional generation cap for max tokens.", "format": "int32" }, "engine": { "enum": [ "custom" ], "type": "string" } }, "additionalProperties": false } ] }, "DensePoseColormap": { "enum": [ "Viridis (MagicAnimate)", "Parula (CivitAI)" ], "type": "string" }, "DensePoseModel": { "enum": [ "densepose_r50_fpn_dl.torchscript", "densepose_r101_fpn_dl.torchscript" ], "type": "string" }, "DepthAnythingCheckpoint": { "enum": [ "depth_anything_vitl14.pth", "depth_anything_vitb14.pth", "depth_anything_vits14.pth" ], "type": "string" }, "DepthAnythingV2Checkpoint": { "enum": [ "depth_anything_v2_vitg.pth", "depth_anything_v2_vitl.pth", "depth_anything_v2_vitb.pth", "depth_anything_v2_vits.pth" ], "type": "string" }, "DwPoseBboxDetector": { "enum": [ "yolox_l.onnx", "yolox_l.torchscript.pt", "yolo_nas_l_fp16.onnx", "yolo_nas_m_fp16.onnx", "yolo_nas_s_fp16.onnx" ], "type": "string" }, "DwPoseEstimator": { "enum": [ "dw-ll_ucoco_384_bs5.torchscript.pt", "dw-ll_ucoco_384.onnx", "dw-ll_ucoco.onnx" ], "type": "string" }, "EchoInput": { "required": [ "message" ], "type": "object", "properties": { "message": { "type": "string", "description": "The message to be returned in the output." } }, "additionalProperties": false, "description": "Represents the input information needed for the Echo workflow step." }, "EchoOutput": { "required": [ "message" ], "type": "object", "properties": { "message": { "type": "string", "description": "The message to be returned." } }, "additionalProperties": false, "description": "Represents the output information returned from the Echo workflow step." }, "EchoStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/EchoInput" }, "output": { "$ref": "#/components/schemas/EchoOutput" }, "$type": { "enum": [ "echo" ], "type": "string" } }, "additionalProperties": false } ], "description": "Echo" }, "EchoStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/EchoInput" }, "$type": { "enum": [ "echo" ], "type": "string" } }, "additionalProperties": false } ], "description": "Echo" }, "EpochResult": { "required": [ "blobName", "blobUrl", "epochNumber", "sampleImages" ], "type": "object", "properties": { "epochNumber": { "type": "integer", "format": "int32" }, "blobName": { "type": "string", "description": "Get the name of the generated epoch assets" }, "blobSize": { "type": [ "null", "integer" ], "description": "Get the total size in bytes of the asset", "format": "int64" }, "sampleImages": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "Get a list of the names of the blobs that represent sample images" }, "blobUrl": { "type": "string", "description": "A presigned url that points to the epoch file", "format": "uri" } }, "additionalProperties": false, "description": "An epock result." }, "ErnieAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "maxBatchSize" ], "type": "object", "properties": { "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "ernie" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" }, "batchSize": { "maximum": 2, "minimum": 1, "type": [ "null", "integer" ], "description": "Training batch size. Defaults to 1; raise it up to 2 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 } }, "additionalProperties": false } ], "description": "AI Toolkit training for ERNIE-Image models" }, "FaceDetection": { "required": [ "boundingBox" ], "type": "object", "properties": { "boundingBox": { "$ref": "#/components/schemas/BoundingBox" }, "landmarks": { "type": [ "null", "object" ], "additionalProperties": { "$ref": "#/components/schemas/ValueTupleOfDoubleAndDouble" }, "description": "Facial landmarks (e.g., eyes, nose, mouth positions).\nDictionary keys are landmark names, values are (x, y) coordinates." }, "embedding": { "type": [ "null", "array" ], "items": { "type": "number", "format": "double" }, "description": "Face embedding vector for similarity comparison." } }, "additionalProperties": false, "description": "Represents a single face detection with embeddings and landmarks." }, "FaceDetectionInfo": { "required": [ "boundingBox", "hasEmbedding" ], "type": "object", "properties": { "boundingBox": { "type": "array", "items": { "type": "number", "format": "double" }, "description": "Bounding box coordinates [x1, y1, x2, y2]" }, "landmarks": { "type": [ "null", "object" ], "additionalProperties": { "type": "array", "items": { "type": "number", "format": "double" } }, "description": "Facial landmarks (e.g., eyes, nose, mouth positions)" }, "hasEmbedding": { "type": "boolean", "description": "Whether this face has an embedding (for similarity comparison)" } }, "additionalProperties": false, "description": "Information about a detected face in an image" }, "FaceRecognitionResult": { "required": [ "faces" ], "type": "object", "properties": { "faces": { "type": "array", "items": { "$ref": "#/components/schemas/FaceDetection" }, "description": "Array of detected faces with embeddings and landmarks." }, "similarityMatrix": { "type": [ "null", "array" ], "items": { "type": "array", "items": { "type": "number", "format": "double" } }, "description": "Pairwise cosine similarity matrix between detected faces.\nMatrix[i][j] represents similarity between face i and face j." } }, "additionalProperties": false, "description": "Represents face recognition results for media content." }, "FadeInTransformer": { "allOf": [ { "$ref": "#/components/schemas/MediaTransformer" }, { "required": [ "durationMs", "type" ], "type": "object", "properties": { "durationMs": { "type": "integer", "description": "Fade-in duration in milliseconds.", "format": "int32" }, "type": { "enum": [ "fadeIn" ], "type": "string" } }, "additionalProperties": false } ], "description": "Linear fade from silence (audio) and/or black (video) at the head of the element." }, "FadeOutTransformer": { "allOf": [ { "$ref": "#/components/schemas/MediaTransformer" }, { "required": [ "durationMs", "type" ], "type": "object", "properties": { "durationMs": { "type": "integer", "description": "Fade-out duration in milliseconds.", "format": "int32" }, "type": { "enum": [ "fadeOut" ], "type": "string" } }, "additionalProperties": false } ], "description": "Linear fade to silence (audio) and/or black (video) at the tail of the element." }, "FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "model": { "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "qwen2": "#/components/schemas/Qwen2FalImageGenInput", "krea2": "#/components/schemas/Krea2FalImageGenInput", "maiImage": "#/components/schemas/MaiImageFalImageGenInput", "reve": "#/components/schemas/ReveFalImageGenInput", "museImage": "#/components/schemas/MuseImageFalImageGenInput", "ideogram45": "#/components/schemas/Ideogram45FalImageGenInput", "flux3": "#/components/schemas/Flux3FalImageGenInput" } } } ] }, "FalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/PolyGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "model": { "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "meshy": "#/components/schemas/MeshyFalPolyGenInput", "tripo": "#/components/schemas/TripoFalPolyGenInput" } } } ] }, "FileFormat": { "enum": [ "unknown", "safeTensor", "pickleTensor", "diffusers", "coreML", "onnx", "tar" ], "type": "string" }, "Flux1AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "modelVariant", "storageBuzzPerEpoch" ], "type": "object", "properties": { "modelVariant": { "type": "string" }, "storageBuzzPerEpoch": { "type": "number", "format": "double", "readOnly": true }, "ecosystem": { "enum": [ "flux1" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "modelVariant", "mapping": { "dev": "#/components/schemas/Flux1DevAIToolkitTrainingInput", "schnell": "#/components/schemas/Flux1SchnellAIToolkitTrainingInput" } } } ], "description": "AI Toolkit training for Flux.1 models" }, "Flux1DevAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "modelVariant" ], "type": "object", "properties": { "modelVariant": { "enum": [ "dev" ], "type": "string" }, "ecosystem": { "enum": [ "flux1" ], "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 Flux.1 Dev models" }, "Flux1KontextDevImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1KontextImageGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "model": { "enum": [ "dev" ], "type": "string" }, "engine": { "enum": [ "flux1-kontext" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux1KontextImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "model": { "type": "string", "readOnly": true }, "prompt": { "maxLength": 1000, "minLength": 0, "type": "string" }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "aspectRatio": { "enum": [ "21:9", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16", "9:21" ], "type": "string", "default": "1:1" }, "guidanceScale": { "maximum": 20, "minimum": 1, "type": "number", "format": "double", "default": 3.5 }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "engine": { "enum": [ "flux1-kontext" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "pro": "#/components/schemas/Flux1KontextProImageGenInput", "max": "#/components/schemas/Flux1KontextMaxImageGenInput", "dev": "#/components/schemas/Flux1KontextDevImageGenInput" } } } ] }, "Flux1KontextMaxImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1KontextImageGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "model": { "enum": [ "max" ], "type": "string" }, "engine": { "enum": [ "flux1-kontext" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux1KontextProImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1KontextImageGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "model": { "enum": [ "pro" ], "type": "string" }, "engine": { "enum": [ "flux1-kontext" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux1ProFamilyImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "model": { "type": "string" }, "prompt": { "maxLength": 10000, "minLength": 0, "type": "string" }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "engine": { "enum": [ "flux1-pro" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "pro": "#/components/schemas/Flux1ProImageGenInput", "ultra": "#/components/schemas/Flux1ProUltraImageGenInput" } } } ] }, "Flux1ProImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1ProFamilyImageGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "width": { "maximum": 1440, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "height": { "maximum": 1440, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "model": { "enum": [ "pro" ], "type": "string" }, "engine": { "enum": [ "flux1-pro" ], "type": "string" } }, "additionalProperties": false } ], "description": "FLUX1.1 [pro]" }, "Flux1ProUltraImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1ProFamilyImageGenInput" }, { "required": [ "engine", "model" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "9:21" ], "type": "string", "default": "1:1" }, "raw": { "type": "boolean", "description": "Generates less processed, more natural-looking images.", "default": false }, "model": { "enum": [ "ultra" ], "type": "string" }, "engine": { "enum": [ "flux1-pro" ], "type": "string" } }, "additionalProperties": false } ], "description": "FLUX1.1 [pro] Ultra" }, "Flux1SchnellAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "modelVariant" ], "type": "object", "properties": { "modelVariant": { "enum": [ "schnell" ], "type": "string" }, "ecosystem": { "enum": [ "flux1" ], "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 Flux.1 Schnell models" }, "Flux1SdCppCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1SdCppImageGenInput" }, { "required": [ "ecosystem", "engine", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "ecosystem": { "enum": [ "flux1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux1SdCppEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1SdCppImageGenInput" }, { "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": [ "flux1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux1SdCppImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "required": [ "clipLModel", "diffuserModel", "ecosystem", "engine", "operation", "prompt", "t5XXLModel", "vaeModel" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 1000, "minLength": 0, "type": "string" }, "width": { "maximum": 1216, "minimum": 832, "type": "integer", "format": "int32", "default": 1024 }, "height": { "maximum": 1216, "minimum": 832, "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": 3.5 }, "steps": { "maximum": 50, "minimum": 4, "type": "integer", "format": "int32", "default": 28 }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "negativePrompt": { "type": [ "null", "string" ] }, "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" }, "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" }, "clipLModel": { "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" }, "t5XXLModel": { "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": [ "flux1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux1SdCppCreateImageInput", "editImage": "#/components/schemas/Flux1SdCppEditImageInput", "createVariant": "#/components/schemas/Flux1SdCppVariantImageGenInput" } } } ] }, "Flux1SdCppVariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux1SdCppImageGenInput" }, { "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": [ "flux1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2DevCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2DevImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "dev" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2DevEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2DevImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "images": { "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": [ "dev" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2DevEditImageResourceTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, { "required": [ "engine" ], "type": "object", "properties": { "steps": { "maximum": 10000, "minimum": 100, "type": "integer", "description": "Number of training steps. Must be in increments of 100.", "format": "int32", "default": 1000 }, "learningRate": { "type": "number", "description": "Learning rate for training.", "format": "double", "default": 0.00005 }, "defaultCaption": { "type": [ "null", "string" ], "description": "Default caption to use if caption files are missing from training data." }, "referenceImageCount": { "maximum": 4, "minimum": 1, "type": "integer", "description": "Number of reference images per training pair (1-4).\nAffects cost calculation via reference multiplier.", "format": "int32", "default": 1 }, "engine": { "enum": [ "flux2-dev-edit" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for Flux 2 Dev image editing LoRA training via FAL." }, "Flux2DevImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "guidanceScale": { "maximum": 20, "minimum": 0, "type": "number", "format": "double", "default": 2.5 }, "numInferenceSteps": { "maximum": 50, "minimum": 4, "type": "integer", "format": "int32", "default": 28 }, "loras": { "type": "array", "items": { "$ref": "#/components/schemas/ImageGenInputLora" } }, "model": { "enum": [ "dev" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2DevCreateImageInput", "editImage": "#/components/schemas/Flux2DevEditImageInput" } } } ] }, "Flux2DevImageResourceTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, { "required": [ "engine" ], "type": "object", "properties": { "steps": { "maximum": 10000, "minimum": 100, "type": "integer", "description": "Number of training steps. Must be in increments of 100.", "format": "int32", "default": 1000 }, "learningRate": { "type": "number", "description": "Learning rate for training.", "format": "double", "default": 0.00005 }, "defaultCaption": { "type": [ "null", "string" ], "description": "Default caption to use if caption files are missing from training data." }, "engine": { "enum": [ "flux2-dev" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for Flux 2 Dev text-to-image LoRA training via FAL." }, "Flux2DevSdCppCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2DevSdCppImageGenInput" }, { "required": [ "ecosystem", "engine", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "ecosystem": { "enum": [ "flux2Dev" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2DevSdCppEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2DevSdCppImageGenInput" }, { "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": [ "flux2Dev" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2DevSdCppImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "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 }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "negativePrompt": { "type": [ "null", "string" ] }, "loras": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } }, "ecosystem": { "enum": [ "flux2Dev" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2DevSdCppCreateImageInput", "editImage": "#/components/schemas/Flux2DevSdCppEditImageInput", "createVariant": "#/components/schemas/Flux2DevSdCppVariantImageGenInput" } } } ] }, "Flux2DevSdCppVariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2DevSdCppImageGenInput" }, { "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2FlexCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2FlexImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "flex" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2FlexEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2FlexImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "images": { "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": [ "flex" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2FlexImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "guidanceScale": { "maximum": 100, "minimum": 1.5, "type": "number", "format": "double", "default": 3.5 }, "numInferenceSteps": { "maximum": 50, "minimum": 2, "type": "integer", "format": "int32", "default": 28 }, "model": { "enum": [ "flex" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2FlexCreateImageInput", "editImage": "#/components/schemas/Flux2FlexEditImageInput" } } } ] }, "Flux2ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "model": { "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 }, "enablePromptExpansion": { "type": "boolean", "default": false }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "dev": "#/components/schemas/Flux2DevImageGenInput", "flex": "#/components/schemas/Flux2FlexImageGenInput", "pro": "#/components/schemas/Flux2ProImageGenInput", "max": "#/components/schemas/Flux2MaxImageGenInput", "klein": "#/components/schemas/Flux2KleinImageGenInput" } } } ] }, "Flux2Klein4bAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinAIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "maxBatchSize", "modelVariant" ], "type": "object", "properties": { "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "modelVariant": { "enum": [ "4b" ], "type": "string" }, "ecosystem": { "enum": [ "flux2klein" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" }, "batchSize": { "maximum": 2, "minimum": 1, "type": [ "null", "integer" ], "description": "Training batch size. Defaults to 1; raise it up to 2 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 } }, "additionalProperties": false } ], "description": "AI Toolkit training for Flux2 Klein 4b-base models" }, "Flux2Klein9bAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinAIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "modelVariant" ], "type": "object", "properties": { "modelVariant": { "enum": [ "9b" ], "type": "string" }, "ecosystem": { "enum": [ "flux2klein" ], "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 Flux2 Klein 9b-base models" }, "Flux2KleinAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "modelVariant" ], "type": "object", "properties": { "modelVariant": { "type": "string" }, "isEditTraining": { "type": "boolean", "description": "Whether this is image-edit training (uses control paths for reference images).\nWhen true, the training data zip should contain subfolders: main/, control_1/, control_2/, control_3/.", "default": false }, "ecosystem": { "enum": [ "flux2klein" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "modelVariant", "mapping": { "4b": "#/components/schemas/Flux2Klein4bAIToolkitTrainingInput", "9b": "#/components/schemas/Flux2Klein9bAIToolkitTrainingInput" } } } ], "description": "AI Toolkit training for Flux2 Klein models (image training)" }, "Flux2KleinCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "klein" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2KleinEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinImageGenInput" }, { "required": [ "engine", "model", "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" }, "model": { "enum": [ "klein" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2KleinImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "cfgScale": { "maximum": 20, "minimum": 1, "type": "number", "format": "double", "default": 5 }, "steps": { "maximum": 50, "minimum": 4, "type": "integer", "format": "int32", "default": 20 }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "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": "The Klein model variant: 4b, 4b-base, 9b, 9b-base, or 9b-kv (ComfyUI)", "default": "4b" }, "model": { "enum": [ "klein" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2KleinCreateImageInput", "editImage": "#/components/schemas/Flux2KleinEditImageInput" } } } ] }, "Flux2KleinSdCppCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinSdCppImageGenInput" }, { "required": [ "ecosystem", "engine", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "ecosystem": { "enum": [ "flux2Klein" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2KleinSdCppEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinSdCppImageGenInput" }, { "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2KleinSdCppImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "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 }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "negativePrompt": { "type": [ "null", "string" ] }, "loras": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } }, "modelVersion": { "enum": [ "4b", "4b-base", "9b", "9b-base" ], "type": "string", "default": "4b" }, "ecosystem": { "enum": [ "flux2Klein" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2KleinSdCppCreateImageInput", "editImage": "#/components/schemas/Flux2KleinSdCppEditImageInput", "createVariant": "#/components/schemas/Flux2KleinSdCppVariantImageGenInput" } } } ] }, "Flux2KleinSdCppVariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2KleinSdCppImageGenInput" }, { "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2MaxCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2MaxImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "max" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2MaxEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2MaxImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "images": { "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": [ "max" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2MaxImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "model": { "enum": [ "max" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2MaxCreateImageInput", "editImage": "#/components/schemas/Flux2MaxEditImageInput" } } } ] }, "Flux2ProCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ProImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "pro" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2ProEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ProImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "images": { "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": [ "pro" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux2ProImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "model": { "enum": [ "pro" ], "type": "string" }, "engine": { "enum": [ "flux2" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux2ProCreateImageInput", "editImage": "#/components/schemas/Flux2ProEditImageInput" } } } ] }, "Flux3CreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3FalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "flux3" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux3EditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3FalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "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" }, "description": "One to ten ordered references, each at least 256 pixels per side and at most 4 MP." }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "flux3" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Flux3FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "minLength": 1, "type": "string", "description": "Bounding boxes can be included in the prompt using FLUX 3's prompt syntax." }, "quantity": { "maximum": 8, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "resolution": { "enum": [ "768sq", "1k", "2k", "4k" ], "type": "string", "default": "1k" }, "aspectRatio": { "enum": [ "auto", "21:9", "2:1", "16:9", "3:2", "7:5", "4:3", "5:4", "1:1", "4:5", "3:4", "5:7", "2:3", "9:16", "1:2" ], "type": "string", "description": "Auto follows the first reference image, or uses a square for generation.", "default": "auto" }, "enablePromptExpansion": { "type": "boolean", "default": false }, "safetyTolerance": { "maximum": 4, "minimum": 0, "type": "integer", "format": "int32", "default": 2 }, "model": { "enum": [ "flux3" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Flux3CreateFalImageGenInput", "editImage": "#/components/schemas/Flux3EditFalImageGenInput" } } } ] }, "Flux3Keyframe": { "required": [ "frameIndex", "image" ], "type": "object", "properties": { "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "frameIndex": { "maximum": 480, "minimum": 0, "type": "integer", "description": "Frame position of this keyframe in the generated 24 fps video. Must be unique across the\nkeyframes and no greater than the duration in seconds × 24.", "format": "int32" } }, "additionalProperties": false, "description": "An image pinned to a frame position in the generated video." }, "Flux3V3DraftEnhanceInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3V3VideoGenInput" }, { "required": [ "draftCache", "duration", "engine", "operation", "version" ], "type": "object", "properties": { "draftCache": { "type": "string", "description": "URL of the draft cache produced by a draft generation — pass the draftCache url from that\nstep's output. Read the workflow again to mint a fresh url if it has expired.", "format": "uri" }, "duration": { "maximum": 20, "minimum": 5, "type": "integer", "description": "Duration in seconds of the draft being enhanced. The enhanced render bills per second at that length.", "format": "int32" }, "operation": { "enum": [ "draftEnhance" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false } ], "description": "Re-render a previously generated draft at full-quality 1080p with audio." }, "Flux3V3ExtendVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3V3VideoGenInput" }, { "required": [ "engine", "operation", "sourceVideo", "version" ], "type": "object", "properties": { "duration": { "maximum": 20, "minimum": 5, "type": "integer", "description": "Duration of the generated video in seconds.", "format": "int32", "default": 5 }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "auto", "21:9", "2:1", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "description": "Aspect ratio of the generated video. \"auto\" lets the model choose.", "default": "auto" }, "generateAudio": { "type": "boolean", "description": "Whether to generate a synchronized audio track for the video.", "default": true }, "draft": { "type": "boolean", "description": "Render a fast, cheap 720p draft instead of a full-quality video. Draft results additionally\ncarry a draft cache that a later draftEnhance operation re-renders at full quality.", "default": false }, "sourceVideo": { "type": "string", "description": "URL of the source video to continue from. MP4, under 50 MB and under 15 seconds.", "format": "uri" }, "operation": { "enum": [ "extendVideo" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false } ], "description": "Continue an existing video from its final frames." }, "Flux3V3FirstLastFrameToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3V3VideoGenInput" }, { "required": [ "endImage", "engine", "operation", "startImage", "version" ], "type": "object", "properties": { "duration": { "maximum": 20, "minimum": 5, "type": "integer", "description": "Duration of the generated video in seconds.", "format": "int32", "default": 5 }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "auto", "21:9", "2:1", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "description": "Aspect ratio of the generated video. \"auto\" lets the model choose.", "default": "auto" }, "generateAudio": { "type": "boolean", "description": "Whether to generate a synchronized audio track for the video.", "default": true }, "draft": { "type": "boolean", "description": "Render a fast, cheap 720p draft instead of a full-quality video. Draft results additionally\ncarry a draft cache that a later draftEnhance operation re-renders at full quality.", "default": false }, "startImage": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "endImage": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "operation": { "enum": [ "firstLastFrameToVideo" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video that starts on one image and ends on another." }, "Flux3V3ImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3V3VideoGenInput" }, { "required": [ "engine", "image", "operation", "version" ], "type": "object", "properties": { "duration": { "maximum": 20, "minimum": 5, "type": "integer", "description": "Duration of the generated video in seconds.", "format": "int32", "default": 5 }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "auto", "21:9", "2:1", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "description": "Aspect ratio of the generated video. \"auto\" lets the model choose.", "default": "auto" }, "generateAudio": { "type": "boolean", "description": "Whether to generate a synchronized audio track for the video.", "default": true }, "draft": { "type": "boolean", "description": "Render a fast, cheap 720p draft instead of a full-quality video. Draft results additionally\ncarry a draft cache that a later draftEnhance operation re-renders at full quality.", "default": false }, "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "operation": { "enum": [ "imageToVideo" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false } ], "description": "Animate a single source image (used as the first frame) into a video." }, "Flux3V3KeyframesToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3V3VideoGenInput" }, { "required": [ "engine", "keyframes", "operation", "version" ], "type": "object", "properties": { "duration": { "maximum": 20, "minimum": 5, "type": "integer", "description": "Duration of the generated video in seconds.", "format": "int32", "default": 5 }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "auto", "21:9", "2:1", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "description": "Aspect ratio of the generated video. \"auto\" lets the model choose.", "default": "auto" }, "generateAudio": { "type": "boolean", "description": "Whether to generate a synchronized audio track for the video.", "default": true }, "draft": { "type": "boolean", "description": "Render a fast, cheap 720p draft instead of a full-quality video. Draft results additionally\ncarry a draft cache that a later draftEnhance operation re-renders at full quality.", "default": false }, "keyframes": { "type": "array", "items": { "$ref": "#/components/schemas/Flux3Keyframe" }, "description": "Up to 10 keyframes with unique frame positions." }, "operation": { "enum": [ "keyframesToVideo" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video that passes through a set of images pinned to specific frame positions." }, "Flux3V3TextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3V3VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "duration": { "maximum": 20, "minimum": 5, "type": "integer", "description": "Duration of the generated video in seconds.", "format": "int32", "default": 5 }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "auto", "21:9", "2:1", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "description": "Aspect ratio of the generated video. \"auto\" lets the model choose.", "default": "auto" }, "generateAudio": { "type": "boolean", "description": "Whether to generate a synchronized audio track for the video.", "default": true }, "draft": { "type": "boolean", "description": "Render a fast, cheap 720p draft instead of a full-quality video. Draft results additionally\ncarry a draft cache that a later draftEnhance operation re-renders at full quality.", "default": false }, "operation": { "enum": [ "textToVideo" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video from a text prompt only." }, "Flux3V3VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Flux3VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "textToVideo": "#/components/schemas/Flux3V3TextToVideoInput", "imageToVideo": "#/components/schemas/Flux3V3ImageToVideoInput", "firstLastFrameToVideo": "#/components/schemas/Flux3V3FirstLastFrameToVideoInput", "keyframesToVideo": "#/components/schemas/Flux3V3KeyframesToVideoInput", "extendVideo": "#/components/schemas/Flux3V3ExtendVideoInput", "draftEnhance": "#/components/schemas/Flux3V3DraftEnhanceInput" } } } ], "description": "Version-level base for FLUX-3. Carries the operation discriminator and the shared pricing table." }, "Flux3VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "version" ], "type": "object", "properties": { "version": { "type": [ "null", "string" ], "default": "v3.0" }, "engine": { "enum": [ "flux" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v3.0": "#/components/schemas/Flux3V3VideoGenInput" } } } ], "description": "Engine-level base for Black Forest Labs FLUX-3 video generation (FAL).\nThe version derived type carries the operation-level discriminator." }, "FluxDevFastImageResourceTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, { "required": [ "engine" ], "type": "object", "properties": { "engine": { "enum": [ "flux-dev-fast" ], "type": "string" } }, "additionalProperties": false } ] }, "FreeTierModelResponse": { "required": [ "airs", "key", "remaining", "windows" ], "type": "object", "properties": { "key": { "type": "string", "description": "The quota bucket. Every AIR listed counts against the same quota." }, "airs": { "type": "array", "items": { "type": "string" } }, "remaining": { "type": "integer", "description": "Free requests left right now: the tightest of Civitai.Orchestration.Api.Controllers.v2.Consumers.FreeTier.FreeTierModelResponse.Windows.", "format": "int32" }, "windows": { "type": "array", "items": { "$ref": "#/components/schemas/FreeTierWindowResponse" } } }, "additionalProperties": false }, "FreeTierResponse": { "required": [ "enabled", "models" ], "type": "object", "properties": { "enabled": { "type": "boolean" }, "models": { "type": "array", "items": { "$ref": "#/components/schemas/FreeTierModelResponse" } } }, "additionalProperties": false }, "FreeTierWindowResponse": { "required": [ "duration", "limit", "remaining" ], "type": "object", "properties": { "duration": { "type": "string", "format": "date-span" }, "limit": { "type": "integer", "format": "int32" }, "remaining": { "type": "integer", "format": "int32" }, "resetAt": { "type": [ "null", "string" ], "description": "When this window's usage resets. Null until the first free request in it.", "format": "date-time" } }, "additionalProperties": false }, "Gemini25FlashCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Gemini25FlashImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "2.5-flash" ], "type": "string" }, "engine": { "enum": [ "gemini" ], "type": "string" } }, "additionalProperties": false } ] }, "Gemini25FlashEditImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Gemini25FlashImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "maxItems": 4, "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": [ "2.5-flash" ], "type": "string" }, "engine": { "enum": [ "gemini" ], "type": "string" } }, "additionalProperties": false } ] }, "Gemini25FlashImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GeminiImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "model": { "enum": [ "2.5-flash" ], "type": "string" }, "engine": { "enum": [ "gemini" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Gemini25FlashCreateImageGenInput", "editImage": "#/components/schemas/Gemini25FlashEditImageGenInput" } } } ] }, "GeminiImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "model": { "type": "string" }, "prompt": { "type": "string" }, "engine": { "enum": [ "gemini" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "2.5-flash": "#/components/schemas/Gemini25FlashImageGenInput" } } } ] }, "GeminiOmniModel": { "enum": [ "1.1-flash" ], "type": "string" }, "GeminiOmniResolution": { "enum": [ "360p", "720p", "1080p", "4k" ], "type": "string" }, "GeminiOmniVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "maxBillableSeconds" ], "type": "object", "properties": { "model": { "$ref": "#/components/schemas/GeminiOmniModel" }, "aspectRatio": { "enum": [ "16:9", "9:16" ], "type": "string", "default": "16:9" }, "resolution": { "$ref": "#/components/schemas/GeminiOmniResolution" }, "images": { "maxItems": 6, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "maxBillableSeconds": { "type": "integer", "format": "int32", "readOnly": true }, "engine": { "enum": [ "gemini-omni" ], "type": "string" } }, "additionalProperties": false } ] }, "GifOutputFormat": { "allOf": [ { "$ref": "#/components/schemas/ImageOutputFormat" }, { "required": [ "format" ], "type": "object", "properties": { "maxFrames": { "type": [ "null", "integer" ], "description": "Maximum number of frames to include in the output. Set to 1 to extract only the first frame from animated images.\nWhen null, all frames are preserved.", "format": "int32" }, "format": { "enum": [ "gif" ], "type": "string" } }, "additionalProperties": false } ], "description": "GIF output format configuration." }, "GoogleImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "model": { "type": "string" }, "prompt": { "type": "string" }, "engine": { "enum": [ "google" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "imagen4": "#/components/schemas/Imagen4ImageGenInput", "nano-banana-pro": "#/components/schemas/NanoBananaProImageGenInput", "nano-banana-2": "#/components/schemas/NanoBanana2ImageGenInput", "nano-banana-2.1": "#/components/schemas/NanoBanana21ImageGenInput", "nano-banana-2-lite": "#/components/schemas/NanoBanana2LiteImageGenInput" } } } ] }, "GrokCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1ImageGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "2:1", "20:9", "19.5:9", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16", "9:19.5", "9:20", "1:2" ], "type": "string", "description": "Aspect ratio: 2:1, 20:9, 19.5:9, 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 9:19.5, 9:20, 1:2", "default": "1:1" }, "operation": { "enum": [ "createImage" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ] }, "GrokEditImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1ImageGenInput" }, { "required": [ "engine", "images", "operation", "version" ], "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" } }, "operation": { "enum": [ "editImage" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ] }, "GrokEditVideoInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1VideoGenInput" }, { "required": [ "engine", "operation", "version", "videoUrl" ], "type": "object", "properties": { "videoUrl": { "type": "string", "format": "uri" }, "analyzedDuration": { "type": [ "null", "integer" ], "format": "int32" }, "operation": { "enum": [ "edit-video" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok Edit-Video\nFAL Endpoint: xai/grok-imagine-video/edit-video\nInput video is resized to max 854x480 and truncated to 8 seconds.\nUses FFProbe to analyze input video duration for accurate costing." }, "GrokImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "prompt", "version" ], "type": "object", "properties": { "version": { "type": [ "null", "string" ], "default": "v1.0" }, "prompt": { "type": "string" }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v1.0": "#/components/schemas/GrokV1ImageGenInput", "v2.0": "#/components/schemas/GrokV2ImageGenInput" } } } ], "description": "Engine-level base for Grok image generation (xAI's Grok-Imagine model via FAL).\nThe version derived type carries the operation-level discriminator.\nPayloads without a version deserialize as v1.0." }, "GrokImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "auto", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16" ], "type": "string", "default": "auto" }, "images": { "maxItems": 1, "minItems": 1, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok Image-to-Video\nFAL Endpoint: xai/grok-imagine-video/image-to-video" }, "GrokTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "text-to-video" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok Text-to-Video\nFAL Endpoint: xai/grok-imagine-video/text-to-video" }, "GrokV1ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokImageGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/GrokCreateImageGenInput", "editImage": "#/components/schemas/GrokEditImageGenInput" } } } ], "description": "Version-level base for Grok v1.0.\nDiscriminator: operation (createImage, editImage)\nFAL Endpoints: xai/grok-imagine-image[/edit]" }, "GrokV1VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokVideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "duration": { "maximum": 15, "minimum": 1, "type": "integer", "format": "int32", "default": 6 }, "resolution": { "enum": [ "480p", "720p" ], "type": "string", "default": "720p" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/GrokTextToVideoInput", "image-to-video": "#/components/schemas/GrokImageToVideoInput", "edit-video": "#/components/schemas/GrokEditVideoInput" } } } ], "description": "Version-level base for Grok v1.0.\nDiscriminator: operation (text-to-video, image-to-video, edit-video)" }, "GrokV1_5ImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1_5VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "duration": { "maximum": 15, "minimum": 1, "type": "integer", "format": "int32", "default": 6 }, "resolution": { "enum": [ "480p", "720p", "1080p" ], "type": "string", "default": "720p" }, "images": { "maxItems": 1, "minItems": 1, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "imageToVideo" ], "type": "string" }, "version": { "enum": [ "v1.5" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok v1.5 Image-to-Video. Animates a single source image; the aspect ratio follows the image.\nFAL Endpoint: xai/grok-imagine-video/v1.5/image-to-video" }, "GrokV1_5ReferenceToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1_5VideoGenInput" }, { "required": [ "engine", "images", "operation", "version" ], "type": "object", "properties": { "duration": { "maximum": 15, "minimum": 1, "type": "integer", "format": "int32", "default": 8 }, "resolution": { "enum": [ "480p", "720p" ], "type": "string", "default": "480p" }, "aspectRatio": { "enum": [ "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16" ], "type": "string", "default": "16:9" }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "1–7 reference images guiding style and content; tag them in the prompt as , , etc." }, "operation": { "enum": [ "referenceToVideo" ], "type": "string" }, "version": { "enum": [ "v1.5" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok v1.5 Reference-to-Video. Generates a video guided by 1–7 reference images;\nreference them in the prompt as through .\nFAL Endpoint: xai/grok-imagine-video/v1.5/reference-to-video" }, "GrokV1_5TextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV1_5VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "duration": { "maximum": 15, "minimum": 1, "type": "integer", "format": "int32", "default": 6 }, "resolution": { "enum": [ "480p", "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "textToVideo" ], "type": "string" }, "version": { "enum": [ "v1.5" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok v1.5 Text-to-Video\nFAL Endpoint: xai/grok-imagine-video/v1.5/text-to-video" }, "GrokV1_5VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokVideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "textToVideo" }, "version": { "enum": [ "v1.5" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "textToVideo": "#/components/schemas/GrokV1_5TextToVideoInput", "imageToVideo": "#/components/schemas/GrokV1_5ImageToVideoInput", "referenceToVideo": "#/components/schemas/GrokV1_5ReferenceToVideoInput" } } } ], "description": "Version-level base for Grok v1.5 (Grok Imagine 1.5).\nDiscriminator: operation (textToVideo, imageToVideo, referenceToVideo)\nFAL Endpoints: xai/grok-imagine-video/v1.5/{operation}" }, "GrokV2CreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV2ImageGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "2:1", "20:9", "19.5:9", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16", "9:19.5", "9:20", "1:2" ], "type": "string", "description": "Aspect ratio: 2:1, 20:9, 19.5:9, 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 9:19.5, 9:20, 1:2", "default": "1:1" }, "operation": { "enum": [ "createImage" ], "type": "string" }, "version": { "enum": [ "v2.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok v2.0 Create Image\nFAL Endpoint: xai/grok-imagine-image/v2.0/text-to-image" }, "GrokV2EditImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokV2ImageGenInput" }, { "required": [ "engine", "images", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "auto", "2:1", "20:9", "19.5:9", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16", "9:19.5", "9:20", "1:2" ], "type": "string", "default": "auto" }, "images": { "maxItems": 3, "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" }, "version": { "enum": [ "v2.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false } ], "description": "Grok v2.0 Edit Image. Edits 1–3 source images; \"auto\" keeps the source aspect ratio.\nFAL Endpoint: xai/grok-imagine-image/v2.0/edit" }, "GrokV2ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GrokImageGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "createImage" }, "resolution": { "enum": [ "1k", "2k" ], "type": "string", "default": "2k" }, "quality": { "enum": [ "low", "medium" ], "type": "string", "default": "medium" }, "version": { "enum": [ "v2.0" ], "type": "string" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/GrokV2CreateImageGenInput", "editImage": "#/components/schemas/GrokV2EditImageGenInput" } } } ], "description": "Version-level base for Grok v2.0 (Grok Imagine Image 2.0).\nDiscriminator: operation (createImage, editImage)\nFAL Endpoints: xai/grok-imagine-image/v2.0/{text-to-image,edit}" }, "GrokVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "version" ], "type": "object", "properties": { "version": { "type": [ "null", "string" ], "default": "v1.0" }, "engine": { "enum": [ "grok" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v1.0": "#/components/schemas/GrokV1VideoGenInput", "v1.5": "#/components/schemas/GrokV1_5VideoGenInput" } } } ], "description": "Engine-level base for Grok video generation (xAI's Grok-Imagine-Video model via FAL).\nThe version derived type carries the operation-level discriminator.\nPayloads without a version deserialize as v1.0." }, "HaiperVideoGenAspectRatio": { "enum": [ "16:9", "4:3", "1:1", "9:16", "3:4" ], "type": "string" }, "HaiperVideoGenCameraMovement": { "enum": [ "none", "panRight", "panLeft", "tiltUp", "tiltDown", "zoomIn", "zoomOut" ], "type": "string" }, "HaiperVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine" ], "type": "object", "properties": { "negativePrompt": { "type": [ "null", "string" ] }, "cameraMovement": { "$ref": "#/components/schemas/HaiperVideoGenCameraMovement" }, "seed": { "maximum": 4294967295, "minimum": -1, "type": "integer", "format": "int64", "default": -1 }, "duration": { "enum": [ 2, 4, 8 ], "type": "integer", "format": "int32", "default": 2 }, "aspectRatio": { "$ref": "#/components/schemas/HaiperVideoGenAspectRatio" }, "model": { "$ref": "#/components/schemas/HaiperVideoGenModel" }, "resolution": { "enum": [ 720, 1080, 2160 ], "type": "integer", "format": "int32", "default": 1080 }, "enablePromptEnhancer": { "type": "boolean", "default": true }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "engine": { "enum": [ "haiper" ], "type": "string" } }, "additionalProperties": false } ] }, "HaiperVideoGenModel": { "enum": [ "v1_5", "v2" ], "type": "string" }, "HaiperVideoGenOutput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenOutput" }, { "type": "object", "properties": { "progress": { "type": [ "null", "number" ], "format": "double" }, "externalTOSViolation": { "type": [ "null", "boolean" ] }, "message": { "type": [ "null", "string" ] } }, "additionalProperties": false } ] }, "HappyHorseV1ImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1VideoGenInput" }, { "required": [ "engine", "image", "operation", "version" ], "type": "object", "properties": { "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "operation": { "enum": [ "imageToVideo" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Animate a single source image (used as the first frame) into a video." }, "HappyHorseV1ReferenceToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1VideoGenInput" }, { "required": [ "engine", "images", "operation", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "referenceToVideo" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video using 1–9 reference images for subject consistency.\nReference subjects via \"character1\" through \"character9\" placeholders in the prompt." }, "HappyHorseV1TextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "textToVideo" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video from a text prompt only." }, "HappyHorseV1VideoEditInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1VideoGenInput" }, { "required": [ "engine", "operation", "sourceVideo", "version" ], "type": "object", "properties": { "sourceVideo": { "type": "string", "format": "uri" }, "referenceImages": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "audioSetting": { "enum": [ "auto", "origin" ], "type": "string", "default": "auto" }, "operation": { "enum": [ "videoEdit" ], "type": "string" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Edit an existing video, optionally guided by reference images.\nFAL bills both the input and output seconds — the per-second rate is doubled." }, "HappyHorseV1VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseVideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": "string" }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "1080p" }, "duration": { "maximum": 15, "minimum": 3, "type": "integer", "format": "int32", "default": 5 }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "version": { "enum": [ "v1.0" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "textToVideo": "#/components/schemas/HappyHorseV1TextToVideoInput", "imageToVideo": "#/components/schemas/HappyHorseV1ImageToVideoInput", "videoEdit": "#/components/schemas/HappyHorseV1VideoEditInput", "referenceToVideo": "#/components/schemas/HappyHorseV1ReferenceToVideoInput" } } } ], "description": "Version-level base for Happy-Horse v1.0. Carries common v1.0 parameters and the operation discriminator." }, "HappyHorseV1_1ImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1_1VideoGenInput" }, { "required": [ "engine", "image", "operation", "version" ], "type": "object", "properties": { "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "operation": { "enum": [ "imageToVideo" ], "type": "string" }, "version": { "enum": [ "v1.1" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Animate a single source image (used as the first frame) into a video." }, "HappyHorseV1_1ReferenceToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1_1VideoGenInput" }, { "required": [ "engine", "images", "operation", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "9:21", "5:4", "4:5" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "referenceToVideo" ], "type": "string" }, "version": { "enum": [ "v1.1" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video using 1–9 reference images for subject consistency.\nReference subjects via \"character1\" through \"character9\" placeholders in the prompt." }, "HappyHorseV1_1TextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseV1_1VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "9:21", "5:4", "4:5" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "textToVideo" ], "type": "string" }, "version": { "enum": [ "v1.1" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a video from a text prompt only." }, "HappyHorseV1_1VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/HappyHorseVideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": "string" }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "1080p" }, "duration": { "maximum": 15, "minimum": 3, "type": "integer", "format": "int32", "default": 5 }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "version": { "enum": [ "v1.1" ], "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "textToVideo": "#/components/schemas/HappyHorseV1_1TextToVideoInput", "imageToVideo": "#/components/schemas/HappyHorseV1_1ImageToVideoInput", "referenceToVideo": "#/components/schemas/HappyHorseV1_1ReferenceToVideoInput" } } } ], "description": "Version-level base for Happy-Horse v1.1. Carries common v1.1 parameters and the operation discriminator." }, "HappyHorseVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "version" ], "type": "object", "properties": { "version": { "type": "string" }, "engine": { "enum": [ "happyHorse" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v1.0": "#/components/schemas/HappyHorseV1VideoGenInput", "v1.1": "#/components/schemas/HappyHorseV1_1VideoGenInput" } } } ], "description": "Engine-level base for Alibaba Happy-Horse video generation (FAL).\nThe version derived type carries the operation-level discriminator." }, "HeyGenVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "aspectRatio", "duration", "engine", "operation", "resolution" ], "type": "object", "properties": { "operation": { "enum": [ "textToVideo", "imageToVideo", "referenceToVideo" ], "type": "string" }, "duration": { "maximum": 15, "minimum": 5, "type": "integer", "format": "int32" }, "resolution": { "enum": [ "480p", "768p" ], "type": "string" }, "aspectRatio": { "enum": [ "21:9", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "description": "Ignored for imageToVideo, which follows the first frame's aspect ratio." }, "seed": { "maximum": 4294967295, "minimum": 0, "type": [ "null", "integer" ], "format": "int64" }, "firstFrameImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "referenceImages": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Up to 9 images; refer to them in the prompt as , , etc." }, "referenceVideos": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "Up to 3 public HTTPS videos (32 MB each). The model uses the first 5 seconds of each." }, "referenceAudios": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "Up to 3 public HTTPS audio files (32 MB each), accompanying a reference image or video." }, "engine": { "enum": [ "heygen" ], "type": "string" } }, "additionalProperties": false } ], "description": "HeyGen Video 1 (based on MiniMax H3), served through OpenRouter. Audio is generated with the video." }, "HiDreamI1Precision": { "enum": [ "fp8", "fp16" ], "type": "string" }, "HiDreamI1Variant": { "enum": [ "fast", "dev", "full" ], "type": "string" }, "HiDreamO1AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "ecosystem": { "enum": [ "hidream-o1" ], "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 HiDream O1 Image models." }, "HumanRecognitionResult": { "required": [ "confidence", "humanScore", "label", "noHumanScore" ], "type": "object", "properties": { "label": { "type": "string", "description": "Classification label: \"human\" or \"no_human\"." }, "confidence": { "type": "number", "description": "Confidence score for the selected classification (0.0 to 1.0).", "format": "double" }, "humanScore": { "type": "number", "description": "Aggregated probability that the image contains a human.", "format": "double" }, "noHumanScore": { "type": "number", "description": "Aggregated probability that the image does not contain a human.", "format": "double" } }, "additionalProperties": false, "description": "Represents human vs non-human image recognition results." }, "HumanoidImageMaskCategory": { "enum": [ "dresses", "upperBody", "lowerBody" ], "type": "string" }, "HumanoidImageMaskInput": { "required": [ "category", "imageUrl" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "category": { "$ref": "#/components/schemas/HumanoidImageMaskCategory" } }, "additionalProperties": false }, "HumanoidImageMaskOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/Blob" } }, "additionalProperties": false }, "Hunyuan3DComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyPolyGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "imageTo3D" }, "modelVersion": { "enum": [ "v2", "v2.1", "v2-mini" ], "type": "string", "default": "v2" }, "modelAir": { "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": { "maximum": 150, "minimum": 1, "type": [ "null", "integer" ], "format": "int32" }, "cfgScale": { "maximum": 30, "minimum": 0, "type": [ "null", "number" ], "format": "double" }, "sampler": { "enum": [ "euler", "euler_ancestral", "heun", "heunpp2", "dpm_2", "dpm_2_ancestral", "lms", "dpm_fast", "dpm_adaptive", "dpmpp_2s_ancestral", "dpmpp_sde", "dpmpp_2m", "dpmpp_2m_sde", "dpmpp_3m_sde", "ddpm", "lcm", "uni_pc", "uni_pc_bh2" ], "type": "string", "default": "euler" }, "scheduler": { "enum": [ "normal", "karras", "exponential", "sgm_uniform", "simple", "ddim_uniform", "beta" ], "type": "string", "default": "normal" }, "resolution": { "maximum": 8192, "minimum": 1, "type": [ "null", "integer" ], "format": "int32" }, "vaeNumChunks": { "maximum": 500000, "minimum": 1000, "type": "integer", "format": "int32", "default": 8000 }, "octreeResolution": { "maximum": 512, "minimum": 16, "type": "integer", "format": "int32", "default": 256 }, "meshThreshold": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0.6 }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "shift": { "type": "number", "format": "double", "default": 1 }, "model": { "enum": [ "hunyuan3D" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "imageTo3D": "#/components/schemas/Hunyuan3DImageTo3DComfyPolyGenInput", "shapeGen": "#/components/schemas/Hunyuan3DShapeGenComfyPolyGenInput", "texGen": "#/components/schemas/Hunyuan3DTexGenComfyPolyGenInput" } } } ] }, "Hunyuan3DImageTo3DComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/Hunyuan3DComfyPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "prompt": { "maxLength": 600, "type": [ "null", "string" ] }, "shouldTexture": { "type": "boolean", "default": true }, "shouldRemesh": { "type": "boolean", "default": false }, "enablePbr": { "type": "boolean", "default": true }, "operation": { "enum": [ "imageTo3D" ], "type": "string" }, "model": { "enum": [ "hunyuan3D" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "Hunyuan3DShapeGenComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/Hunyuan3DComfyPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "prompt": { "maxLength": 600, "type": [ "null", "string" ] }, "operation": { "enum": [ "shapeGen" ], "type": "string" }, "model": { "enum": [ "hunyuan3D" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "Hunyuan3DTexGenComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/Hunyuan3DComfyPolyGenInput" }, { "required": [ "engine", "imageUrl", "mesh", "model", "operation" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "mesh": { "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" }, "shouldRemesh": { "type": "boolean", "default": false }, "enablePbr": { "type": "boolean", "default": true }, "operation": { "enum": [ "texGen" ], "type": "string" }, "model": { "enum": [ "hunyuan3D" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "HunyuanVdeoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "cfgScale", "engine", "height", "width" ], "type": "object", "properties": { "cfgScale": { "maximum": 100, "minimum": 0, "type": "number", "format": "double", "default": 4 }, "frameRate": { "type": "integer", "format": "int32", "default": 25 }, "duration": { "maximum": 30, "minimum": 1, "type": "integer", "format": "int32", "default": 5 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "steps": { "maximum": 50, "minimum": 10, "type": "integer", "format": "int32", "default": 20 }, "width": { "type": "integer", "format": "int32" }, "height": { "type": "integer", "format": "int32" }, "loras": { "type": "array", "items": { "$ref": "#/components/schemas/VideoGenInputLora" } }, "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" ] }, "engine": { "enum": [ "hunyuan" ], "type": "string" } }, "additionalProperties": false } ] }, "Ideogram45CreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Ideogram45FalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "quality": { "enum": [ "low", "medium", "high" ], "type": "string", "default": "medium" }, "imageSize": { "enum": [ "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9" ], "type": "string", "default": "square_hd" }, "enablePromptExpansion": { "type": "boolean", "default": true }, "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "ideogram45" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Ideogram45EditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Ideogram45FalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "quality": { "enum": [ "very_low", "low", "medium", "high" ], "type": "string", "default": "medium" }, "imageSize": { "enum": [ "auto", "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9" ], "type": "string", "default": "auto" }, "images": { "maxItems": 5, "minItems": 1, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "The first image is the source; the remaining images are references." }, "maskImage": { "type": [ "null", "string" ], "description": "Black edits, white preserves. Must match the source dimensions and contain both regions.", "format": "source-image" }, "editPrecision": { "enum": [ "regular", "high" ], "type": "string", "default": "regular" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "ideogram45" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Ideogram45FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 10000, "minLength": 1, "type": "string" }, "quantity": { "maximum": 8, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "quality": { "type": "string", "default": "medium" }, "imageSize": { "type": "string" }, "width": { "maximum": 16384, "minimum": 256, "type": [ "null", "integer" ], "description": "Custom dimensions override imageSize. Set width and height together.", "format": "int32" }, "height": { "maximum": 16384, "minimum": 256, "type": [ "null", "integer" ], "format": "int32" }, "model": { "enum": [ "ideogram45" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Ideogram45CreateFalImageGenInput", "editImage": "#/components/schemas/Ideogram45EditFalImageGenInput" } } } ] }, "Ideogram4AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "ideogram4" ], "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 Ideogram 4 models." }, "ImageBackgroundRemovalFormat": { "enum": [ "png", "webp" ], "type": "string" }, "ImageBackgroundRemovalInput": { "required": [ "image" ], "type": "object", "properties": { "image": { "type": "string", "description": "The source image to remove the background from.", "format": "source-image" }, "format": { "$ref": "#/components/schemas/ImageBackgroundRemovalFormat" } }, "additionalProperties": false, "description": "Input configuration for the ImageBackgroundRemoval workflow step." }, "ImageBackgroundRemovalOutput": { "type": "object", "properties": { "image": { "$ref": "#/components/schemas/ImageBlob" } }, "additionalProperties": false, "description": "Output from the ImageBackgroundRemoval workflow step." }, "ImageBackgroundRemovalStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageBackgroundRemovalInput" }, "output": { "$ref": "#/components/schemas/ImageBackgroundRemovalOutput" }, "$type": { "enum": [ "imageBackgroundRemoval" ], "type": "string" } }, "additionalProperties": false } ], "description": "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)." }, "ImageBackgroundRemovalStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageBackgroundRemovalInput" }, "$type": { "enum": [ "imageBackgroundRemoval" ], "type": "string" } }, "additionalProperties": false } ], "description": "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)." }, "ImageBlob": { "allOf": [ { "$ref": "#/components/schemas/Blob" }, { "required": [ "type" ], "type": "object", "properties": { "width": { "type": [ "null", "integer" ], "format": "int32" }, "height": { "type": [ "null", "integer" ], "format": "int32" }, "previewUrl": { "type": [ "null", "string" ], "description": "Gets a url that can be used to preview a resized version of the image.", "format": "uri" }, "previewUrlExpiresAt": { "type": [ "null", "string" ], "description": "Gets when the preview url is set to expire.", "format": "date-time" }, "type": { "enum": [ "image" ], "type": "string" } }, "additionalProperties": false } ] }, "ImageGenInput": { "required": [ "engine" ], "type": "object", "properties": { "engine": { "type": "string" }, "outputFormat": { "$ref": "#/components/schemas/ImageGenOutputFormat" }, "imageMetadata": { "type": [ "null", "string" ], "description": "External metadata that will be stored with the image" } }, "additionalProperties": false, "discriminator": { "propertyName": "engine", "mapping": { "openai": "#/components/schemas/OpenApiImageGenInput", "flux1-kontext": "#/components/schemas/Flux1KontextImageGenInput", "flux1-pro": "#/components/schemas/Flux1ProFamilyImageGenInput", "flux2": "#/components/schemas/Flux2ImageGenInput", "google": "#/components/schemas/GoogleImageGenInput", "wan": "#/components/schemas/WanImageGenInput", "gemini": "#/components/schemas/GeminiImageGenInput", "sdcpp": "#/components/schemas/SdCppImageGenInput", "comfy": "#/components/schemas/ComfyImageGenInput", "seedream": "#/components/schemas/SeedreamImageGenInput", "grok": "#/components/schemas/GrokImageGenInput", "fal": "#/components/schemas/FalImageGenInput", "qwen": "#/components/schemas/QwenApiImageGenInput", "krea": "#/components/schemas/KreaImageGenInput" } } }, "ImageGenInputLora": { "required": [ "air" ], "type": "object", "properties": { "air": { "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" }, "strength": { "maximum": 4, "minimum": 0, "type": "number", "format": "double", "default": 1 } }, "additionalProperties": false }, "ImageGenOutput": { "required": [ "images" ], "type": "object", "properties": { "images": { "type": "array", "items": { "$ref": "#/components/schemas/ImageBlob" }, "description": "A collection of output images." }, "errors": { "type": [ "null", "array" ], "items": { "type": "string" }, "description": "An optional list of errors related to generation failures" } }, "additionalProperties": false }, "ImageGenOutputFormat": { "enum": [ "jpeg", "png", "webP" ], "type": "string" }, "ImageGenStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageGenInput" }, "output": { "$ref": "#/components/schemas/ImageGenOutput" }, "$type": { "enum": [ "imageGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "Image Generation" }, "ImageGenStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageGenInput" }, "$type": { "enum": [ "imageGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "Image Generation" }, "ImageJobControlNet": { "required": [ "endStep", "preprocessor", "startStep", "weight" ], "type": "object", "properties": { "preprocessor": { "$ref": "#/components/schemas/ImageTransformer" }, "weight": { "type": "number", "description": "A value representing the weight applied to the ControlNet.", "format": "double" }, "startStep": { "type": "number", "description": "A value representing the start step selected for the ControlNet.", "format": "double" }, "endStep": { "type": "number", "description": "A value representing the end step selected for the ControlNet.", "format": "double" }, "image": { "type": [ "null", "string" ], "description": "The preprocessed control image. Accepts an AIR URN, a URL, or a base64 data URL; the\norchestrator processes it into a stored blob before the job is dispatched.", "format": "source-image" }, "mask": { "type": [ "null", "string" ], "description": "The inpaint mask image. Required when the preprocessor is Inpaint.", "format": "source-image" } }, "additionalProperties": false, "description": "Information for a controlnet provided for a text to image input." }, "ImageJobNetworkParams": { "type": "object", "properties": { "strength": { "type": [ "null", "number" ], "description": "In case of Lora and LoCon, set the strength of the network", "format": "double" }, "triggerWord": { "type": [ "null", "string" ], "description": "In case of a TextualInversion, set the trigger word of the network" }, "type": { "type": [ "null", "string" ], "description": "A legacy type set by the consumer" } }, "additionalProperties": false }, "ImageOutputFormat": { "required": [ "format", "hideMetadata" ], "type": "object", "properties": { "format": { "type": "string" }, "hideMetadata": { "type": "boolean", "description": "When true, metadata such as EXIF data will be stripped from the output image. Defaults to false.\nNote that some formats like JPEG may still include minimal metadata even when this is false, due to encoder behavior.\nSetting this to true will attempt to remove all metadata, but results may vary by format and encoder implementation." } }, "additionalProperties": false, "description": "Base class for image output formats. Uses \"format\" as the type discriminator.", "discriminator": { "propertyName": "format", "mapping": { "jpeg": "#/components/schemas/JpegOutputFormat", "png": "#/components/schemas/PngOutputFormat", "webp": "#/components/schemas/WebpOutputFormat", "gif": "#/components/schemas/GifOutputFormat", "avif": "#/components/schemas/AvifOutputFormat" } } }, "ImageResouceTrainingModerationStatus": { "enum": [ "evaluating", "underReview", "approved", "rejected" ], "type": "string" }, "ImageResourceTrainingInput": { "required": [ "engine", "model", "trainingData", "trainingDataImagesCount" ], "type": "object", "properties": { "engine": { "type": "string" }, "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 model to train upon." }, "trainingData": { "type": "string", "description": "A url referring data to use in training.", "format": "uri" }, "trainingDataImagesCount": { "type": "integer", "description": "The number of images embedded in this training data. This is used to calculate the cost of training.", "format": "int32" }, "loraName": { "type": "string", "description": "The desired lora name.", "default": "my-lora" }, "samplePrompts": { "type": "array", "items": { "type": "string" }, "description": "A selection of sample prompts." }, "negativePrompt": { "type": [ "null", "string" ], "description": "An optional negative prompt that will get applied when generating samples" } }, "additionalProperties": false, "description": "Input for an image resource training step.", "discriminator": { "propertyName": "engine", "mapping": { "kohya": "#/components/schemas/KohyaImageResourceTrainingInput", "flux-dev-fast": "#/components/schemas/FluxDevFastImageResourceTrainingInput", "musubi": "#/components/schemas/MusubiImageResourceTrainingInput", "flux2-dev": "#/components/schemas/Flux2DevImageResourceTrainingInput", "flux2-dev-edit": "#/components/schemas/Flux2DevEditImageResourceTrainingInput" } } }, "ImageResourceTrainingOutput": { "required": [ "epochs", "moderationStatus", "sampleImagesPrompts" ], "type": "object", "properties": { "moderationStatus": { "$ref": "#/components/schemas/ImageResouceTrainingModerationStatus" }, "epochs": { "type": "array", "items": { "$ref": "#/components/schemas/EpochResult" }, "description": "An array of epochs." }, "sampleImagesPrompts": { "type": "array", "items": { "type": "string" }, "description": "The selected prompts for sample images" }, "sampleInputImages": { "type": [ "null", "array" ], "items": { "type": "string", "format": "uri" }, "description": "The selected images for sample images" }, "storedAsAssets": { "type": [ "null", "boolean" ], "description": "Get wether the blobs are actually stored as assets\nAssets are deprecated and require a different retrieval mechanism" }, "eta": { "type": [ "null", "number" ], "description": "Get an estimate in minutes on how long the work is expected to take", "format": "double" } }, "additionalProperties": false }, "ImageResourceTrainingStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, "output": { "$ref": "#/components/schemas/ImageResourceTrainingOutput" }, "$type": { "enum": [ "imageResourceTraining" ], "type": "string" } }, "additionalProperties": false } ], "description": "LORA Training" }, "ImageResourceTrainingStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, "$type": { "enum": [ "imageResourceTraining" ], "type": "string" } }, "additionalProperties": false } ], "description": "LORA Training" }, "ImageScanningHumanEvidence": { "required": [ "polarity", "score", "tag" ], "type": "object", "properties": { "tag": { "type": "string" }, "score": { "type": "number", "format": "double" }, "polarity": { "type": "string" } }, "additionalProperties": false }, "ImageScanningHumanRecognition": { "required": [ "evidence", "humanScore", "label", "noHumanScore", "ran", "score", "scores", "status" ], "type": "object", "properties": { "status": { "type": "string" }, "ran": { "type": "boolean" }, "label": { "type": "string" }, "score": { "type": "number", "format": "double" }, "humanScore": { "type": "number", "format": "double" }, "noHumanScore": { "type": "number", "format": "double" }, "scores": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } }, "evidence": { "type": "array", "items": { "$ref": "#/components/schemas/ImageScanningHumanEvidence" } } }, "additionalProperties": false }, "ImageScanningInput": { "required": [ "image" ], "type": "object", "properties": { "image": { "type": "string", "description": "Image to scan. URLs are imported into orchestrator blob storage before the job is queued.", "format": "source-image" } }, "additionalProperties": false, "description": "Input for a unified image scan." }, "ImageScanningJointAgeClassification": { "required": [ "detections", "ran", "status" ], "type": "object", "properties": { "status": { "type": "string" }, "ran": { "type": "boolean" }, "skipReason": { "type": [ "null", "string" ] }, "detections": { "type": "array", "items": { "$ref": "#/components/schemas/ImageScanningJointAgeDetection" } }, "childDetected": { "type": [ "null", "boolean" ] }, "minorDetected": { "type": [ "null", "boolean" ] }, "oodDetected": { "type": [ "null", "boolean" ] }, "warning": { "type": [ "null", "string" ] }, "error": { "type": [ "null", "string" ] } }, "additionalProperties": false }, "ImageScanningJointAgeDetection": { "required": [ "animeProbability", "boundingBox", "domain", "isChild", "isMinor", "isOod", "ordinalCutpointProbabilities", "personDetected" ], "type": "object", "properties": { "boundingBox": { "type": "array", "items": { "type": "number", "format": "double" } }, "personDetected": { "type": "boolean" }, "personDetectionConfidence": { "type": [ "null", "number" ], "format": "double" }, "faceBoundingBox": { "type": [ "null", "array" ], "items": { "type": "number", "format": "double" } }, "faceDetectionConfidence": { "type": [ "null", "number" ], "format": "double" }, "domain": { "type": "string" }, "animeProbability": { "type": "number", "format": "double" }, "apparentAge": { "type": [ "null", "number" ], "format": "double" }, "ageBand": { "type": [ "null", "string" ] }, "under13Probability": { "type": [ "null", "number" ], "format": "double" }, "under18Probability": { "type": [ "null", "number" ], "format": "double" }, "oodProbability": { "type": [ "null", "number" ], "format": "double" }, "ordinalCutpointProbabilities": { "type": "object", "additionalProperties": { "type": "number", "format": "double" } }, "isChild": { "type": "boolean" }, "isMinor": { "type": "boolean" }, "isOod": { "type": "boolean" }, "warning": { "type": [ "null", "string" ] }, "personMask": { "$ref": "#/components/schemas/ImageScanningPersonMask" } }, "additionalProperties": false }, "ImageScanningLabelScore": { "required": [ "label", "score" ], "type": "object", "properties": { "label": { "type": "string" }, "score": { "type": "number", "format": "double" } }, "additionalProperties": false }, "ImageScanningOutput": { "required": [ "aiRecognition", "animeRecognition", "humanRecognition", "jointAgeClassification", "nsfwLevel", "score", "tagging", "topK" ], "type": "object", "properties": { "nsfwLevel": { "$ref": "#/components/schemas/NSFWLevel" }, "score": { "type": "number", "format": "double" }, "topK": { "type": "array", "items": { "$ref": "#/components/schemas/ImageScanningLabelScore" } }, "aiRecognition": { "$ref": "#/components/schemas/ImageScanningRecognition" }, "animeRecognition": { "$ref": "#/components/schemas/ImageScanningRecognition" }, "tagging": { "$ref": "#/components/schemas/ImageScanningTagging" }, "humanRecognition": { "$ref": "#/components/schemas/ImageScanningHumanRecognition" }, "jointAgeClassification": { "$ref": "#/components/schemas/ImageScanningJointAgeClassification" }, "csam": { "type": [ "null", "boolean" ] } }, "additionalProperties": false, "description": "Complete result from the unified image scanner." }, "ImageScanningPersonMask": { "required": [ "height", "pngBase64", "width" ], "type": "object", "properties": { "width": { "type": "integer", "format": "int32" }, "height": { "type": "integer", "format": "int32" }, "pngBase64": { "type": "string" } }, "additionalProperties": false }, "ImageScanningRecognition": { "required": [ "label", "score" ], "type": "object", "properties": { "label": { "type": "string" }, "score": { "type": "number", "format": "double" }, "topK": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/ImageScanningLabelScore" } }, "scores": { "type": [ "null", "object" ], "additionalProperties": { "type": "number", "format": "double" } } }, "additionalProperties": false }, "ImageScanningStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageScanningInput" }, "output": { "$ref": "#/components/schemas/ImageScanningOutput" }, "$type": { "enum": [ "imageScanning" ], "type": "string" } }, "additionalProperties": false } ], "description": "Image scanning" }, "ImageScanningStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageScanningInput" }, "$type": { "enum": [ "imageScanning" ], "type": "string" } }, "additionalProperties": false } ], "description": "Image scanning" }, "ImageScanningTag": { "required": [ "category", "score", "tag" ], "type": "object", "properties": { "tag": { "type": "string" }, "category": { "type": "string" }, "score": { "type": "number", "format": "double" } }, "additionalProperties": false }, "ImageScanningTagging": { "required": [ "ran", "status", "tagCount", "tags", "threshold", "totalAboveThreshold", "truncated" ], "type": "object", "properties": { "status": { "type": "string" }, "ran": { "type": "boolean" }, "threshold": { "type": "number", "format": "double" }, "tagCount": { "type": "integer", "format": "int32" }, "totalAboveThreshold": { "type": "integer", "format": "int32" }, "truncated": { "type": "boolean" }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/ImageScanningTag" } } }, "additionalProperties": false }, "ImageToSvgInput": { "required": [ "engine", "image" ], "type": "object", "properties": { "engine": { "type": "string" }, "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "additionalProperties": false, "discriminator": { "propertyName": "engine", "mapping": { "comfy": "#/components/schemas/ComfyImageToSvgInput" } } }, "ImageToSvgOutput": { "required": [ "svg" ], "type": "object", "properties": { "svg": { "$ref": "#/components/schemas/Blob" } }, "additionalProperties": false }, "ImageToSvgStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageToSvgInput" }, "output": { "$ref": "#/components/schemas/ImageToSvgOutput" }, "$type": { "enum": [ "imageToSvg" ], "type": "string" } }, "additionalProperties": false } ], "description": "Converts a raster image to an SVG using a local StarVector or OmniSVG model." }, "ImageToSvgStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageToSvgInput" }, "$type": { "enum": [ "imageToSvg" ], "type": "string" } }, "additionalProperties": false } ], "description": "Converts a raster image to an SVG using a local StarVector or OmniSVG model." }, "ImageTransform": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string" } }, "additionalProperties": false, "description": "Base class for image transforms that can be applied during image conversion.", "discriminator": { "propertyName": "type", "mapping": { "resize": "#/components/schemas/ResizeTransform", "blur": "#/components/schemas/BlurTransform" } } }, "ImageTransformer": { "enum": [ "canny", "mlsd", "depthZoe", "depthAnything", "depthAnythingV2", "zoeDepthAnything", "zoeDepth", "midasDepth", "leresDepth", "metric3dDepth", "softedgePidinet", "hed", "teed", "midasNormal", "baeNormal", "dsineNormal", "metric3dNormal", "lineartRealistic", "lineartStandard", "lineartAnime", "lineartManga", "anyline", "scribble", "scribbleXdog", "scribblePidinet", "fakeScribble", "openpose", "dwpose", "oneformerCoco", "oneformerAde20k", "uniformer", "shuffle", "tile", "gray", "rembg", "inpaint" ], "type": "string", "description": "Available image transformers." }, "ImageUploadOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/Blob" } }, "additionalProperties": false }, "ImageUploadStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "type": "string", "description": "The workflow's input." }, "output": { "$ref": "#/components/schemas/ImageUploadOutput" }, "$type": { "enum": [ "imageUpload" ], "type": "string" } }, "additionalProperties": false } ], "description": "Image upload" }, "ImageUploadStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "type": [ "null", "string" ], "description": "Input for the ImageUploadStep step." }, "$type": { "enum": [ "imageUpload" ], "type": "string" } }, "additionalProperties": false } ], "description": "Image upload" }, "ImageUpscalerInput": { "required": [ "image" ], "type": "object", "properties": { "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "model": { "type": [ "null", "string" ], "description": "The upscaler model to use (AIR URN format)." }, "numberOfRepeats": { "maximum": 3, "minimum": 1, "type": "integer", "description": "Number of times to repeat the upscale operation (1-3). Each repeat doubles the resolution.", "format": "int32", "default": 1 } }, "additionalProperties": false }, "ImageUpscalerOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/ImageBlob" } }, "additionalProperties": false }, "ImageUpscalerStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageUpscalerInput" }, "output": { "$ref": "#/components/schemas/ImageUpscalerOutput" }, "$type": { "enum": [ "imageUpscaler" ], "type": "string" } }, "additionalProperties": false } ] }, "ImageUpscalerStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ImageUpscalerInput" }, "$type": { "enum": [ "imageUpscaler" ], "type": "string" } }, "additionalProperties": false } ] }, "Imagen4ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GoogleImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "prompt": { "maxLength": 1000, "minLength": 0, "type": "string" }, "negativePrompt": { "maxLength": 1000, "minLength": 0, "type": "string", "default": "" }, "aspectRatio": { "enum": [ "1:1", "16:9", "9:16", "3:4", "4:3" ], "type": "string", "default": "1:1" }, "numImages": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "model": { "enum": [ "imagen4" ], "type": "string" }, "engine": { "enum": [ "google" ], "type": "string" } }, "additionalProperties": false } ] }, "JobSupport": { "enum": [ "unsupported", "unavailable", "available" ], "type": "string", "description": "Available levels of job support." }, "JointAgeClassificationResult": { "required": [ "detections" ], "type": "object", "properties": { "detections": { "type": "array", "items": { "$ref": "#/components/schemas/JointAgeDetection" } }, "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 joint face-and-body apparent-age results for photo and anime content." }, "JointAgeDetection": { "required": [ "ageBand", "animeProbability", "apparentAge", "boundingBox", "domain", "isChild", "isMinor", "isOod", "oodProbability", "ordinalCutpointProbabilities", "personDetected", "personDetectionConfidence", "under13Probability", "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" }, "domain": { "type": "string" }, "animeProbability": { "type": "number", "format": "double" }, "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" } }, "isChild": { "type": "boolean" }, "isMinor": { "type": "boolean" }, "isOod": { "type": "boolean" }, "warning": { "type": [ "null", "string" ] } }, "additionalProperties": false, "description": "Represents one photo-or-anime age estimate for a detected person." }, "JpegOutputFormat": { "allOf": [ { "$ref": "#/components/schemas/ImageOutputFormat" }, { "required": [ "format" ], "type": "object", "properties": { "quality": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Quality setting for JPEG compression (1-100). Higher values produce better quality but larger files.", "format": "int32", "default": 85 }, "format": { "enum": [ "jpeg" ], "type": "string" } }, "additionalProperties": false } ], "description": "JPEG output format configuration." }, "JsonPatchDocument": { "type": "array", "items": { "$ref": "#/components/schemas/JsonPatchOperation" }, "description": "Array of operations to perform" }, "JsonPatchOperation": { "required": [ "op", "path" ], "type": "object", "properties": { "op": { "enum": [ "add", "remove", "replace", "move", "copy", "test" ], "type": "string", "description": "The operation type. Allowed values: 'add', 'remove', 'replace', 'move', 'copy', 'test'." }, "path": { "type": "string", "description": "The JSON Pointer path to the property in the target document where the operation is to be applied." }, "from": { "type": "string", "description": "Should be a path, required when using move, copy" }, "value": { "type": "null", "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "object" }, { "type": "array" } ], "description": "The value to apply for 'add', 'replace', or 'test' operations. Not required for 'remove', 'move', or 'copy'." } }, "description": "Describes a single operation in a JSON Patch document. Includes the operation type, the target property path, and the value to be used." }, "KlingCameraControl": { "type": "object", "properties": { "config": { "$ref": "#/components/schemas/KlingCameraControlConfig" } }, "additionalProperties": false }, "KlingCameraControlConfig": { "type": "object", "properties": { "horizontal": { "maximum": 10, "minimum": -10, "type": [ "null", "number" ], "description": "Horizontal, controls the camera's movement along the horizontal axis (translation along the x-axis).", "format": "double" }, "vertical": { "maximum": 10, "minimum": -10, "type": [ "null", "number" ], "description": "Vertical, controls the camera's movement along the vertical axis (translation along the y-axis).", "format": "double" }, "pan": { "maximum": 10, "minimum": -10, "type": [ "null", "number" ], "description": "Pan, controls the camera's rotation in the horizontal plane (rotation around the y-axis).", "format": "double" }, "tilt": { "maximum": 10, "minimum": -10, "type": [ "null", "number" ], "description": "Tilt, controls the camera's rotation in the horizontal plane (rotation around the y-axis).", "format": "double" }, "roll": { "maximum": 10, "minimum": -10, "type": [ "null", "number" ], "description": "Roll, controls the camera's rolling amount (rotation around the z-axis).", "format": "double" }, "zoom": { "maximum": 10, "minimum": -10, "type": [ "null", "number" ], "description": "Zoom, controls the change in the camera's focal length, affecting the proximity of the field of view.", "format": "double" } }, "additionalProperties": false }, "KlingMode": { "enum": [ "standard", "professional" ], "type": "string" }, "KlingModel": { "enum": [ "v1", "v1.5", "v1.6", "v2", "v2.5-turbo" ], "type": "string" }, "KlingV3ElementInput": { "type": "object", "properties": { "frontalImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "referenceImages": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "videoUrl": { "type": [ "null", "string" ], "format": "uri" } }, "additionalProperties": false }, "KlingV3MultiPrompt": { "required": [ "prompt" ], "type": "object", "properties": { "prompt": { "type": "string" }, "duration": { "type": "integer", "format": "int32", "default": 5 } }, "additionalProperties": false }, "KlingV3Operation": { "enum": [ "text-to-video", "image-to-video", "reference-to-video", "video-to-video-edit", "video-to-video-reference" ], "type": "string" }, "KlingV3VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine" ], "type": "object", "properties": { "operation": { "$ref": "#/components/schemas/KlingV3Operation" }, "mode": { "$ref": "#/components/schemas/KlingMode" }, "duration": { "maximum": 15, "minimum": 3, "type": "integer", "format": "int32", "default": 5 }, "aspectRatio": { "$ref": "#/components/schemas/KlingVideoGenAspectRatio" }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "endImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "videoUrl": { "type": [ "null", "string" ], "format": "uri" }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "elements": { "type": "array", "items": { "$ref": "#/components/schemas/KlingV3ElementInput" } }, "generateAudio": { "type": "boolean", "default": false }, "voiceIds": { "type": [ "null", "array" ], "items": { "type": "string" } }, "keepAudio": { "type": "boolean", "default": true }, "multiPrompt": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/KlingV3MultiPrompt" } }, "engine": { "enum": [ "kling-v3" ], "type": "string" } }, "additionalProperties": false } ] }, "KlingVideoGenAspectRatio": { "enum": [ "16:9", "9:16", "1:1" ], "type": "string" }, "KlingVideoGenDuration": { "enum": [ "5", "10" ], "type": "string" }, "KlingVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "cfgScale", "engine" ], "type": "object", "properties": { "model": { "$ref": "#/components/schemas/KlingModel" }, "negativePrompt": { "type": [ "null", "string" ] }, "cfgScale": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0.5 }, "mode": { "$ref": "#/components/schemas/KlingMode" }, "aspectRatio": { "$ref": "#/components/schemas/KlingVideoGenAspectRatio" }, "duration": { "$ref": "#/components/schemas/KlingVideoGenDuration" }, "cameraControl": { "$ref": "#/components/schemas/KlingCameraControl" }, "sourceImageUrl": { "type": [ "null", "string" ], "format": "uri" }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "engine": { "enum": [ "kling" ], "type": "string" } }, "additionalProperties": false } ] }, "KohyaImageResourceTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, { "required": [ "engine" ], "type": "object", "properties": { "maxTrainEpochs": { "maximum": 20, "minimum": 0, "type": "integer", "description": "An epoch is one set of learning. By default, we will save a maximum of 20 epochs (evenly distributed), and they are all available for download.", "format": "int32", "default": 5 }, "numRepeats": { "maximum": 5000, "minimum": 1, "type": "integer", "description": "Num Repeats defines how many times each individual image gets put into VRAM. As opposed to batch size, which is how many images are placed into VRAM at once.", "format": "int32", "default": 8 }, "trainBatchSize": { "maximum": 9, "minimum": 1, "type": [ "null", "integer" ], "description": "Batch size is the number of images that will be placed into VRAM at once. A batch size of 2 will train two images at a time, simultaneously.", "format": "int32" }, "resolution": { "maximum": 1024, "minimum": 512, "type": [ "null", "integer" ], "description": "Specify the maximum resolution of training images. If the training images exceed the resolution specified here, they will be scaled down to this resolution", "format": "int32" }, "enableBucket": { "type": "boolean", "description": "Sorts images into buckets by size for the purposes of training. If your training images are all the same size, you can turn this option off, but leaving it on has no effect.", "default": true }, "shuffleCaption": { "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": 3, "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 Tags option is off.", "format": "int32", "default": 0 }, "clipSkip": { "maximum": 4, "minimum": 1, "type": "integer", "description": "Determines which layer's vector output will be used. There are 12 layers, and setting the skip will select \"xth from the end\" of the total layers. For anime, we use 2. For everything else, 1.", "format": "int32", "default": 1 }, "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 }, "unetLR": { "maximum": 1, "minimum": 0, "type": "number", "description": "Sets the learning rate for U-Net. This is the learning rate when performing additional learning on each attention block (and other blocks depending on the setting) in U-Net", "format": "double", "default": 0.00005 }, "textEncoderLR": { "maximum": 1, "minimum": 0, "type": "number", "description": "Sets the learning rate for the text encoder. The effect of additional training on text encoders affects the entire U-Net.", "format": "double", "default": 0.00005 }, "lrScheduler": { "enum": [ "constant", "cosine", "cosine_with_restarts", "linear" ], "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." }, "lrSchedulerNumCycles": { "maximum": 4, "minimum": 1, "type": "integer", "description": "This option specifies how many cycles the scheduler runs during training. It is only used when \"cosine_with_restarts\" or \"polynomial\" is used as the scheduler.", "format": "int32", "default": 3 }, "minSnrGamma": { "maximum": 20, "minimum": 0, "type": [ "null", "integer" ], "description": "Learning is performed by putting noise of various strengths on the training image,\nbut depending on the difference in strength of the noise on which it is placed, learning will be\nstable by moving closer to or farther from the learning target.\n \nMin SNR gamma was introduced to compensate for that. When learning images have little noise,\nit may deviate greatly from the target, so try to suppress this jump.", "format": "int32" }, "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" }, "optimizerType": { "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\nis \"AdamW8bit\" or \"Adafactor\" for SDXL." }, "targetSteps": { "type": [ "null", "integer" ], "format": "int32", "readOnly": true }, "engine": { "enum": [ "kohya" ], "type": "string" } }, "additionalProperties": false } ] }, "Krea2AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "krea2" ], "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 Krea 2 models." }, "Krea2CreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Krea2FalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "krea2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Krea2FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "imageStyleReferences", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 5000, "minLength": 1, "type": "string" }, "size": { "enum": [ "medium", "large" ], "type": "string", "default": "medium" }, "aspectRatio": { "enum": [ "1:1", "4:3", "3:2", "16:9", "2.35:1", "4:5", "2:3", "9:16" ], "type": "string", "default": "1:1" }, "creativity": { "enum": [ "raw", "low", "medium", "high" ], "type": "string", "default": "medium" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "imageStyleReferences": { "maxItems": 10, "type": "array", "items": { "$ref": "#/components/schemas/Krea2StyleReference" } }, "model": { "enum": [ "krea2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Krea2CreateFalImageGenInput" } } } ] }, "Krea2StyleReference": { "required": [ "imageUrl" ], "type": "object", "properties": { "imageUrl": { "minLength": 1, "type": "string" }, "strength": { "maximum": 2, "minimum": -2, "type": "number", "format": "double", "default": 1 } }, "additionalProperties": false }, "KreaCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/KreaImageGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "image": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "strength": { "maximum": 1, "minimum": 0, "type": "number", "description": "Denoising strength for image-to-image; ignored without Civitai.Orchestration.Grains.Workflows.Steps.ImageGen.Krea.KreaCreateImageGenInput.Image.", "format": "double", "default": 0.99 }, "operation": { "enum": [ "createImage" ], "type": "string" }, "engine": { "enum": [ "krea" ], "type": "string" } }, "additionalProperties": false } ], "description": "Text-to-image, or image-to-image when Civitai.Orchestration.Grains.Workflows.Steps.ImageGen.Krea.KreaCreateImageGenInput.Image is supplied." }, "KreaImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "imageStyleReferences", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "createImage" }, "prompt": { "maxLength": 5000, "minLength": 1, "type": "string" }, "model": { "enum": [ "krea2-medium", "krea2-large", "krea2-medium-turbo" ], "type": "string", "default": "krea2-medium" }, "aspectRatio": { "enum": [ "1:1", "4:3", "3:2", "16:9", "2.35:1", "4:5", "2:3", "9:16" ], "type": "string", "default": "1:1" }, "creativity": { "enum": [ "raw", "low", "medium", "high" ], "type": "string", "description": "How much Krea expands the prompt: `raw` renders only what was written.", "default": "medium" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "intensity": { "maximum": 100, "minimum": -100, "type": "integer", "description": "K2 intensity slider.", "format": "int32", "default": 0 }, "complexity": { "maximum": 100, "minimum": -100, "type": "integer", "description": "K2 complexity slider.", "format": "int32", "default": 0 }, "movement": { "maximum": 100, "minimum": -100, "type": "integer", "description": "K2 movement slider.", "format": "int32", "default": 0 }, "imageStyleReferences": { "maxItems": 10, "type": "array", "items": { "$ref": "#/components/schemas/Krea2StyleReference" } }, "engine": { "enum": [ "krea" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/KreaCreateImageGenInput" } } } ], "description": "Krea 2 served by Krea's own API. Distinct from `fal`/`krea2` (the same models via FAL) and\nfrom the `comfy`/`krea2` ecosystem, which runs the open weights on our own workers." }, "LeresBoost": { "enum": [ "disable", "enable" ], "type": "string" }, "LightricksAspectRatio": { "enum": [ "1:1", "16:9", "9:16", "3:2", "2:3" ], "type": "string" }, "LightricksVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "cfgScale", "engine" ], "type": "object", "properties": { "negativePrompt": { "type": [ "null", "string" ] }, "cfgScale": { "maximum": 100, "minimum": 0, "type": "number", "format": "double", "default": 4 }, "frameRate": { "type": "integer", "format": "int32", "default": 25 }, "duration": { "maximum": 30, "minimum": 1, "type": "integer", "format": "int32", "default": 5 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "steps": { "maximum": 50, "minimum": 10, "type": "integer", "format": "int32", "default": 20 }, "aspectRatio": { "$ref": "#/components/schemas/LightricksAspectRatio" }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "expandPrompt": { "type": "boolean", "default": true }, "engine": { "enum": [ "lightricks" ], "type": "string" } }, "additionalProperties": false } ] }, "LiveTranscriptionInput": { "type": "object", "properties": { "language": { "type": [ "null", "string" ], "description": "Language of the speech (e.g., \"en\", \"zh\"). Send it: without it the model assumes English and invents English text for other languages." }, "context": { "type": [ "null", "string" ], "description": "Optional context prompt to improve transcription accuracy." }, "maxDurationSeconds": { "maximum": 600, "minimum": 1, "type": "integer", "description": "The session ends after this many seconds of audio, even if the input is still open.\nThe upfront balance check covers this much audio.", "format": "int32", "default": 120 }, "idleTimeoutSeconds": { "maximum": 60, "minimum": 2, "type": "integer", "description": "The input is treated as closed when no audio arrives for this many seconds, so a client that\ndisappears does not hold the session open.", "format": "int32", "default": 10 } }, "additionalProperties": false }, "LiveTranscriptionOutput": { "required": [ "audioSeconds", "inputUrl", "inputUrlExpiresAt", "transcriptUrl" ], "type": "object", "properties": { "inputUrl": { "type": "string", "description": "POST raw PCM (s16le, 16 kHz, mono) here in chunks numbered `?seq=0,1,…`, with `final=true` on the last.", "format": "uri" }, "inputUrlExpiresAt": { "type": "string", "format": "date-time" }, "transcriptUrl": { "type": "string", "description": "NDJSON transcript events: `partial` replaces the open segment's text, `final` commits it,\nand `done` ends the stream with the whole transcript.", "format": "uri" }, "text": { "type": [ "null", "string" ], "description": "The whole transcript, once the session has ended." }, "audioSeconds": { "type": "number", "description": "Seconds of audio received so far; the session is billed on this.", "format": "double" } }, "additionalProperties": false }, "LiveTranscriptionStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/LiveTranscriptionInput" }, "output": { "$ref": "#/components/schemas/LiveTranscriptionOutput" }, "$type": { "enum": [ "liveTranscription" ], "type": "string" } }, "additionalProperties": false } ], "description": "Live transcription" }, "LiveTranscriptionStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/LiveTranscriptionInput" }, "$type": { "enum": [ "liveTranscription" ], "type": "string" } }, "additionalProperties": false } ], "description": "Live transcription" }, "LoadingResourceAvailability": { "allOf": [ { "$ref": "#/components/schemas/ResourceAvailability" }, { "required": [ "progress", "status", "workers" ], "type": "object", "properties": { "progress": { "type": "number", "format": "double" }, "workers": { "type": "integer", "format": "int32" }, "startedAt": { "type": [ "null", "string" ], "format": "date-time" }, "lastProgressAt": { "type": [ "null", "string" ], "format": "date-time" }, "etaSeconds": { "type": [ "null", "integer" ], "format": "int32" }, "lane": { "$ref": "#/components/schemas/Priority" }, "bytesPerSecond": { "type": [ "null", "number" ], "description": "Inferred from reported progress over elapsed time; the worker's byte counters never leave it.", "format": "double" }, "rateLimitBytesPerSecond": { "type": [ "null", "integer" ], "description": "Per-stream ceiling the lane applies to this download. Null when uncapped; boosting to High lifts it.", "format": "int64" }, "status": { "enum": [ "loading" ], "type": "string" } }, "additionalProperties": false } ], "description": "Transferring. No queue position — it is no longer waiting." }, "Ltx23AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine", "storageBuzzPerEpoch" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "storageBuzzPerEpoch": { "type": "number", "format": "double", "readOnly": true }, "ecosystem": { "enum": [ "ltx23" ], "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 LTX 2.3 video models" }, "Ltx25AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine", "storageBuzzPerEpoch" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "storageBuzzPerEpoch": { "type": "number", "format": "double", "readOnly": true }, "ecosystem": { "enum": [ "ltx25" ], "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 LTX 2.5 video models." }, "Ltx2AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine", "storageBuzzPerEpoch" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "storageBuzzPerEpoch": { "type": "number", "format": "double", "readOnly": true }, "ecosystem": { "enum": [ "ltx2" ], "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 LTX2 video models" }, "MageFlowAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "mageflow" ], "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 the Mage-Flow Base model." }, "MaiImageCreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/MaiImageFalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "maiImage" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MaiImageEditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/MaiImageFalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "maxItems": 4, "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": [ "maiImage" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MaiImageFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 5000, "minLength": 3, "type": "string" }, "aspectRatio": { "enum": [ "auto", "21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16" ], "type": "string", "default": "auto" }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "model": { "enum": [ "maiImage" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/MaiImageCreateFalImageGenInput", "editImage": "#/components/schemas/MaiImageEditFalImageGenInput" } } } ] }, "MediaCanvas": { "required": [ "height", "width" ], "type": "object", "properties": { "width": { "type": "integer", "description": "Output width in pixels.", "format": "int32" }, "height": { "type": "integer", "description": "Output height in pixels.", "format": "int32" }, "fps": { "type": "integer", "description": "Output frame rate.", "format": "int32", "default": 30 }, "background": { "type": "string", "description": "Hex background colour (e.g. `\"#000000\"`) painted where no element covers the canvas.\nAn 8-digit `\"#RRGGBBAA\"` value sets the background alpha; anything below fully opaque\nrequires an alpha-capable output container (webp).", "default": "#000000" } }, "additionalProperties": false, "description": "Output canvas geometry. Set this to produce a video composition; leave it null for an\nall-audio mixdown." }, "MediaCaptioningInput": { "required": [ "mediaUrl" ], "type": "object", "properties": { "model": { "enum": [ "joy-caption", "ideogram4" ], "type": "string", "description": "Captioning model and output contract. Use `ideogram4` for structured\nIdeogram 4 JSON captions with normalized bounding boxes.", "default": "joy-caption" }, "mediaUrl": { "type": "string", "description": "The URL of the media to caption (single image or video).", "format": "uri" }, "temperature": { "type": "number", "description": "Sampling temperature for caption generation. Ideogram 4 uses the Qwen model's\nfixed sampling defaults to match AI Toolkit.", "format": "double", "default": 0.5 }, "maxNewTokens": { "type": "integer", "description": "Maximum number of tokens to generate. Ideogram 4 enforces a 3072-token floor.", "format": "int32", "default": 300 }, "customInstructions": { "type": [ "null", "string" ], "description": "Optional extra instructions appended to the captioning prompt to steer\ntone, structure, or formatting. Leave unset for the default caption." } }, "additionalProperties": false, "description": "Represents the input information needed for the MediaCaptioning workflow step." }, "MediaCaptioningOutput": { "required": [ "caption" ], "type": "object", "properties": { "caption": { "type": "string", "description": "The generated caption text for the media." } }, "additionalProperties": false, "description": "Represents the output information returned from the MediaCaptioning workflow step." }, "MediaCaptioningStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MediaCaptioningInput" }, "output": { "$ref": "#/components/schemas/MediaCaptioningOutput" }, "$type": { "enum": [ "mediaCaptioning" ], "type": "string" } }, "additionalProperties": false } ], "description": "Media Captioning" }, "MediaCaptioningStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MediaCaptioningInput" }, "$type": { "enum": [ "mediaCaptioning" ], "type": "string" } }, "additionalProperties": false } ], "description": "Media Captioning" }, "MediaContainer": { "enum": [ "auto", "mp4", "webm", "ogg", "mp3", "webp" ], "type": "string", "description": "Output container for a composition." }, "MediaFit": { "enum": [ "contain", "cover", "stretch" ], "type": "string", "description": "How a video element is fitted into the output canvas when its aspect ratio differs." }, "MediaHashInput": { "required": [ "hashTypes", "mediaUrl" ], "type": "object", "properties": { "mediaUrl": { "type": "string", "description": "The URL of the media to hash (image or video).", "format": "uri" }, "hashTypes": { "type": "array", "items": { "$ref": "#/components/schemas/MediaHashType" }, "description": "The types of hashes to generate." } }, "additionalProperties": false, "description": "Represents the input information needed for the MediaHash workflow step." }, "MediaHashOutput": { "required": [ "hashes" ], "type": "object", "properties": { "hashes": { "type": "object", "additionalProperties": { "type": "string" }, "description": "The generated hashes, keyed by hash type (e.g., \"perceptual\" -> \"12345678\")." } }, "additionalProperties": false, "description": "Represents the output information returned from the MediaHash workflow step." }, "MediaHashStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MediaHashInput" }, "output": { "$ref": "#/components/schemas/MediaHashOutput" }, "$type": { "enum": [ "mediaHash" ], "type": "string" } }, "additionalProperties": false } ], "description": "MediaHash" }, "MediaHashStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MediaHashInput" }, "$type": { "enum": [ "mediaHash" ], "type": "string" } }, "additionalProperties": false } ], "description": "MediaHash" }, "MediaHashType": { "enum": [ "perceptual", "perceptualDct", "perceptualDct256" ], "type": "string", "description": "Represents the type of hash algorithm to use for media content." }, "MediaLayout": { "type": "object", "properties": { "zOrder": { "type": "integer", "description": "Stacking order. Higher values draw on top; ties are broken by element index.", "format": "int32", "default": 0 }, "x": { "type": "integer", "description": "X offset, in pixels, of the element's top-left corner on the canvas.", "format": "int32", "default": 0 }, "y": { "type": "integer", "description": "Y offset, in pixels, of the element's top-left corner on the canvas.", "format": "int32", "default": 0 }, "scale": { "type": "number", "description": "Uniform scale applied to the element before placement. `1.0` keeps the fitted size.", "format": "float", "default": 1 }, "fit": { "$ref": "#/components/schemas/MediaFit" } }, "additionalProperties": false, "description": "Spatial placement of a video element on the output canvas. Ignored for audio elements and\nfor all-audio compositions. Exactly one layout per element." }, "MediaOutputType": { "enum": [ "audio", "video" ], "type": "string", "description": "The kind of output a composition produces. When left unspecified on the input, it is derived\nfrom the elements: video if any element is video (or a canvas is supplied), otherwise audio." }, "MediaRatingInput": { "required": [ "includeAgeClassification", "includeAIRecognition", "includeAnimeBodyAgeClassification", "includeAnimeRecognition", "includeBodyAgeClassification", "includeFaceRecognition", "includeHumanRecognition", "includeJointAgeClassification" ], "type": "object", "properties": { "image": { "type": [ "null", "string" ], "description": "The image to rate. Pre-processed in the API layer — imported into blob storage so the\nworker can pre-fetch it as a declared resource. After processing, contains the blob AIR URL.", "format": "source-image" }, "includeAgeClassification": { "type": "boolean", "description": "Include conditional age-classification details for R-or-higher content in the results.\nThe top-level CSAM signal is evaluated regardless of this setting." }, "includeFaceRecognition": { "type": "boolean", "description": "Include face recognition and similarity analysis in the results" }, "includeAIRecognition": { "type": "boolean", "description": "Include AI vs real image detection in the results" }, "includeAnimeRecognition": { "type": "boolean", "description": "Include anime vs real image detection in the results" }, "includeHumanRecognition": { "type": "boolean", "description": "Include human vs non-human detection in the results" }, "includeBodyAgeClassification": { "type": "boolean", "description": "Include body-only apparent-age and child-risk classification in the results." }, "includeAnimeBodyAgeClassification": { "type": "boolean", "description": "Include anime apparent-age and child-risk classification in the results." }, "includeJointAgeClassification": { "type": "boolean", "description": "Include joint face-and-body apparent-age classification for photo and anime content." } }, "additionalProperties": false, "description": "Represents the input information needed for the MediaRating workflow step." }, "MediaRatingOutput": { "required": [ "isBlocked", "nsfwLevel" ], "type": "object", "properties": { "nsfwLevel": { "$ref": "#/components/schemas/NSFWLevel" }, "blockedReason": { "type": [ "null", "string" ], "description": "The reason the content was blocked, if any." }, "isBlocked": { "type": "boolean", "description": "Whether the content is blocked." }, "labels": { "uniqueItems": true, "type": [ "null", "array" ], "items": { "type": "string" }, "description": "Detected content labels (e.g., \"Animal\", \"Child\", etc.)." }, "ageClassification": { "$ref": "#/components/schemas/AgeClassificationResult" }, "faceRecognition": { "$ref": "#/components/schemas/FaceRecognitionResult" }, "aiRecognition": { "$ref": "#/components/schemas/AIRecognitionResult" }, "animeRecognition": { "$ref": "#/components/schemas/AnimeRecognitionResult" }, "csam": { "type": [ "null", "boolean" ], "description": "Potential CSAM signal from conditional age classification on R-or-higher content.\nNull means the image was below R or age classification failed." }, "humanRecognition": { "$ref": "#/components/schemas/HumanRecognitionResult" }, "bodyAgeClassification": { "$ref": "#/components/schemas/BodyAgeClassificationResult" }, "animeBodyAgeClassification": { "$ref": "#/components/schemas/AnimeBodyAgeClassificationResult" }, "jointAgeClassification": { "$ref": "#/components/schemas/JointAgeClassificationResult" } }, "additionalProperties": false, "description": "Represents the output information returned from the MediaRating workflow step." }, "MediaRatingStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MediaRatingInput" }, "output": { "$ref": "#/components/schemas/MediaRatingOutput" }, "$type": { "enum": [ "mediaRating" ], "type": "string" } }, "additionalProperties": false } ], "description": "MediaRating" }, "MediaRatingStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MediaRatingInput" }, "$type": { "enum": [ "mediaRating" ], "type": "string" } }, "additionalProperties": false } ], "description": "MediaRating" }, "MediaTransformer": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string" } }, "additionalProperties": false, "description": "Base class for per-element transformers applied to a single media element before it is\ncomposited onto the output timeline. Transformers are applied in array order. Extensible:\nadd a derived record plus a `[JsonDerivedType]` entry here.", "discriminator": { "propertyName": "type", "mapping": { "fadeIn": "#/components/schemas/FadeInTransformer", "fadeOut": "#/components/schemas/FadeOutTransformer", "volume": "#/components/schemas/VolumeTransformer", "backgroundRemoval": "#/components/schemas/BackgroundRemovalTransformer" } } }, "MergeField": { "required": [ "$ref", "includeIndex", "path", "reduce" ], "type": "object", "properties": { "$ref": { "type": "string", "description": "The name of the step to read from, or `$arguments` for the workflow's arguments." }, "path": { "type": "string", "description": "The path to the values, e.g. `output.steps[*].output.nsfwLevel`. `[*]` selects the rest of the path\nfrom every item of a list; nested `[*]` flatten into one list." }, "reduce": { "$ref": "#/components/schemas/MergeReducer" }, "by": { "type": [ "null", "string" ], "description": "For `group`: the property of each item to group by." }, "sortBy": { "type": [ "null", "object" ], "additionalProperties": { "type": "integer", "format": "int32" }, "description": "For `top` and `group`: the properties to rank items by, in order, each 1 (ascending) or -1 (descending)." }, "includeIndex": { "type": "boolean", "description": "For `max`, `min`, `top` and `push`: wrap each result as `{ value, index }`, where index is\nthe position of its source item in the first `[*]` of the path." } }, "additionalProperties": false, "description": "One field of a merge: where its values come from and how they are combined." }, "MergeInput": { "required": [ "fields", "onMissing" ], "type": "object", "properties": { "onMissing": { "$ref": "#/components/schemas/MergeMissingBehavior" }, "fields": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/MergeField" }, "description": "The fields of the merged result, keyed by the name each appears under in the output." } }, "additionalProperties": false, "description": "Input for the Merge workflow step." }, "MergeMissingBehavior": { "enum": [ "fail", "partial" ], "type": "string", "description": "How a merge treats a source item that has no output." }, "MergeOutput": { "required": [ "failedCount", "fields", "mergedCount", "sourceCount" ], "type": "object", "properties": { "fields": { "type": "object", "additionalProperties": { "type": "null" }, "description": "The merged values, keyed by the field names of the input. Their shape follows the requested reducers." }, "sourceCount": { "type": "integer", "description": "The number of source items selected by the first `[*]` of the fields' paths.", "format": "int32" }, "mergedCount": { "type": "integer", "description": "The number of source items whose values were merged.", "format": "int32" }, "failedCount": { "type": "integer", "description": "The number of source items left out because they had no output.", "format": "int32" } }, "additionalProperties": false, "description": "Output of the Merge workflow step." }, "MergeReducer": { "enum": [ "max", "min", "sum", "avg", "count", "any", "all", "first", "last", "push", "addToSet", "top", "group" ], "type": "string", "description": "How a merge field combines its values. Null values are skipped, except by `any` and `all`, which count them as false." }, "MergeStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MergeInput" }, "output": { "$ref": "#/components/schemas/MergeOutput" }, "$type": { "enum": [ "merge" ], "type": "string" } }, "additionalProperties": false } ], "description": "Merge" }, "MergeStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MergeInput" }, "$type": { "enum": [ "merge" ], "type": "string" } }, "additionalProperties": false } ], "description": "Merge" }, "MeshyFalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalPolyGenInput" }, { "required": [ "engine", "model", "version" ], "type": "object", "properties": { "version": { "type": [ "null", "string" ], "default": "v6" }, "targetPolycount": { "maximum": 300000, "minimum": 100, "type": "integer", "format": "int32", "default": 30000 }, "topology": { "enum": [ "quad", "triangle" ], "type": "string", "default": "triangle" }, "symmetryMode": { "enum": [ "off", "auto", "on" ], "type": "string", "default": "auto" }, "shouldRemesh": { "type": "boolean", "default": true }, "enablePbr": { "type": "boolean", "default": false }, "texturePrompt": { "maxLength": 600, "type": [ "null", "string" ] }, "enableRigging": { "type": "boolean", "default": false }, "enableAnimation": { "type": "boolean", "default": false }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v6": "#/components/schemas/MeshyV6FalPolyGenInput", "v7": "#/components/schemas/MeshyV7FalPolyGenInput" } } } ], "description": "Model-level base for Meshy 3D generation (via FAL).\nThe version derived type carries the operation-level discriminator.\nPayloads without a version deserialize as v6." }, "MeshyImageTo3DFalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/MeshyV6FalPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation", "version" ], "type": "object", "properties": { "imageUrl": { "minLength": 1, "type": "string" }, "shouldTexture": { "type": "boolean", "default": true }, "operation": { "enum": [ "imageTo3D" ], "type": "string" }, "version": { "enum": [ "v6" ], "type": "string" }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MeshyTextTo3DFalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/MeshyV6FalPolyGenInput" }, { "required": [ "engine", "model", "operation", "prompt", "version" ], "type": "object", "properties": { "prompt": { "maxLength": 600, "minLength": 1, "type": "string" }, "mode": { "enum": [ "preview", "full" ], "type": "string", "default": "full" }, "enablePromptExpansion": { "type": "boolean", "default": false }, "operation": { "enum": [ "textTo3D" ], "type": "string" }, "version": { "enum": [ "v6" ], "type": "string" }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MeshyV6FalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/MeshyFalPolyGenInput" }, { "required": [ "engine", "model", "operation", "version" ], "type": "object", "properties": { "operation": { "type": "string" }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "version": { "enum": [ "v6" ], "type": "string" }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "textTo3D": "#/components/schemas/MeshyTextTo3DFalPolyGenInput", "imageTo3D": "#/components/schemas/MeshyImageTo3DFalPolyGenInput" } } } ], "description": "Version-level base for Meshy v6.\nDiscriminator: operation (textTo3D, imageTo3D)\nFAL Endpoints: fal-ai/meshy/v6/{text-to-3d,image-to-3d}" }, "MeshyV7FalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/MeshyFalPolyGenInput" }, { "required": [ "engine", "model", "operation", "version" ], "type": "object", "properties": { "operation": { "type": "string" }, "shouldTexture": { "type": "boolean", "default": true }, "poseMode": { "enum": [ "none", "a-pose", "t-pose" ], "type": "string", "description": "Pose to generate the character in. \"none\" lets Meshy pick.", "default": "none" }, "textureImageUrl": { "type": [ "null", "string" ], "description": "2D image guiding the texturing process." }, "riggingHeightMeters": { "maximum": 100, "minimum": 0.01, "type": "number", "description": "Approximate character height in meters. Only used when enableRigging is set.", "format": "double", "default": 1.7 }, "animationActionId": { "maximum": 696, "minimum": 0, "type": "integer", "description": "Animation preset from Meshy's library (0 is \"Idle\"); see https://docs.meshy.ai/en/api/animation-library.\nOnly used when Civitai.Orchestration.Grains.Workflows.Steps.PolyGen.Fal.MeshyFalPolyGenInput.EnableAnimation is set.", "format": "int32", "default": 92 }, "version": { "enum": [ "v7" ], "type": "string" }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "imageTo3D": "#/components/schemas/MeshyV7ImageTo3DFalPolyGenInput", "multiImageTo3D": "#/components/schemas/MeshyV7MultiImageTo3DFalPolyGenInput" } } } ], "description": "Version-level base for Meshy v7.\nDiscriminator: operation (imageTo3D, multiImageTo3D)\nFAL Endpoints: meshy/v7/{image-to-3d,multi-image-to-3d}" }, "MeshyV7ImageTo3DFalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/MeshyV7FalPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation", "version" ], "type": "object", "properties": { "imageUrl": { "minLength": 1, "type": "string" }, "ultraMode": { "type": "boolean", "description": "Higher-fidelity geometry with finer surface detail.", "default": false }, "modelType": { "enum": [ "standard", "lowpoly" ], "type": "string", "description": "\"lowpoly\" makes Meshy ignore the remesh controls (topology, targetPolycount, shouldRemesh).", "default": "standard" }, "operation": { "enum": [ "imageTo3D" ], "type": "string" }, "version": { "enum": [ "v7" ], "type": "string" }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MeshyV7MultiImageTo3DFalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/MeshyV7FalPolyGenInput" }, { "required": [ "engine", "imageUrls", "model", "operation", "version" ], "type": "object", "properties": { "imageUrls": { "maxItems": 4, "minItems": 1, "type": "array", "items": { "type": "string" }, "description": "1–4 views of the same object. Meshy has no ultra or lowpoly mode on this operation." }, "operation": { "enum": [ "multiImageTo3D" ], "type": "string" }, "version": { "enum": [ "v7" ], "type": "string" }, "model": { "enum": [ "meshy" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Metric3dBackbone": { "enum": [ "vit-small", "vit-large", "vit-giant2" ], "type": "string" }, "MetricsResponse": { "required": [ "asOf", "canceledRate", "requests", "userErrorRate", "window" ], "type": "object", "properties": { "window": { "type": "string", "description": "The window these cover: 1h, 24h or 7d." }, "asOf": { "type": "string", "description": "When this was computed. Served stale while a refresh runs.", "format": "date-time" }, "requests": { "type": "integer", "description": "Requests that reached a final state in the window, cancellations included.", "format": "int64" }, "successRate": { "type": [ "null", "number" ], "description": "Succeeded over non-canceled requests, 0..1. Null when everything in the window was\ncanceled — which is not the same as a success rate of zero.", "format": "double" }, "canceledRate": { "type": "number", "description": "Fraction canceled by callers. Reported apart from success: cancelling is not a failure.", "format": "double" }, "userErrorRate": { "type": "number", "description": "Fraction that failed on the user's input rather than the service — most often a provider\ncontent-policy rejection (e.g. asking a provider that forbids it for mature content). Kept\nout of the success rate so a service isn't marked unhealthy for refusing disallowed requests.", "format": "double" }, "costBuzz": { "$ref": "#/components/schemas/PercentilesResponse" }, "latencySeconds": { "$ref": "#/components/schemas/PercentilesResponse" } }, "additionalProperties": false }, "MingAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "ming" ], "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 LoRA training for Ming Image 0.1 Design." }, "MiniMaxH3AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine", "storageBuzzPerEpoch" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "storageBuzzPerEpoch": { "type": "number", "format": "double", "readOnly": true }, "ecosystem": { "enum": [ "minimaxh3" ], "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 the MiniMax H3 base (FL2VA) model." }, "MiniMaxH3MaxImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/MiniMaxH3MaxVideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "firstFrameImage": { "type": [ "null", "string" ], "description": "Optional first frame. If omitted, the last frame sets the canvas. With neither, FAL generates from text at 16:9.", "format": "source-image" }, "lastFrameImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "targetAudio": { "type": [ "null", "string" ], "description": "HTTP(S) URL of a soundtrack, at least 2 seconds and at most 15 MB. Requires duration >= 2.", "format": "uri" }, "operation": { "enum": [ "imageToVideo" ], "type": "string" }, "engine": { "enum": [ "minimax-h3-max" ], "type": "string" } }, "additionalProperties": false } ] }, "MiniMaxH3MaxReferenceToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/MiniMaxH3MaxVideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "adaptive", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "default": "adaptive" }, "referenceImages": { "maxItems": 9, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "referenceVideos": { "maxItems": 3, "type": "array", "items": { "type": "string", "format": "uri" }, "description": "HTTP(S) clips, each 2-15 seconds, combined at most 15 seconds." }, "referenceAudios": { "maxItems": 3, "type": "array", "items": { "type": "string", "format": "uri" }, "description": "HTTP(S) audio clips, each 2-15 seconds, combined at most 15 seconds." }, "firstFrameImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "lastFrameImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "middleFrameImage": { "type": [ "null", "string" ], "description": "Requires first and last frames, middleFrameTime, and 480P or 768P.", "format": "source-image" }, "middleFrameTime": { "type": [ "null", "number" ], "description": "Seconds from the start, rounded to 24 fps. Must fall strictly inside the requested duration.", "format": "double" }, "operation": { "enum": [ "referenceToVideo" ], "type": "string" }, "engine": { "enum": [ "minimax-h3-max" ], "type": "string" } }, "additionalProperties": false } ], "description": "Max only. Up to 9 images, 3 videos and 3 audio clips, at most 12 combined. Reference charges share a 4096-token allowance." }, "MiniMaxH3MaxTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/MiniMaxH3MaxVideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "21:9", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string", "default": "16:9" }, "targetAudio": { "type": [ "null", "string" ], "description": "HTTP(S) URL of a soundtrack, at least 2 seconds and at most 15 MB. Requires duration >= 2.", "format": "uri" }, "operation": { "enum": [ "textToVideo" ], "type": "string" }, "engine": { "enum": [ "minimax-h3-max" ], "type": "string" } }, "additionalProperties": false } ] }, "MiniMaxH3MaxVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "textToVideo" }, "model": { "enum": [ "max", "turbo" ], "type": "string", "default": "max" }, "duration": { "maximum": 15, "minimum": 0.92, "type": "number", "description": "Requested seconds. FAL may return up to about 0.7 additional seconds.", "format": "double", "default": 5 }, "resolution": { "enum": [ "480P", "768P", "1080P" ], "type": "string", "default": "768P" }, "promptExpansionMode": { "enum": [ "disabled", "balanced", "quality" ], "type": "string", "default": "balanced" }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "enableSafetyChecker": { "type": "boolean", "default": true }, "engine": { "enum": [ "minimax-h3-max" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "textToVideo": "#/components/schemas/MiniMaxH3MaxTextToVideoInput", "imageToVideo": "#/components/schemas/MiniMaxH3MaxImageToVideoInput", "referenceToVideo": "#/components/schemas/MiniMaxH3MaxReferenceToVideoInput" } } } ], "description": "MiniMax H3 Max and H3 Max Turbo core generation through FAL." }, "MiniMaxH3VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "aspectRatio", "duration", "engine", "resolution" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "adaptive", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16" ], "type": "string" }, "duration": { "maximum": 15, "minimum": 5, "type": "integer", "format": "int32" }, "resolution": { "enum": [ "2K" ], "type": "string" }, "firstFrameImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "lastFrameImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "referenceImages": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "referenceVideos": { "type": "array", "items": { "type": "string", "format": "uri" } }, "referenceAudios": { "type": "array", "items": { "type": "string", "format": "uri" } }, "watermark": { "type": "boolean", "default": false }, "referenceVideoSeconds": { "type": "integer", "description": "Measured total duration of Civitai.Orchestration.Grains.Workflows.Steps.VideoGen.MiniMaxH3VideoGenInput.ReferenceVideos, filled in during initialization.\nMiniMax bills uploaded reference video at the same per-second rate as output, so this has to\nbe known before the estimate is charged.", "format": "int32" }, "engine": { "enum": [ "minimax-h3" ], "type": "string" } }, "additionalProperties": false } ] }, "MiniMaxMusic3Input": { "required": [ "caption", "lyrics", "seed" ], "type": "object", "properties": { "caption": { "type": "string", "description": "Structured music description. For best results use Global Metadata, Vocal Details,\nand Arrangement sections." }, "lyrics": { "type": "string", "description": "Lyrics with section markers such as [Intro], [Verse], [Chorus], and [Outro]." }, "seed": { "type": "integer", "description": "Random seed for reproducible generation.", "format": "int32" }, "maxDuration": { "maximum": 360, "minimum": 0.03999999910593033, "type": "number", "description": "Maximum generated song duration in seconds. The model may end the song earlier when\nthe requested lyric structure is complete.", "format": "float", "default": 120 }, "steps": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Number of diffusion sampling steps.", "format": "int32", "default": 30 }, "cfg": { "maximum": 100, "minimum": 0, "type": "number", "description": "Classifier-free guidance scale used by both text encoding and sampling.", "format": "float", "default": 1.7 }, "topK": { "maximum": 16384, "minimum": 1, "type": "integer", "description": "Top-k sampling limit used by the MiniMax music text encoder.", "format": "int32", "default": 50 }, "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 override." }, "textEncoder": { "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 MiniMax text encoder override." }, "vae": { "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 audio VAE override." }, "loras": { "type": "object", "additionalProperties": { "type": "number", "format": "double" }, "description": "Optional LoRAs to apply to both the diffusion model and MiniMax text encoder.\nCompatibility with the selected base resources is the caller's responsibility." } }, "additionalProperties": false, "description": "Input parameters for MiniMax Music 3 text-to-music generation." }, "MiniMaxMusic3Output": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/AudioBlob" } }, "additionalProperties": false, "description": "Output from MiniMax Music 3 generation." }, "MiniMaxMusic3Step": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MiniMaxMusic3Input" }, "output": { "$ref": "#/components/schemas/MiniMaxMusic3Output" }, "$type": { "enum": [ "miniMaxMusic3" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a complete song from a structured caption and lyrics with MiniMax Music 3." }, "MiniMaxMusic3StepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/MiniMaxMusic3Input" }, "$type": { "enum": [ "miniMaxMusic3" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a complete song from a structured caption and lyrics with MiniMax Music 3." }, "MiniMaxVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine" ], "type": "object", "properties": { "model": { "$ref": "#/components/schemas/MiniMaxVideoGenModel" }, "enablePromptEnhancer": { "type": "boolean", "default": true }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "engine": { "enum": [ "minimax" ], "type": "string" } }, "additionalProperties": false } ] }, "MiniMaxVideoGenModel": { "enum": [ "hailou" ], "type": "string" }, "MochiVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "seed" ], "type": "object", "properties": { "seed": { "maximum": 2147483647, "minimum": -1, "type": "integer", "format": "int64" }, "enablePromptEnhancer": { "type": "boolean", "default": true }, "engine": { "enum": [ "mochi" ], "type": "string" } }, "additionalProperties": false } ] }, "ModalitiesResponse": { "required": [ "input", "output" ], "type": "object", "properties": { "input": { "type": "array", "items": { "type": "string" } }, "output": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "Model3DBlob": { "allOf": [ { "$ref": "#/components/schemas/Blob" }, { "required": [ "format", "type" ], "type": "object", "properties": { "format": { "type": "string", "description": "File format of the 3D model (e.g. \"glb\", \"fbx\", \"obj\", \"usdz\")." }, "type": { "enum": [ "model3d" ], "type": "string" } }, "additionalProperties": false } ] }, "Model3DPreviewCameraPose": { "type": "object", "properties": { "name": { "type": [ "null", "string" ] }, "yaw": { "type": "number", "format": "double", "default": 0 }, "pitch": { "type": "number", "format": "double", "default": 0 }, "distance": { "type": "number", "format": "double", "default": 2.8 }, "fov": { "type": "number", "format": "double", "default": 45 } }, "additionalProperties": false }, "Model3DPreviewInput": { "required": [ "cameraPoses", "model" ], "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" }, "width": { "maximum": 4096, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "height": { "maximum": 4096, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "outputFormat": { "$ref": "#/components/schemas/ImageGenOutputFormat" }, "cameraPoses": { "type": "array", "items": { "$ref": "#/components/schemas/Model3DPreviewCameraPose" } }, "format": { "type": [ "null", "string" ] }, "background": { "pattern": "^#[0-9a-fA-F]{6}$", "type": "string", "default": "#D9D9D9" } }, "additionalProperties": false }, "Model3DPreviewOutput": { "required": [ "images" ], "type": "object", "properties": { "images": { "type": "array", "items": { "$ref": "#/components/schemas/ImageBlob" } } }, "additionalProperties": false }, "Model3DPreviewStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/Model3DPreviewInput" }, "output": { "$ref": "#/components/schemas/Model3DPreviewOutput" }, "$type": { "enum": [ "model3DPreview" ], "type": "string" } }, "additionalProperties": false } ], "description": "3D model preview" }, "Model3DPreviewStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/Model3DPreviewInput" }, "$type": { "enum": [ "model3DPreview" ], "type": "string" } }, "additionalProperties": false } ], "description": "3D model preview" }, "ModelClamScanInput": { "required": [ "model" ], "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 AIR of the model file to scan." } }, "additionalProperties": false, "description": "Represents the input information needed for the ModelClamScan workflow step." }, "ModelClamScanOutput": { "type": "object", "properties": { "exitCode": { "type": [ "null", "integer" ], "description": "The ClamAV scan exit code.", "format": "int32" }, "output": { "type": [ "null", "string" ], "description": "The raw ClamAV scan output." }, "status": { "$ref": "#/components/schemas/ModelClamScanStatus" }, "infected": { "type": [ "null", "boolean" ], "description": "True when ClamAV reported one or more infected files (exit code 1)." }, "infectedFileCount": { "type": [ "null", "integer" ], "description": "Number of infected files parsed from the ClamAV scan summary.", "format": "int32" }, "scannedFileCount": { "type": [ "null", "integer" ], "description": "Number of files scanned, parsed from the ClamAV scan summary.", "format": "int32" } }, "additionalProperties": false, "description": "Represents the output information returned from the ModelClamScan workflow step." }, "ModelClamScanStatus": { "enum": [ "clean", "infected", "timeout", "error" ], "type": "string" }, "ModelClamScanStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelClamScanInput" }, "output": { "$ref": "#/components/schemas/ModelClamScanOutput" }, "$type": { "enum": [ "modelClamScan" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelClamScan" }, "ModelClamScanStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelClamScanInput" }, "$type": { "enum": [ "modelClamScan" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelClamScan" }, "ModelHashInput": { "required": [ "model" ], "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 AIR of the model file to hash." } }, "additionalProperties": false, "description": "Represents the input information needed for the ModelHash workflow step." }, "ModelHashOutput": { "type": "object", "properties": { "sha256": { "type": [ "null", "string" ], "description": "SHA256 hash of the full file." }, "autoV1": { "type": [ "null", "string" ], "description": "AutoV1 short hash (8 chars of SHA256 over a 64 KB block starting at 1 MB)." }, "autoV2": { "type": [ "null", "string" ], "description": "AutoV2 short hash (first 10 chars of SHA256)." }, "autoV3": { "type": [ "null", "string" ], "description": "AutoV3 hash (SHA256 of the file with safetensors header metadata stripped)." }, "blake3": { "type": [ "null", "string" ], "description": "Blake3 hash of the full file." }, "crc32": { "type": [ "null", "string" ], "description": "CRC32 of the full file." } }, "additionalProperties": false, "description": "Represents the output information returned from the ModelHash workflow step." }, "ModelHashStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelHashInput" }, "output": { "$ref": "#/components/schemas/ModelHashOutput" }, "$type": { "enum": [ "modelHash" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelHash" }, "ModelHashStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelHashInput" }, "$type": { "enum": [ "modelHash" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelHash" }, "ModelParseMetadataInput": { "required": [ "model" ], "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 AIR of the model file to read metadata from." } }, "additionalProperties": false, "description": "Represents the input information needed for the ModelParseMetadata workflow step." }, "ModelParseMetadataOutput": { "type": "object", "properties": { "metadata": { "type": [ "null", "string" ], "description": "The `__metadata__` object from the safetensors header as a JSON string,\nor null when the model is not a safetensors file, the header could not be\nparsed, or no `__metadata__` object is present." } }, "additionalProperties": false, "description": "Represents the output information returned from the ModelParseMetadata workflow step." }, "ModelParseMetadataStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelParseMetadataInput" }, "output": { "$ref": "#/components/schemas/ModelParseMetadataOutput" }, "$type": { "enum": [ "modelParseMetadata" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelParseMetadata" }, "ModelParseMetadataStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelParseMetadataInput" }, "$type": { "enum": [ "modelParseMetadata" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelParseMetadata" }, "ModelPickleScanInput": { "required": [ "model" ], "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 AIR of the model file to scan." } }, "additionalProperties": false, "description": "Represents the input information needed for the ModelPickleScan workflow step." }, "ModelPickleScanOutput": { "type": "object", "properties": { "exitCode": { "type": [ "null", "integer" ], "description": "The picklescan exit code.", "format": "int32" }, "output": { "type": [ "null", "string" ], "description": "The raw picklescan output." }, "globalImports": { "uniqueItems": true, "type": [ "null", "array" ], "items": { "type": "string" }, "description": "Global imports discovered during pickle scanning." }, "dangerousImports": { "uniqueItems": true, "type": [ "null", "array" ], "items": { "type": "string" }, "description": "Dangerous imports discovered during pickle scanning." }, "status": { "$ref": "#/components/schemas/ModelPickleScanStatus" }, "dangerousImportsFound": { "type": [ "null", "boolean" ], "description": "True when one or more dangerous imports were detected." }, "skipped": { "type": [ "null", "boolean" ], "description": "True when picklescan was skipped (e.g. file is safetensors and cannot contain pickled code)." }, "skipReason": { "type": [ "null", "string" ], "description": "Reason picklescan was skipped, if applicable. Examples: \"safetensors\", \"safetensors-extension\"." }, "scannedFileCount": { "type": [ "null", "integer" ], "description": "Number of files scanned, parsed from the picklescan summary.", "format": "int32" }, "infectedFileCount": { "type": [ "null", "integer" ], "description": "Number of infected files reported by picklescan.", "format": "int32" }, "dangerousGlobalCount": { "type": [ "null", "integer" ], "description": "Number of dangerous globals reported by picklescan.", "format": "int32" } }, "additionalProperties": false, "description": "Represents the output information returned from the ModelPickleScan workflow step." }, "ModelPickleScanStatus": { "enum": [ "clean", "dangerousImportsFound", "skippedSafetensors", "skippedGguf", "skipped", "parseError", "error" ], "type": "string" }, "ModelPickleScanStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelPickleScanInput" }, "output": { "$ref": "#/components/schemas/ModelPickleScanOutput" }, "$type": { "enum": [ "modelPickleScan" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelPickleScan" }, "ModelPickleScanStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ModelPickleScanInput" }, "$type": { "enum": [ "modelPickleScan" ], "type": "string" } }, "additionalProperties": false } ], "description": "ModelPickleScan" }, "MuseImageCreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/MuseImageFalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "museImage" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MuseImageEditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/MuseImageFalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "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" } }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "museImage" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "MuseImageFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 4000, "minLength": 1, "type": "string" }, "aspectRatio": { "enum": [ "auto", "21:9", "16:9", "4:3", "3:2", "1:1", "2:3", "3:4", "9:16", "9:21" ], "type": "string", "default": "auto" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "model": { "enum": [ "museImage" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/MuseImageCreateFalImageGenInput", "editImage": "#/components/schemas/MuseImageEditFalImageGenInput" } } } ] }, "MusubiImageResourceTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/ImageResourceTrainingInput" }, { "required": [ "engine" ], "type": "object", "properties": { "epochs": { "maximum": 20, "minimum": 0, "type": "integer", "description": "Number of training epochs. An epoch is one complete pass through the training dataset.\nMaximum of 20 epochs can be specified.", "format": "int32", "default": 5 }, "resolution": { "maximum": 1024, "minimum": 512, "type": [ "null", "integer" ], "description": "Specify the maximum resolution of training images. If the training images exceed the resolution specified here, they will be scaled down to this resolution", "format": "int32" }, "enableBucket": { "type": "boolean", "description": "Sorts images into buckets by size for the purposes of training. If your training images are all the same size, you can turn this option off, but leaving it on has no effect.", "default": true }, "unetLR": { "maximum": 1, "minimum": 0, "type": "number", "description": "Sets the learning rate for U-Net. This is the learning rate when performing additional learning on each attention block (and other blocks depending on the setting) in U-Net", "format": "double", "default": 0.00005 }, "lrScheduler": { "enum": [ "constant", "cosine", "cosine_with_restarts", "linear" ], "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." }, "lrSchedulerNumCycles": { "maximum": 4, "minimum": 1, "type": "integer", "description": "This option specifies how many cycles the scheduler runs during training. It is only used when \"cosine_with_restarts\" or \"polynomial\" is used as the scheduler.", "format": "int32", "default": 3 }, "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" }, "optimizerType": { "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\nis \"AdamW8bit\" or \"Adafactor\" for SDXL." }, "targetSteps": { "type": [ "null", "integer" ], "format": "int32", "readOnly": true }, "engine": { "enum": [ "musubi" ], "type": "string" } }, "additionalProperties": false } ] }, "NSFWLevel": { "enum": [ "pg", "pg13", "r", "x", "xxx", "na" ], "type": "string" }, "NanoBanana21ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GoogleImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "prompt": { "maxLength": 50000, "minLength": 0, "type": "string" }, "aspectRatio": { "enum": [ "21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16", "1:4", "4:1", "1:8", "8:1", "9:21" ], "type": "string", "default": "1:1" }, "numImages": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "resolution": { "enum": [ "1K", "2K", "4K" ], "type": "string", "default": "1K" }, "images": { "maxItems": 14, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "model": { "enum": [ "nano-banana-2.1" ], "type": "string" }, "engine": { "enum": [ "google" ], "type": "string" } }, "additionalProperties": false } ] }, "NanoBanana2ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GoogleImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "prompt": { "maxLength": 50000, "minLength": 0, "type": "string" }, "aspectRatio": { "enum": [ "21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16" ], "type": "string", "default": "1:1" }, "numImages": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "resolution": { "enum": [ "1K", "2K", "4K" ], "type": "string", "default": "1K" }, "images": { "maxItems": 10, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "enableWebSearch": { "type": "boolean", "default": false }, "enableGoogleSearch": { "type": "boolean", "default": false }, "model": { "enum": [ "nano-banana-2" ], "type": "string" }, "engine": { "enum": [ "google" ], "type": "string" } }, "additionalProperties": false } ] }, "NanoBanana2LiteImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GoogleImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "prompt": { "maxLength": 50000, "minLength": 0, "type": "string" }, "aspectRatio": { "enum": [ "21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16" ], "type": "string", "default": "1:1" }, "numImages": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "images": { "maxItems": 10, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "model": { "enum": [ "nano-banana-2-lite" ], "type": "string" }, "engine": { "enum": [ "google" ], "type": "string" } }, "additionalProperties": false } ] }, "NanoBananaProImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/GoogleImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "prompt": { "maxLength": 50000, "minLength": 0, "type": "string" }, "aspectRatio": { "enum": [ "21:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16" ], "type": "string", "default": "1:1" }, "numImages": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "resolution": { "enum": [ "1K", "2K", "4K" ], "type": "string", "default": "1K" }, "images": { "maxItems": 10, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "model": { "enum": [ "nano-banana-pro" ], "type": "string" }, "engine": { "enum": [ "google" ], "type": "string" } }, "additionalProperties": false } ] }, "OmniSvgImageToSvgInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyImageToSvgInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "model": { "enum": [ "omnisvg-4b", "omnisvg-8b" ], "type": "string", "default": "omnisvg-4b" }, "maxLength": { "maximum": 2048, "minimum": 256, "type": "integer", "format": "int32", "default": 1536 }, "seed": { "maximum": 2147483647, "minimum": 0, "type": [ "null", "integer" ], "format": "int64" }, "topP": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0.9 }, "topK": { "maximum": 1000, "minimum": 1, "type": "integer", "format": "int32", "default": 50 }, "temperature": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0.3 }, "repetitionPenalty": { "maximum": 10, "minimum": 0, "type": "number", "format": "double", "default": 1.05 }, "prompt": { "maxLength": 1000, "minLength": 0, "type": [ "null", "string" ] }, "ecosystem": { "enum": [ "omnisvg" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "OmniVoiceTextToSpeechInput": { "allOf": [ { "$ref": "#/components/schemas/VllmOmniTextToSpeechInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "refAudioUrl": { "type": [ "null", "string" ], "description": "Reference audio AIR URN or external URL for voice cloning.", "format": "uri" }, "refText": { "type": [ "null", "string" ], "description": "Transcript of the reference audio." }, "instruct": { "type": [ "null", "string" ], "description": "Optional voice/style instruction." }, "ecosystem": { "enum": [ "omnivoice" ], "type": "string" }, "engine": { "enum": [ "vllm-omni" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIDallE2CreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIDallE2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "background": { "enum": [ "auto", "transparent", "opaque" ], "type": "string", "default": "auto" }, "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "dall-e-2" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIDallE2EditImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIDallE2ImageGenInput" }, { "required": [ "engine", "image", "model", "operation" ], "type": "object", "properties": { "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "mask": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "dall-e-2" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIDallE2ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt", "size" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 1000, "minLength": 0, "type": "string" }, "size": { "enum": [ "256x256", "512x512", "1024x1024" ], "type": "string" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "model": { "enum": [ "dall-e-2" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIDallE2CreateImageGenInput", "editImage": "#/components/schemas/OpenAIDallE2EditImageInput" } } } ] }, "OpenAIDallE3CreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIDallE3ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "background": { "enum": [ "auto", "transparent", "opaque" ], "type": "string", "default": "auto" }, "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "dall-e-3" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIDallE3ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt", "size" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 4000, "minLength": 0, "type": "string" }, "size": { "enum": [ "1024x1024", "1792x1024", "1024x1792" ], "type": "string" }, "style": { "enum": [ "natural", "vivid" ], "type": "string", "default": "vivid" }, "quality": { "enum": [ "auto", "hd", "standard" ], "type": "string", "default": "auto" }, "model": { "enum": [ "dall-e-3" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIDallE3CreateImageGenInput" } } } ] }, "OpenAIGpt15CreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt15ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-1.5" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt15EditImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt15ImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "inputFidelity": { "enum": [ "low", "high" ], "type": "string", "description": "Input fidelity: low or high", "default": "high" }, "size": { "enum": [ "auto", "1024x1024", "1536x1024", "1024x1536" ], "type": "string", "description": "Image size for edit mode: auto, 1024x1024, 1536x1024, or 1024x1536", "default": "auto" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-1.5" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt15ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 32000, "minLength": 0, "type": "string" }, "size": { "enum": [ "1024x1024", "1536x1024", "1024x1536" ], "type": "string", "default": "1024x1024" }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "background": { "enum": [ "auto", "transparent", "opaque" ], "type": "string", "default": "auto" }, "quality": { "enum": [ "low", "medium", "high" ], "type": "string", "default": "high" }, "model": { "enum": [ "gpt-image-1.5" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIGpt15CreateImageInput", "editImage": "#/components/schemas/OpenAIGpt15EditImageInput" } } } ] }, "OpenAIGpt1CreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt1ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-1" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt1EditImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt1ImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "mask": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-1" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt1ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 32000, "minLength": 0, "type": "string" }, "size": { "enum": [ "1024x1024", "1536x1024", "1024x1536" ], "type": "string", "default": "1024x1024" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "background": { "enum": [ "auto", "transparent", "opaque" ], "type": "string", "default": "opaque" }, "quality": { "enum": [ "auto", "high", "medium", "low" ], "type": [ "null", "string" ], "default": "auto" }, "model": { "enum": [ "gpt-image-1" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIGpt1CreateImageInput", "editImage": "#/components/schemas/OpenAIGpt1EditImageInput" } } } ] }, "OpenAIGpt25FlareCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt25FlareImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-2.5-flare" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt25FlareEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt25FlareImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "maskImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "width": { "type": [ "null", "integer" ], "description": "When null, fal infers output size from the input images (image_size: \"auto\").\nBoth Width and Height must be set together, or both null.", "format": "int32" }, "height": { "type": [ "null", "integer" ], "description": "When null, fal infers output size from the input images (image_size: \"auto\").\nBoth Width and Height must be set together, or both null.", "format": "int32" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-2.5-flare" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt25FlareImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 32000, "minLength": 0, "type": "string" }, "width": { "maximum": 3840, "minimum": 256, "type": [ "null", "integer" ], "format": "int32", "default": 1024 }, "height": { "maximum": 3840, "minimum": 256, "type": [ "null", "integer" ], "format": "int32", "default": 1024 }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "quality": { "enum": [ "low", "medium", "high", "xhigh", "max" ], "type": "string", "default": "high" }, "model": { "enum": [ "gpt-image-2.5-flare" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIGpt25FlareCreateImageInput", "editImage": "#/components/schemas/OpenAIGpt25FlareEditImageInput" } } } ], "description": "GPT-Image-2.5 \"flare\": the faster of the two variants.\nFAL endpoints: openai/gpt-image-2.5/flare/text-to-image[/edit]" }, "OpenAIGpt25SunburstCreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt25SunburstImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-2.5-sunburst" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt25SunburstEditImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt25SunburstImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "maskImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "width": { "type": [ "null", "integer" ], "description": "When null, fal infers output size from the input images (image_size: \"auto\").\nBoth Width and Height must be set together, or both null.", "format": "int32" }, "height": { "type": [ "null", "integer" ], "description": "When null, fal infers output size from the input images (image_size: \"auto\").\nBoth Width and Height must be set together, or both null.", "format": "int32" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-2.5-sunburst" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt25SunburstImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 32000, "minLength": 0, "type": "string" }, "width": { "maximum": 3840, "minimum": 256, "type": [ "null", "integer" ], "format": "int32", "default": 1024 }, "height": { "maximum": 3840, "minimum": 256, "type": [ "null", "integer" ], "format": "int32", "default": 1024 }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "quality": { "enum": [ "low", "medium", "high", "xhigh", "max" ], "type": "string", "default": "high" }, "model": { "enum": [ "gpt-image-2.5-sunburst" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIGpt25SunburstCreateImageInput", "editImage": "#/components/schemas/OpenAIGpt25SunburstEditImageInput" } } } ], "description": "GPT-Image-2.5 \"sunburst\": higher fidelity on intricate detail, slower.\nFAL endpoints: openai/gpt-image-2.5/sunburst/text-to-image[/edit]" }, "OpenAIGpt2CreateImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt2ImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-2" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt2EditImageInput": { "allOf": [ { "$ref": "#/components/schemas/OpenAIGpt2ImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "maskImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "width": { "type": [ "null", "integer" ], "description": "When null, fal infers output size from the input images (image_size: \"auto\").\nWhen set, the requested width is sent to fal as image_size.width.\nBoth Width and Height must be set together, or both null.", "format": "int32" }, "height": { "type": [ "null", "integer" ], "description": "When null, fal infers output size from the input images (image_size: \"auto\").\nWhen set, the requested height is sent to fal as image_size.height.\nBoth Width and Height must be set together, or both null.", "format": "int32" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "gpt-image-2" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false } ] }, "OpenAIGpt2ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/OpenApiImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 32000, "minLength": 0, "type": "string" }, "width": { "maximum": 3840, "minimum": 256, "type": [ "null", "integer" ], "format": "int32", "default": 1024 }, "height": { "maximum": 3840, "minimum": 256, "type": [ "null", "integer" ], "format": "int32", "default": 1024 }, "quantity": { "maximum": 4, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "quality": { "enum": [ "low", "medium", "high" ], "type": "string", "default": "high" }, "model": { "enum": [ "gpt-image-2" ], "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/OpenAIGpt2CreateImageInput", "editImage": "#/components/schemas/OpenAIGpt2EditImageInput" } } } ] }, "OpenApiImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "model", "prompt" ], "type": "object", "properties": { "model": { "type": "string" }, "prompt": { "type": "string" }, "engine": { "enum": [ "openai" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "gpt-image-1": "#/components/schemas/OpenAIGpt1ImageGenInput", "gpt-image-1.5": "#/components/schemas/OpenAIGpt15ImageGenInput", "gpt-image-2": "#/components/schemas/OpenAIGpt2ImageGenInput", "gpt-image-2.5-flare": "#/components/schemas/OpenAIGpt25FlareImageGenInput", "gpt-image-2.5-sunburst": "#/components/schemas/OpenAIGpt25SunburstImageGenInput", "dall-e-2": "#/components/schemas/OpenAIDallE2ImageGenInput", "dall-e-3": "#/components/schemas/OpenAIDallE3ImageGenInput" } } } ] }, "OutputFormat": { "enum": [ "png", "jpeg", "webP" ], "type": "string" }, "PaginatedResponseOfServiceResponse": { "required": [ "items", "limit", "offset", "totalCount" ], "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponse" } }, "totalCount": { "type": "integer", "format": "int32" }, "limit": { "type": "integer", "format": "int32" }, "offset": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "PercentilesResponse": { "required": [ "p50", "p80", "p95" ], "type": "object", "properties": { "p50": { "type": "number", "format": "double" }, "p80": { "type": "number", "format": "double" }, "p95": { "type": "number", "format": "double" } }, "additionalProperties": false }, "PngOutputFormat": { "allOf": [ { "$ref": "#/components/schemas/ImageOutputFormat" }, { "required": [ "format" ], "type": "object", "properties": { "format": { "enum": [ "png" ], "type": "string" } }, "additionalProperties": false } ], "description": "PNG output format configuration." }, "PolyGenInput": { "required": [ "engine" ], "type": "object", "properties": { "engine": { "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "engine", "mapping": { "comfy": "#/components/schemas/ComfyPolyGenInput", "fal": "#/components/schemas/FalPolyGenInput", "unirig": "#/components/schemas/UniRigPolyGenInput" } } }, "PolyGenOutput": { "required": [ "model" ], "type": "object", "properties": { "model": { "$ref": "#/components/schemas/Model3DBlob" }, "fbxModel": { "$ref": "#/components/schemas/Model3DBlob" }, "thumbnail": { "$ref": "#/components/schemas/ImageBlob" }, "riggedModel": { "$ref": "#/components/schemas/Model3DBlob" }, "riggedFbxModel": { "$ref": "#/components/schemas/Model3DBlob" }, "animatedModel": { "$ref": "#/components/schemas/Model3DBlob" }, "animatedFbxModel": { "$ref": "#/components/schemas/Model3DBlob" }, "basicAnimations": { "$ref": "#/components/schemas/BasicAnimationsBlobs" } }, "additionalProperties": false }, "PolyGenStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PolyGenInput" }, "output": { "$ref": "#/components/schemas/PolyGenOutput" }, "$type": { "enum": [ "polyGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "3D model generation" }, "PolyGenStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PolyGenInput" }, "$type": { "enum": [ "polyGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "3D model generation" }, "PrepareResourceInput": { "required": [ "resource" ], "type": "object", "properties": { "resource": { "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 AIR of the resource to make available." } }, "additionalProperties": false, "description": "Represents the input information needed for the PrepareResource workflow step." }, "PrepareResourceOutput": { "type": "object", "properties": { "resource": { "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 resource that was prepared." }, "preparedAt": { "type": [ "null", "string" ], "description": "When the resource became available. Null while the step has not completed.", "format": "date-time" }, "provider": { "type": [ "null", "string" ], "description": "The provider the resource was prepared on." } }, "additionalProperties": false, "description": "The result of a PrepareResource workflow step." }, "PreprocessImageAnimalPoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "bboxDetector": { "$ref": "#/components/schemas/AnimalPoseBboxDetector" }, "poseEstimator": { "$ref": "#/components/schemas/AnimalPoseEstimator" }, "kind": { "enum": [ "animal-pose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageAnimeLineartInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "lineart-anime" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageAnylineInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "mergeWithLineart": { "$ref": "#/components/schemas/AnylineMergeWith" }, "lineartLowerBound": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0 }, "lineartUpperBound": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 1 }, "objectMinSize": { "maximum": 1000, "minimum": 1, "type": "integer", "format": "int32", "default": 36 }, "objectConnectivity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "kind": { "enum": [ "anyline" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageBaeNormalInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "bae-normal" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageBinaryInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "binThreshold": { "maximum": 255, "minimum": 0, "type": "integer", "format": "int32", "default": 100 }, "kind": { "enum": [ "binary" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageCannyInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "lowThreshold": { "maximum": 255, "minimum": 0, "type": "integer", "format": "int32", "default": 100 }, "highThreshold": { "maximum": 255, "minimum": 0, "type": "integer", "format": "int32", "default": 200 }, "kind": { "enum": [ "canny" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageColorInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "color" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageDensePoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "model": { "$ref": "#/components/schemas/DensePoseModel" }, "colormap": { "$ref": "#/components/schemas/DensePoseColormap" }, "kind": { "enum": [ "densepose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageDepthAnythingInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "checkpoint": { "$ref": "#/components/schemas/DepthAnythingCheckpoint" }, "kind": { "enum": [ "depth-anything" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageDepthAnythingV2Input": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "checkpoint": { "$ref": "#/components/schemas/DepthAnythingV2Checkpoint" }, "kind": { "enum": [ "depth-anything-v2" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageDsineNormalInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "fov": { "maximum": 365, "minimum": 0, "type": "number", "format": "double", "default": 60 }, "iterations": { "maximum": 20, "minimum": 1, "type": "integer", "format": "int32", "default": 5 }, "kind": { "enum": [ "dsine-normal" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageDwPoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "detectHand": { "type": "boolean", "default": true }, "detectBody": { "type": "boolean", "default": true }, "detectFace": { "type": "boolean", "default": true }, "bboxDetector": { "$ref": "#/components/schemas/DwPoseBboxDetector" }, "poseEstimator": { "$ref": "#/components/schemas/DwPoseEstimator" }, "kind": { "enum": [ "dwpose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageFakeScribbleInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "safe": { "$ref": "#/components/schemas/SafeMode" }, "kind": { "enum": [ "fake-scribble" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageHedInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "safe": { "$ref": "#/components/schemas/SafeMode" }, "kind": { "enum": [ "hed" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageInput": { "required": [ "image", "kind", "preprocessorType" ], "type": "object", "properties": { "kind": { "type": "string" }, "image": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "resolution": { "maximum": 4096, "minimum": 64, "type": "integer", "format": "int32", "default": 512 }, "preprocessorType": { "type": "string", "description": "Gets the preprocessor type identifier used to map to ComfyUI nodes.\nThis is derived from the JsonDerivedType discriminator.", "readOnly": true } }, "additionalProperties": false, "discriminator": { "propertyName": "kind", "mapping": { "canny": "#/components/schemas/PreprocessImageCannyInput", "binary": "#/components/schemas/PreprocessImageBinaryInput", "mlsd": "#/components/schemas/PreprocessImageMlsdInput", "depth-anything": "#/components/schemas/PreprocessImageDepthAnythingInput", "depth-anything-v2": "#/components/schemas/PreprocessImageDepthAnythingV2Input", "zoe-depth-anything": "#/components/schemas/PreprocessImageZoeDepthAnythingInput", "zoe-depth": "#/components/schemas/PreprocessImageZoeDepthInput", "midas-depth": "#/components/schemas/PreprocessImageMidasDepthInput", "leres-depth": "#/components/schemas/PreprocessImageLeresDepthInput", "metric3d-depth": "#/components/schemas/PreprocessImageMetric3dDepthInput", "midas-normal": "#/components/schemas/PreprocessImageMidasNormalInput", "bae-normal": "#/components/schemas/PreprocessImageBaeNormalInput", "dsine-normal": "#/components/schemas/PreprocessImageDsineNormalInput", "metric3d-normal": "#/components/schemas/PreprocessImageMetric3dNormalInput", "hed": "#/components/schemas/PreprocessImageHedInput", "pidinet": "#/components/schemas/PreprocessImagePidinetInput", "teed": "#/components/schemas/PreprocessImageTeedInput", "fake-scribble": "#/components/schemas/PreprocessImageFakeScribbleInput", "lineart-realistic": "#/components/schemas/PreprocessImageRealisticLineartInput", "lineart-standard": "#/components/schemas/PreprocessImageStandardLineartInput", "lineart-anime": "#/components/schemas/PreprocessImageAnimeLineartInput", "lineart-manga": "#/components/schemas/PreprocessImageMangaLineartInput", "anyline": "#/components/schemas/PreprocessImageAnylineInput", "scribble": "#/components/schemas/PreprocessImageScribbleInput", "scribble-xdog": "#/components/schemas/PreprocessImageScribbleXdogInput", "scribble-pidinet": "#/components/schemas/PreprocessImageScribblePidinetInput", "openpose": "#/components/schemas/PreprocessImageOpenPoseInput", "dwpose": "#/components/schemas/PreprocessImageDwPoseInput", "sdpose": "#/components/schemas/PreprocessImageSdPoseInput", "animal-pose": "#/components/schemas/PreprocessImageAnimalPoseInput", "densepose": "#/components/schemas/PreprocessImageDensePoseInput", "mediapipe-face": "#/components/schemas/PreprocessImageMediaPipeFaceInput", "oneformer-coco": "#/components/schemas/PreprocessImageOneFormerCocoInput", "oneformer-ade20k": "#/components/schemas/PreprocessImageOneFormerAde20kInput", "uniformer": "#/components/schemas/PreprocessImageUniFormerInput", "color": "#/components/schemas/PreprocessImageColorInput", "shuffle": "#/components/schemas/PreprocessImageShuffleInput", "tile": "#/components/schemas/PreprocessImageTileInput" } } }, "PreprocessImageLeresDepthInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "removeNearest": { "maximum": 100, "minimum": 0, "type": "number", "format": "double", "default": 0 }, "removeBackground": { "maximum": 100, "minimum": 0, "type": "number", "format": "double", "default": 0 }, "boost": { "$ref": "#/components/schemas/LeresBoost" }, "kind": { "enum": [ "leres-depth" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMangaLineartInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "lineart-manga" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMediaPipeFaceInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "maxFaces": { "maximum": 50, "minimum": 1, "type": "integer", "format": "int32", "default": 10 }, "minConfidence": { "maximum": 1, "minimum": 0.1, "type": "number", "format": "double", "default": 0.5 }, "kind": { "enum": [ "mediapipe-face" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMetric3dDepthInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "backbone": { "$ref": "#/components/schemas/Metric3dBackbone" }, "fx": { "maximum": 4096, "minimum": 1, "type": "integer", "format": "int32", "default": 1000 }, "fy": { "maximum": 4096, "minimum": 1, "type": "integer", "format": "int32", "default": 1000 }, "kind": { "enum": [ "metric3d-depth" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMetric3dNormalInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "backbone": { "$ref": "#/components/schemas/Metric3dBackbone" }, "fx": { "maximum": 4096, "minimum": 1, "type": "integer", "format": "int32", "default": 1000 }, "fy": { "maximum": 4096, "minimum": 1, "type": "integer", "format": "int32", "default": 1000 }, "kind": { "enum": [ "metric3d-normal" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMidasDepthInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "a": { "maximum": 15.71, "minimum": 0, "type": "number", "format": "double", "default": 6.28 }, "backgroundThreshold": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0.1 }, "kind": { "enum": [ "midas-depth" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMidasNormalInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "a": { "maximum": 15.71, "minimum": 0, "type": "number", "format": "double", "default": 6.28 }, "backgroundThreshold": { "maximum": 1, "minimum": 0, "type": "number", "format": "double", "default": 0.1 }, "kind": { "enum": [ "midas-normal" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageMlsdInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "scoreThreshold": { "maximum": 2, "minimum": 0.01, "type": "number", "format": "double", "default": 0.1 }, "distanceThreshold": { "maximum": 20, "minimum": 0.01, "type": "number", "format": "double", "default": 0.1 }, "kind": { "enum": [ "mlsd" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageOneFormerAde20kInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "oneformer-ade20k" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageOneFormerCocoInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "oneformer-coco" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageOpenPoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "detectHand": { "type": "boolean", "default": true }, "detectBody": { "type": "boolean", "default": true }, "detectFace": { "type": "boolean", "default": false }, "kind": { "enum": [ "openpose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/ImageBlob" } }, "additionalProperties": false }, "PreprocessImagePidinetInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "safe": { "$ref": "#/components/schemas/SafeMode" }, "kind": { "enum": [ "pidinet" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageRealisticLineartInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "coarse": { "$ref": "#/components/schemas/CoarseMode" }, "kind": { "enum": [ "lineart-realistic" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageScribbleInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "scribble" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageScribblePidinetInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "safe": { "$ref": "#/components/schemas/SafeMode" }, "kind": { "enum": [ "scribble-pidinet" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageScribbleXdogInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "threshold": { "maximum": 64, "minimum": 1, "type": "integer", "format": "int32", "default": 32 }, "kind": { "enum": [ "scribble-xdog" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageSdPoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "detectHand": { "type": "boolean", "default": true }, "detectBody": { "type": "boolean", "default": true }, "detectFace": { "type": "boolean", "default": true }, "kind": { "enum": [ "sdpose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageShuffleInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "seed": { "maximum": 2147483647, "minimum": 0, "type": "integer", "format": "int32", "default": 0 }, "kind": { "enum": [ "shuffle" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageStandardLineartInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "gaussianSigma": { "maximum": 100, "minimum": 0, "type": "number", "format": "double", "default": 6 }, "intensityThreshold": { "maximum": 16, "minimum": 0, "type": "integer", "format": "int32", "default": 8 }, "kind": { "enum": [ "lineart-standard" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PreprocessImageInput" }, "output": { "$ref": "#/components/schemas/PreprocessImageOutput" }, "$type": { "enum": [ "preprocessImage" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PreprocessImageInput" }, "$type": { "enum": [ "preprocessImage" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageTeedInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "safeSteps": { "maximum": 10, "minimum": 0, "type": "integer", "format": "int32", "default": 2 }, "kind": { "enum": [ "teed" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageTileInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "pyrUpIterations": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 3 }, "kind": { "enum": [ "tile" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageUniFormerInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "uniformer" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageZoeDepthAnythingInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "environment": { "$ref": "#/components/schemas/ZoeDepthEnvironment" }, "kind": { "enum": [ "zoe-depth-anything" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessImageZoeDepthInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessImageInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "zoe-depth" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoCannyInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "lowThreshold": { "maximum": 255, "minimum": 0, "type": "integer", "format": "int32", "default": 100 }, "highThreshold": { "maximum": 255, "minimum": 0, "type": "integer", "format": "int32", "default": 200 }, "kind": { "enum": [ "canny" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoDepthAnythingV2Input": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "checkpoint": { "$ref": "#/components/schemas/DepthAnythingV2Checkpoint" }, "kind": { "enum": [ "depth-anything-v2" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoDwPoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "detectHand": { "type": "boolean", "default": true }, "detectBody": { "type": "boolean", "default": true }, "detectFace": { "type": "boolean", "default": true }, "bboxDetector": { "$ref": "#/components/schemas/DwPoseBboxDetector" }, "poseEstimator": { "$ref": "#/components/schemas/DwPoseEstimator" }, "kind": { "enum": [ "dwpose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoGrayInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "kind": { "enum": [ "gray" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoHedInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "safe": { "$ref": "#/components/schemas/SafeMode" }, "kind": { "enum": [ "hed" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoInput": { "required": [ "kind", "preprocessorType", "video" ], "type": "object", "properties": { "kind": { "type": "string" }, "video": { "type": "string", "format": "uri" }, "resolution": { "maximum": 4096, "minimum": 64, "type": "integer", "description": "The target resolution of the video's shorter edge.", "format": "int32", "default": 512 }, "preprocessorType": { "type": "string", "readOnly": true } }, "additionalProperties": false, "discriminator": { "propertyName": "kind", "mapping": { "canny": "#/components/schemas/PreprocessVideoCannyInput", "mlsd": "#/components/schemas/PreprocessVideoMlsdInput", "depth-anything-v2": "#/components/schemas/PreprocessVideoDepthAnythingV2Input", "hed": "#/components/schemas/PreprocessVideoHedInput", "dwpose": "#/components/schemas/PreprocessVideoDwPoseInput", "sdpose": "#/components/schemas/PreprocessVideoSdPoseInput", "scribble": "#/components/schemas/PreprocessVideoScribbleInput", "gray": "#/components/schemas/PreprocessVideoGrayInput", "layout": "#/components/schemas/PreprocessVideoLayoutInput" } } }, "PreprocessVideoLayoutInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "threshold": { "type": "number", "format": "double", "default": 0.5 }, "className": { "type": "string", "description": "A COCO class name, or \"all\" to keep every detected class.", "default": "all" }, "maxDetections": { "type": "integer", "format": "int32", "default": 10 }, "kind": { "enum": [ "layout" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoMlsdInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "scoreThreshold": { "maximum": 2, "minimum": 0.01, "type": "number", "format": "double", "default": 0.1 }, "distanceThreshold": { "maximum": 20, "minimum": 0.01, "type": "number", "format": "double", "default": 0.1 }, "kind": { "enum": [ "mlsd" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/VideoBlob" } }, "additionalProperties": false }, "PreprocessVideoScribbleInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "threshold": { "maximum": 64, "minimum": 1, "type": "integer", "format": "int32", "default": 32 }, "kind": { "enum": [ "scribble" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoSdPoseInput": { "allOf": [ { "$ref": "#/components/schemas/PreprocessVideoInput" }, { "required": [ "kind" ], "type": "object", "properties": { "detectHand": { "type": "boolean", "default": true }, "detectBody": { "type": "boolean", "default": true }, "detectFace": { "type": "boolean", "default": true }, "kind": { "enum": [ "sdpose" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PreprocessVideoInput" }, "output": { "$ref": "#/components/schemas/PreprocessVideoOutput" }, "$type": { "enum": [ "preprocessVideo" ], "type": "string" } }, "additionalProperties": false } ] }, "PreprocessVideoStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PreprocessVideoInput" }, "$type": { "enum": [ "preprocessVideo" ], "type": "string" } }, "additionalProperties": false } ] }, "Priority": { "enum": [ "high", "normal", "low", "idle" ], "type": "string", "description": "Available options for priority." }, "ProblemDetails": { "type": "object", "properties": { "type": { "type": [ "null", "string" ] }, "title": { "type": [ "null", "string" ] }, "status": { "type": [ "null", "integer" ], "format": "int32" }, "detail": { "type": [ "null", "string" ] }, "instance": { "type": [ "null", "string" ] } }, "additionalProperties": { } }, "PromptEnhancementInput": { "required": [ "ecosystem", "prompt" ], "type": "object", "properties": { "ecosystem": { "minLength": 1, "type": "string", "description": "The target ecosystem (e.g., \"sd1\", \"sdxl\", \"flux\", \"ltx2\")." }, "prompt": { "minLength": 1, "type": "string", "description": "The user's prompt to analyze and enhance." }, "negativePrompt": { "type": [ "null", "string" ], "description": "Optional negative prompt to analyze and enhance." }, "temperature": { "maximum": 1, "minimum": 0, "type": [ "null", "number" ], "description": "LLM temperature for enhancement creativity (0.0–1.0). Defaults to 0.7.", "format": "double" }, "instruction": { "type": [ "null", "string" ], "description": "Optional instruction to guide how the prompt is enhanced (e.g., \"expand to 77 tokens\", \"keep it under 20 words\")." }, "images": { "type": [ "null", "array" ], "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Optional reference images for the prompt enhancement model to consider when enhancing the prompt\n(subject, style, lighting, composition, color palette). Accepts URLs, data URIs, raw base64, or AIR strings.\nRequires the per-ecosystem prompt-analysis model to be a vision-capable LLM (configured via\nIPromptAnalysisGrain.SetConfigurationAsync) — non-VLM models will silently ignore the images." } }, "additionalProperties": false, "description": "Input for a prompt enhancement step." }, "PromptEnhancementOutput": { "required": [ "enhancedPrompt", "issues", "recommendations" ], "type": "object", "properties": { "issues": { "type": "array", "items": { "$ref": "#/components/schemas/PromptIssue" }, "description": "Detected issues with the original prompt." }, "recommendations": { "type": "array", "items": { "type": "string" }, "description": "Actionable recommendations for improving the prompt." }, "enhancedPrompt": { "type": "string", "description": "Enhanced version of the original prompt." }, "enhancedNegativePrompt": { "type": [ "null", "string" ], "description": "Enhanced version of the negative prompt, if one was provided." } }, "additionalProperties": false, "description": "Output from prompt enhancement analysis." }, "PromptEnhancementStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PromptEnhancementInput" }, "output": { "$ref": "#/components/schemas/PromptEnhancementOutput" }, "$type": { "enum": [ "promptEnhancement" ], "type": "string" } }, "additionalProperties": false } ], "description": "PromptEnhancement" }, "PromptEnhancementStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/PromptEnhancementInput" }, "$type": { "enum": [ "promptEnhancement" ], "type": "string" } }, "additionalProperties": false } ], "description": "PromptEnhancement" }, "PromptIssue": { "required": [ "description" ], "type": "object", "properties": { "description": { "type": "string", "description": "Description of the issue." }, "severity": { "type": [ "null", "string" ], "description": "Severity level: \"info\", \"warning\", or \"error\"." } }, "additionalProperties": false, "description": "A detected issue with the user's prompt." }, "QueuedResourceAvailability": { "allOf": [ { "$ref": "#/components/schemas/ResourceAvailability" }, { "required": [ "lane", "queuePosition", "status" ], "type": "object", "properties": { "queuePosition": { "type": "integer", "format": "int32" }, "lane": { "$ref": "#/components/schemas/Priority" }, "etaSeconds": { "type": [ "null", "integer" ], "format": "int32" }, "boostedEtaSeconds": { "type": [ "null", "integer" ], "description": "What Civitai.Orchestration.Grains.Resources.QueuedResourceAvailability.EtaSeconds would become in the High lane. Null when already High.", "format": "int32" }, "rateLimitBytesPerSecond": { "type": [ "null", "integer" ], "description": "Per-stream ceiling the lane applies to this download. Null when uncapped; boosting to High lifts it.", "format": "int64" }, "status": { "enum": [ "queued" ], "type": "string" } }, "additionalProperties": false } ], "description": "Waiting in a download lane. No progress or speed — nothing is transferring yet." }, "Qwen20bCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen20bImageGenInput" }, { "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen20bEditImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen20bImageGenInput" }, { "required": [ "ecosystem", "engine", "height", "images", "model", "operation", "width" ], "type": "object", "properties": { "version": { "enum": [ "latest", "2509", "2511" ], "type": "string", "default": "latest" }, "images": { "maxItems": 10, "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen20bImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/QwenImageGenInput" }, { "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" ] }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Qwen20bCreateImageGenInput", "editImage": "#/components/schemas/Qwen20bEditImageGenInput", "createVariant": "#/components/schemas/Qwen20bVariantImageGenInput" } } } ] }, "Qwen20bVariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen20bImageGenInput" }, { "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen21AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine" ], "type": "object", "properties": { "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "qwen21" ], "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 LoRA training for Qwen Image 2.1." }, "Qwen2CreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen2FalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "qwen2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen2EditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen2FalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "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" } }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "qwen2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen2FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "minLength": 1, "type": "string" }, "negativePrompt": { "maxLength": 500, "type": [ "null", "string" ] }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "imageSize": { "enum": [ "square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9" ], "type": "string", "default": "square_hd" }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "enablePromptExpansion": { "type": "boolean", "default": true }, "enableSafetyChecker": { "type": "boolean", "default": false }, "model": { "enum": [ "qwen2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Qwen2CreateFalImageGenInput", "proCreateImage": "#/components/schemas/Qwen2ProCreateFalImageGenInput", "editImage": "#/components/schemas/Qwen2EditFalImageGenInput", "proEditImage": "#/components/schemas/Qwen2ProEditFalImageGenInput" } } } ] }, "Qwen2ProCreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen2FalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "proCreateImage" ], "type": "string" }, "model": { "enum": [ "qwen2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen2ProEditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen2FalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "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" } }, "operation": { "enum": [ "proEditImage" ], "type": "string" }, "model": { "enum": [ "qwen2" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen3BaseTTSInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen3TextToSpeechInput" }, { "required": [ "ecosystem", "engine", "operation", "xVectorOnlyMode" ], "type": "object", "properties": { "refAudioUrl": { "type": [ "null", "string" ], "description": "Reference audio AIR URN or external URL for voice cloning.\nAccepts AIR URNs (existing resources) or HTTP(S) URLs.", "format": "uri" }, "refText": { "type": [ "null", "string" ], "description": "Transcript of the reference audio.\nRequired for Base mode unless XVectorOnlyMode is true." }, "xVectorOnlyMode": { "type": "boolean", "description": "If true, uses only speaker embedding (ref_text not required)." }, "operation": { "enum": [ "base" ], "type": "string" }, "ecosystem": { "enum": [ "qwen3" ], "type": "string" }, "engine": { "enum": [ "vllm-omni" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen3CustomVoiceTTSInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen3TextToSpeechInput" }, { "required": [ "ecosystem", "engine", "operation", "speaker" ], "type": "object", "properties": { "speaker": { "enum": [ "aiden", "dylan", "eric", "ono_anna", "ryan", "serena", "sohee", "uncle_fu", "vivian" ], "type": "string", "description": "Built-in speaker name for CustomVoice mode." }, "instruct": { "type": [ "null", "string" ], "description": "Optional style instruction (e.g., \"speak slowly and clearly\")." }, "operation": { "enum": [ "customVoice" ], "type": "string" }, "ecosystem": { "enum": [ "qwen3" ], "type": "string" }, "engine": { "enum": [ "vllm-omni" ], "type": "string" } }, "additionalProperties": false } ] }, "Qwen3TextToSpeechInput": { "allOf": [ { "$ref": "#/components/schemas/VllmOmniTextToSpeechInput" }, { "required": [ "ecosystem", "engine", "operation" ], "type": "object", "properties": { "operation": { "type": "string" }, "maxNewTokens": { "type": [ "null", "integer" ], "description": "Optional generation cap for max tokens.", "format": "int32" }, "ecosystem": { "enum": [ "qwen3" ], "type": "string" }, "engine": { "enum": [ "vllm-omni" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "base": "#/components/schemas/Qwen3BaseTTSInput", "customVoice": "#/components/schemas/Qwen3CustomVoiceTTSInput", "voiceDesign": "#/components/schemas/Qwen3VoiceDesignTTSInput" } } } ] }, "Qwen3VoiceDesignTTSInput": { "allOf": [ { "$ref": "#/components/schemas/Qwen3TextToSpeechInput" }, { "required": [ "ecosystem", "engine", "instruct", "operation" ], "type": "object", "properties": { "instruct": { "type": "string", "description": "Natural-language description of the desired voice\n(e.g., \"a calm middle-aged male narrator with a slight British accent\")." }, "operation": { "enum": [ "voiceDesign" ], "type": "string" }, "ecosystem": { "enum": [ "qwen3" ], "type": "string" }, "engine": { "enum": [ "vllm-omni" ], "type": "string" } }, "additionalProperties": false } ] }, "QwenAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "version": { "enum": [ "latest", "2509", "2512" ], "type": "string", "default": "latest" }, "ecosystem": { "enum": [ "qwen" ], "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 Qwen Image models" }, "QwenApiCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/QwenApiImageGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "model": { "enum": [ "3.0-pro", "2.0-pro", "2.0", "max", "plus" ], "type": "string", "default": "2.0" }, "operation": { "enum": [ "createImage" ], "type": "string" }, "engine": { "enum": [ "qwen" ], "type": "string" } }, "additionalProperties": false } ] }, "QwenApiEditImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/QwenApiImageGenInput" }, { "required": [ "engine", "images", "operation" ], "type": "object", "properties": { "model": { "enum": [ "3.0-pro", "2.0-pro", "2.0", "edit-max", "edit-plus", "edit" ], "type": "string", "default": "2.0" }, "images": { "maxItems": 3, "minItems": 1, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Reference images. DashScope numbers them by input order — prompts refer to them as \"Image 1\", \"Image 2\", \"Image 3\"." }, "operation": { "enum": [ "editImage" ], "type": "string" }, "engine": { "enum": [ "qwen" ], "type": "string" } }, "additionalProperties": false } ] }, "QwenApiImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "height", "operation", "prompt", "width" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "createImage" }, "prompt": { "maxLength": 5000, "minLength": 0, "type": "string" }, "negativePrompt": { "maxLength": 500, "minLength": 0, "type": [ "null", "string" ] }, "quantity": { "maximum": 6, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "width": { "maximum": 2048, "minimum": 0, "type": "integer", "format": "int32" }, "height": { "maximum": 2048, "minimum": 0, "type": "integer", "format": "int32" }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "promptExtend": { "type": "boolean", "default": true }, "watermark": { "type": "boolean", "default": false }, "engine": { "enum": [ "qwen" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/QwenApiCreateImageGenInput", "editImage": "#/components/schemas/QwenApiEditImageGenInput" } } } ], "description": "Qwen image models hosted by Alibaba Model Studio (DashScope). Distinct from the `sdcpp`/`qwen`\necosystem, which runs Qwen-Image 20B on our own workers." }, "QwenImageBenchInput": { "required": [ "dimensions", "items" ], "type": "object", "properties": { "items": { "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/QwenImageBenchItem" }, "description": "Prompt/image pairs to score. Each item is evaluated independently." }, "model": { "type": "string", "description": "The AIR model to use for the benchmark judge.", "default": "urn:air:qwen3:repository:huggingface:Civitai/Qwen-Image-Bench-AutoRound-AWQ-INT4@main.tar" }, "maxTokens": { "maximum": 128000, "minimum": 1, "type": "integer", "description": "Maximum number of tokens to generate.", "format": "int32", "default": 2048 }, "seed": { "type": "integer", "description": "Deterministic seed. The model card recommends 42.", "format": "int64", "default": 42 }, "dimensions": { "type": "array", "items": { "type": "string" }, "description": "Top-level benchmark dimensions to evaluate. Leave empty to evaluate all dimensions." } }, "additionalProperties": false, "description": "Input for evaluating generated images with Qwen-Image-Bench." }, "QwenImageBenchItem": { "required": [ "id", "image", "prompt" ], "type": "object", "properties": { "id": { "minLength": 1, "type": "string", "description": "Stable caller-provided identifier used as the output key." }, "prompt": { "minLength": 1, "type": "string", "description": "The text prompt used to generate the image." }, "image": { "type": "string", "description": "The generated image to evaluate.", "format": "source-image" } }, "additionalProperties": false, "description": "A single generated image and the prompt it should be judged against." }, "QwenImageBenchItemResult": { "required": [ "errors", "fieldScores", "scores" ], "type": "object", "properties": { "fieldScores": { "type": "object", "additionalProperties": { "type": [ "null", "number" ], "format": "double" }, "description": "Top-level benchmark dimension scores, mapped to the benchmark 0/60/100 scale." }, "totalScore": { "type": [ "null", "number" ], "description": "Average of the available top-level field scores.", "format": "double" }, "scores": { "type": "array", "items": { "$ref": "#/components/schemas/QwenImageBenchScoreNode" }, "description": "Recursive score tree derived from the model output." }, "errors": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Parse errors keyed by benchmark dimension." }, "error": { "type": [ "null", "string" ], "description": "Parse or retrieval error, if the score could not be read." } }, "additionalProperties": false, "description": "Score output for one evaluated image." }, "QwenImageBenchOutput": { "required": [ "results" ], "type": "object", "properties": { "results": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/QwenImageBenchItemResult" }, "description": "Results keyed by the caller-provided item id." } }, "additionalProperties": false, "description": "Scores returned by Qwen-Image-Bench." }, "QwenImageBenchScoreNode": { "required": [ "children", "name" ], "type": "object", "properties": { "name": { "type": "string" }, "score": { "type": [ "null", "number" ], "format": "double" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/QwenImageBenchScoreNode" } } }, "additionalProperties": false, "description": "A benchmark dimension or sub-dimension score." }, "QwenImageBenchStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/QwenImageBenchInput" }, "output": { "$ref": "#/components/schemas/QwenImageBenchOutput" }, "$type": { "enum": [ "qwenImageBench" ], "type": "string" } }, "additionalProperties": false } ], "description": "Qwen Image Bench" }, "QwenImageBenchStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/QwenImageBenchInput" }, "$type": { "enum": [ "qwenImageBench" ], "type": "string" } }, "additionalProperties": false } ], "description": "Qwen Image Bench" }, "QwenImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "required": [ "ecosystem", "engine", "model" ], "type": "object", "properties": { "model": { "type": "string" }, "ecosystem": { "enum": [ "qwen" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "20b": "#/components/schemas/Qwen20bImageGenInput" } } } ] }, "RepeatForClause": { "required": [ "$ref", "as", "path" ], "type": "object", "properties": { "$ref": { "type": "string", "description": "The dynamic assignment reference to the array to iterate over (e.g., \"$stepName\")." }, "path": { "type": "string", "description": "The path to the array property in the referenced step's output (e.g., \"output.frames\")." }, "as": { "type": "string", "description": "The variable name to use when referencing the current iteration item in template steps (e.g., \"frame\")." } }, "additionalProperties": false, "description": "Represents the \"for\" clause in a repeat step that specifies what to iterate over." }, "RepeatInput": { "required": [ "for", "template" ], "type": "object", "properties": { "for": { "$ref": "#/components/schemas/RepeatForClause" }, "template": { "$ref": "#/components/schemas/WorkflowStepTemplate" } }, "additionalProperties": false, "description": "Represents the input information needed for the Repeat workflow step." }, "RepeatOutput": { "required": [ "steps" ], "type": "object", "properties": { "steps": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowStep" } } }, "additionalProperties": false, "description": "Represents the output information returned from the Repeat workflow step." }, "ResizeTransform": { "allOf": [ { "$ref": "#/components/schemas/ImageTransform" }, { "required": [ "type" ], "type": "object", "properties": { "targetWidth": { "maximum": 4096, "minimum": 1, "type": [ "null", "integer" ], "description": "Target width in pixels. Height is calculated to maintain aspect ratio.", "format": "int32" }, "type": { "enum": [ "resize" ], "type": "string" } }, "additionalProperties": false } ], "description": "Resizes an image to a target width while maintaining aspect ratio." }, "ResourceAvailability": { "required": [ "status" ], "type": "object", "properties": { "status": { "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "status", "mapping": { "unsupported": "#/components/schemas/UnsupportedResourceAvailability", "unavailable": "#/components/schemas/UnavailableResourceAvailability", "queued": "#/components/schemas/QueuedResourceAvailability", "loading": "#/components/schemas/LoadingResourceAvailability", "available": "#/components/schemas/AvailableResourceAvailability" } } }, "ResourceFee": { "required": [ "amount", "settlementCurrency", "type" ], "type": "object", "properties": { "amount": { "type": "number", "format": "double" }, "type": { "$ref": "#/components/schemas/ResourceFeeType" }, "settlementCurrency": { "$ref": "#/components/schemas/SettlementCurrency" }, "recipientModelVersionId": { "type": [ "null", "integer" ], "format": "int32" } }, "additionalProperties": false }, "ResourceFeeType": { "enum": [ "perImageBuzz" ], "type": "string" }, "ResourceInfo": { "required": [ "air", "canGenerate", "checkPermission", "downloadUrls", "fileFormat", "hashes", "hasMatureContentRestriction", "hasNSFWContentRestriction", "size" ], "type": "object", "properties": { "air": { "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": "An AIR ID for the resource." }, "size": { "type": "integer", "description": "The resource size in bytes.", "format": "int64" }, "hashes": { "type": "object", "additionalProperties": { "type": "string" }, "description": "A collection of hashes." }, "downloadUrls": { "type": "array", "items": { "type": "string", "format": "uri" }, "description": "An array of download urls." }, "resourceName": { "type": [ "null", "string" ], "description": "The name of the resource." }, "versionName": { "type": [ "null", "string" ], "description": "The name of the version." }, "invalidateAt": { "type": [ "null", "string" ], "description": "The date time to invalidate at.", "format": "date-time" }, "earlyAccessEndsAt": { "type": [ "null", "string" ], "description": "A DateTime representing when early access for the resource ends.", "format": "date-time" }, "checkPermission": { "type": "boolean", "description": "A bool indicating if permission is required to use this resource." }, "canGenerate": { "type": "boolean", "description": "A bool indicating if generation is enabled for this resource." }, "freeTrialLimit": { "type": [ "null", "integer" ], "description": "An optional limit on the number of uses for this resource per user that has early acccess.", "format": "int32" }, "requiresAuthorization": { "type": [ "null", "boolean" ], "description": "Wether this resource requires authorization." }, "fileFormat": { "$ref": "#/components/schemas/FileFormat" }, "hasMatureContentRestriction": { "type": "boolean", "description": "A boolean indicating whether this resource restricts mature content generation.\nIf resources with this restriction are used in generation, then generations will automatically be enforced to not generate mature content" }, "popularityRank": { "type": [ "null", "number" ], "description": "Get a rank between 0-1 on the popularity of the resource.", "format": "double" }, "isFeatured": { "type": [ "null", "boolean" ], "description": "Get wether this resource is featured" }, "publishedAt": { "type": [ "null", "string" ], "description": "The date at which this model got published", "format": "date-time" }, "hasNSFWContentRestriction": { "type": "boolean", "description": "A boolean indicating whether this resource restricts to SFW content generation.\nNSFWContent covers X and XXX whereas MatureContent includes R rated content." }, "fee": { "$ref": "#/components/schemas/ResourceFee" }, "payoutEnabled": { "type": [ "null", "boolean" ], "description": "If set to false, then this resource is not eligible for compenstation or tips" }, "fees": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/ResourceFee" }, "description": "The full licensing-fee breakdown; each entry settles to its own recipient" }, "userId": { "type": [ "null", "integer" ], "description": "The owner of this resource, stamped onto compensation records at flush time so\nattribution follows ownership transfers instead of being resolved retroactively.", "format": "int32" }, "availability": { "$ref": "#/components/schemas/ResourceAvailability" }, "isPromoted": { "type": [ "null", "boolean" ], "description": "Promoted resources download in the High lane for free, whatever lane the job asked for." }, "evictable": { "type": [ "null", "boolean" ], "description": "When false, workers keep the cluster's last copy of this resource rather than evicting it." } }, "additionalProperties": false, "description": "Details for a specific resource." }, "ResourceView": { "enum": [ "queue", "loaded" ], "type": "string", "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." }, "ReveCreateFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ReveFalImageGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "model": { "enum": [ "reve" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "ReveEditFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ReveFalImageGenInput" }, { "required": [ "engine", "images", "model", "operation" ], "type": "object", "properties": { "images": { "maxItems": 8, "minItems": 1, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Address these from the prompt as N, 0-based." }, "operation": { "enum": [ "editImage" ], "type": "string" }, "model": { "enum": [ "reve" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "ReveFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalImageGenInput" }, { "required": [ "engine", "model", "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": "string" }, "prompt": { "maxLength": 4000, "minLength": 1, "type": "string" }, "aspectRatio": { "enum": [ "auto", "4:1", "3:1", "21:9", "2:1", "17:9", "16:9", "3:2", "4:3", "5:4", "1:1", "4:5", "3:4", "2:3", "9:16", "1:2", "1:3", "1:4" ], "type": "string", "default": "auto" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "model": { "enum": [ "reve" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/ReveCreateFalImageGenInput", "editImage": "#/components/schemas/ReveEditFalImageGenInput" } } } ] }, "SD1AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "maxBatchSize" ], "type": "object", "properties": { "minSnrGamma": { "maximum": 20, "minimum": 0, "type": [ "null", "integer" ], "description": "Learning is performed by putting noise of various strengths on the training image,\nbut depending on the difference in strength of the noise on which it is placed, learning will be\nstable by moving closer to or farther from the learning target.\n \nMin SNR gamma was introduced to compensate for that. When learning images have little noise,\nit may deviate greatly from the target, so try to suppress this jump.", "format": "int32" }, "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 model to train upon.", "default": "urn:air:sd1:checkpoint:civitai:127227@139180" }, "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "sd1" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" }, "batchSize": { "maximum": 4, "minimum": 1, "type": [ "null", "integer" ], "description": "Training batch size. Defaults to 1; raise it up to 4 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 } }, "additionalProperties": false } ], "description": "AI Toolkit training for Stable Diffusion 1.5 models" }, "SafeMode": { "enum": [ "enable", "disable" ], "type": "string" }, "Scheduler": { "enum": [ "eulerA", "euler", "lms", "heun", "dpM2", "dpM2A", "dpM2SA", "dpM2M", "dpmsde", "dpmFast", "dpmAdaptive", "lmsKarras", "dpM2Karras", "dpM2AKarras", "dpM2SAKarras", "dpM2MKarras", "dpmsdeKarras", "ddim", "plms", "uniPC", "undefined", "lcm", "ddpm", "deis", "dpM3MSDE" ], "type": "string", "description": "The available options for schedulers used in image generation." }, "Sd1CreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Sd1ImageGenInput" }, { "required": [ "ecosystem", "engine", "operation" ], "type": "object", "properties": { "width": { "maximum": 2048, "minimum": 64, "type": "integer", "format": "int32", "default": 512 }, "height": { "maximum": 2048, "minimum": 64, "type": "integer", "format": "int32", "default": 512 }, "operation": { "enum": [ "createImage" ], "type": "string" }, "ecosystem": { "enum": [ "sd1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "Sd1ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "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" ] }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "steps": { "maximum": 150, "minimum": 1, "type": "integer", "format": "int32", "default": 20 }, "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 }, "uCache": { "$ref": "#/components/schemas/SdCppUCacheMode" }, "ecosystem": { "enum": [ "sd1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Sd1CreateImageGenInput", "createVariant": "#/components/schemas/Sd1VariantImageGenInput" } } } ] }, "Sd1VariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Sd1ImageGenInput" }, { "required": [ "ecosystem", "engine", "image", "operation" ], "type": "object", "properties": { "width": { "maximum": 2048, "minimum": 64, "type": "integer", "format": "int32", "default": 512 }, "height": { "maximum": 2048, "minimum": 64, "type": "integer", "format": "int32", "default": 512 }, "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": [ "sd1" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "SdCppImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "ecosystem": { "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "ecosystem", "mapping": { "qwen": "#/components/schemas/QwenImageGenInput", "zImage": "#/components/schemas/ZImageImageGenInput", "anima": "#/components/schemas/AnimaImageGenInput", "sd1": "#/components/schemas/Sd1ImageGenInput", "sdxl": "#/components/schemas/SdxlImageGenInput", "flux1": "#/components/schemas/Flux1SdCppImageGenInput", "flux2Dev": "#/components/schemas/Flux2DevSdCppImageGenInput", "flux2Klein": "#/components/schemas/Flux2KleinSdCppImageGenInput" } } } ] }, "SdCppSampleMethod": { "enum": [ "euler", "heun", "dpm2", "dpm++2s_a", "dpm++2m", "dpm++2mv2", "ipndm", "ipndm_v", "ddim_trailing", "euler_a", "lcm", "res_multistep", "res_2s", "tcd", "er_sde" ], "type": "string" }, "SdCppSchedule": { "enum": [ "simple", "discrete", "karras", "exponential", "ays", "bong_tangent", "gits", "sgm_uniform", "smoothstep", "kl_optimal", "lcm" ], "type": "string" }, "SdCppUCacheMode": { "enum": [ "off", "normal" ], "type": "string" }, "SdxlAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "maxBatchSize" ], "type": "object", "properties": { "minSnrGamma": { "maximum": 20, "minimum": 0, "type": [ "null", "integer" ], "description": "Learning is performed by putting noise of various strengths on the training image,\nbut depending on the difference in strength of the noise on which it is placed, learning will be\nstable by moving closer to or farther from the learning target.\n \nMin SNR gamma was introduced to compensate for that. When learning images have little noise,\nit may deviate greatly from the target, so try to suppress this jump.", "format": "int32" }, "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 model to train upon.", "default": "urn:air:sdxl:checkpoint:civitai:101055@128078" }, "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "sdxl" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" }, "batchSize": { "maximum": 4, "minimum": 1, "type": [ "null", "integer" ], "description": "Training batch size. Defaults to 1; raise it up to 4 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 } }, "additionalProperties": false } ], "description": "AI Toolkit training for Stable Diffusion XL models" }, "SdxlCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdxlImageGenInput" }, { "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": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "SdxlImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "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" ] }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "steps": { "maximum": 150, "minimum": 1, "type": "integer", "format": "int32", "default": 20 }, "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 }, "uCache": { "$ref": "#/components/schemas/SdCppUCacheMode" }, "ecosystem": { "enum": [ "sdxl" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/SdxlCreateImageGenInput", "createVariant": "#/components/schemas/SdxlVariantImageGenInput" } } } ] }, "SdxlVariantImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdxlImageGenInput" }, { "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": [ "sdxl" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "SeedanceModel": { "enum": [ "v2", "v2-fast", "v2-mini", "v2.5" ], "type": "string" }, "SeedanceVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "aspectRatio", "duration", "engine", "resolution" ], "type": "object", "properties": { "model": { "$ref": "#/components/schemas/SeedanceModel" }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "adaptive" ], "type": "string" }, "duration": { "enum": [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ], "type": "integer", "format": "int32" }, "generateAudio": { "type": "boolean", "default": true }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "resolution": { "enum": [ "480p", "720p", "1080p" ], "type": "string" }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "referenceVideos": { "type": "array", "items": { "type": "string", "format": "uri" } }, "referenceAudios": { "type": "array", "items": { "type": "string", "format": "uri" } }, "engine": { "enum": [ "seedance" ], "type": "string" } }, "additionalProperties": false } ] }, "SeedreamImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "prompt" ], "type": "object", "properties": { "prompt": { "minLength": 1, "type": "string" }, "quantity": { "maximum": 12, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "width": { "maximum": 4096, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "height": { "maximum": 4096, "minimum": 256, "type": "integer", "format": "int32", "default": 1024 }, "guidanceScale": { "maximum": 10, "minimum": 1, "type": "number", "format": "double", "default": 2.5 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "enableSafetyChecker": { "type": "boolean", "default": false }, "version": { "$ref": "#/components/schemas/SeedreamVersion" }, "images": { "maxItems": 10, "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "engine": { "enum": [ "seedream" ], "type": "string" } }, "additionalProperties": false } ] }, "SeedreamVersion": { "enum": [ "v3", "v4", "v4.5", "v5.0-lite", "v5.0-pro" ], "type": "string" }, "ServiceHistory": { "required": [ "buckets", "interval" ], "type": "object", "properties": { "interval": { "type": "string", "description": "The bucket size the series is grouped by: 5m, 1h or 1d." }, "buckets": { "type": "array", "items": { "$ref": "#/components/schemas/BucketResponse" }, "description": "Newest bucket first. Each spans one Civitai.Orchestration.Api.Controllers.v2.Consumers.Services.ServiceHistory.Interval." } }, "additionalProperties": false }, "ServiceResponse": { "required": [ "category", "id", "parameters", "status", "tags" ], "type": "object", "properties": { "id": { "type": "string", "description": "Variable-depth path, e.g. \"image/flux2/klein/createImage/9b\". Opaque: read\nCivitai.Orchestration.Api.Controllers.v2.Consumers.Services.ServiceResponse.Parameters rather than splitting this on \"/\", as the depth and the meaning of\neach segment differ per engine." }, "category": { "type": "string", "description": "The id's first segment." }, "parameters": { "type": "object", "additionalProperties": { "type": "string" }, "description": "The id decomposed, e.g. { engine: flux2, model: klein, operation: createImage }." }, "step": { "type": [ "null", "string" ], "description": "The workflow step $type this service is reached through." }, "submit": { "type": [ "null", "string" ], "description": "Where to submit this service." }, "estimate": { "type": [ "null", "string" ], "description": "Returns the exact cost of a given input without running it." }, "name": { "type": [ "null", "string" ] }, "description": { "type": [ "null", "string" ] }, "tags": { "type": "array", "items": { "type": "string" } }, "strengths": { "type": [ "null", "string" ] }, "weaknesses": { "type": [ "null", "string" ] }, "releasedAt": { "type": [ "null", "string" ], "format": "date-time" }, "modalities": { "$ref": "#/components/schemas/ModalitiesResponse" }, "status": { "$ref": "#/components/schemas/ServiceStatus" }, "metrics": { "$ref": "#/components/schemas/MetricsResponse" }, "history": { "$ref": "#/components/schemas/ServiceHistory" } }, "additionalProperties": false, "description": "A service we offer." }, "ServiceStatus": { "enum": [ "unknown", "available", "degraded", "unavailable" ], "type": "string" }, "SettlementCurrency": { "enum": [ "buzz", "cash" ], "type": "string" }, "ShadowRemoval": { "enum": [ "off", "gentle", "aggressive" ], "type": "string", "description": "How aggressively background removal also strips soft drop shadows the strict color match misses." }, "ShieldstralModerationInput": { "required": [ "mode" ], "type": "object", "properties": { "mode": { "type": "string" }, "policies": { "type": [ "null", "array" ], "items": { "type": "string" }, "description": "Optional policy filter. When omitted, every configured policy for the selected mode is evaluated." }, "policyOverrides": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/ShieldstralPolicyConfiguration" }, "description": "Per-request policy overrides. Existing policies are merged by name and new names create custom policies.\nPolicy is free-form natural language; Query, when supplied, must be a single yes/no question." } }, "additionalProperties": false, "discriminator": { "propertyName": "mode", "mapping": { "prompt": "#/components/schemas/ShieldstralPromptModerationInput", "text": "#/components/schemas/ShieldstralTextModerationInput" } } }, "ShieldstralModerationOutput": { "required": [ "blocked", "results", "triggeredPolicies" ], "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/ShieldstralPolicyResult" } }, "blocked": { "type": "boolean" }, "triggeredPolicies": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "ShieldstralModerationStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ShieldstralModerationInput" }, "output": { "$ref": "#/components/schemas/ShieldstralModerationOutput" }, "$type": { "enum": [ "shieldstralModeration" ], "type": "string" } }, "additionalProperties": false } ], "description": "ShieldstralModeration" }, "ShieldstralModerationStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/ShieldstralModerationInput" }, "$type": { "enum": [ "shieldstralModeration" ], "type": "string" } }, "additionalProperties": false } ], "description": "ShieldstralModeration" }, "ShieldstralPolicyConfiguration": { "required": [ "name" ], "type": "object", "properties": { "name": { "type": "string" }, "action": { "type": [ "null", "string" ] }, "threshold": { "type": [ "null", "number" ], "format": "double" }, "policy": { "type": [ "null", "string" ] }, "query": { "type": [ "null", "string" ] }, "instruction": { "type": [ "null", "string" ] } }, "additionalProperties": false, "description": "A per-request policy override. For a custom policy, Name and Policy are required; Action defaults to\nScan/Review by mode, Threshold defaults to 0.5, and Query defaults to a mode-appropriate yes/no question." }, "ShieldstralPolicyResult": { "required": [ "action", "policy", "score", "threshold", "topToken", "triggered" ], "type": "object", "properties": { "policy": { "type": "string" }, "action": { "type": "string" }, "threshold": { "type": "number", "format": "double" }, "score": { "type": "number", "format": "double" }, "triggered": { "type": "boolean" }, "topToken": { "type": "string" }, "finishReason": { "type": [ "null", "string" ] }, "responseId": { "type": [ "null", "string" ] }, "error": { "type": [ "null", "string" ] }, "policyHash": { "type": [ "null", "string" ] } }, "additionalProperties": false }, "ShieldstralPromptModerationInput": { "allOf": [ { "$ref": "#/components/schemas/ShieldstralModerationInput" }, { "required": [ "mode", "positivePrompt" ], "type": "object", "properties": { "positivePrompt": { "type": "string" }, "negativePrompt": { "type": [ "null", "string" ] }, "context": { "type": [ "null", "string" ], "description": "Optional product-specific context included in the document being moderated." }, "mode": { "enum": [ "prompt" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for evaluating an image-generation prompt with Shieldstral." }, "ShieldstralTextModerationInput": { "allOf": [ { "$ref": "#/components/schemas/ShieldstralModerationInput" }, { "required": [ "mode", "text" ], "type": "object", "properties": { "text": { "type": "string" }, "mode": { "enum": [ "text" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for evaluating arbitrary site text with Shieldstral." }, "SoniloAudioGenInput": { "required": [ "operation", "prompt" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "music" }, "prompt": { "maxLength": 2000, "type": "string" } }, "additionalProperties": false, "description": "Text-to-audio via Sonilo; `operation` picks music or a standalone sound effect.", "discriminator": { "propertyName": "operation", "mapping": { "music": "#/components/schemas/SoniloMusicInput", "soundEffect": "#/components/schemas/SoniloSoundEffectInput" } } }, "SoniloAudioGenOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/AudioBlob" } }, "additionalProperties": false }, "SoniloAudioGenStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/SoniloAudioGenInput" }, "output": { "$ref": "#/components/schemas/SoniloAudioGenOutput" }, "$type": { "enum": [ "soniloAudioGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate music or a standalone sound effect from a text prompt with Sonilo." }, "SoniloAudioGenStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/SoniloAudioGenInput" }, "$type": { "enum": [ "soniloAudioGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate music or a standalone sound effect from a text prompt with Sonilo." }, "SoniloMusicInput": { "allOf": [ { "$ref": "#/components/schemas/SoniloAudioGenInput" }, { "required": [ "operation" ], "type": "object", "properties": { "duration": { "maximum": 360, "minimum": 5, "type": "integer", "description": "Track length in seconds. Sonilo bills a minimum of 10 seconds.", "format": "int32", "default": 90 }, "operation": { "enum": [ "music" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a music track. Style, mood, instrumentation, lyrics and tempo are inferred from the prompt." }, "SoniloSoundEffectInput": { "allOf": [ { "$ref": "#/components/schemas/SoniloAudioGenInput" }, { "required": [ "operation" ], "type": "object", "properties": { "duration": { "maximum": 180, "minimum": 0.5, "type": "number", "description": "Effect length in seconds. Sonilo bills a minimum of 3 seconds.", "format": "double", "default": 8 }, "operation": { "enum": [ "soundEffect" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a standalone sound effect, e.g. \"heavy wooden door creaking open in a stone hallway\"." }, "Sora2ImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/SoraVideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "engine": { "enum": [ "sora" ], "type": "string" } }, "additionalProperties": false } ], "description": "Sora 2 Image-to-Video\nFAL Endpoints:\n- Standard: https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/sora-2/image-to-video\n- Pro: https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/sora-2/image-to-video/pro" }, "Sora2TextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/SoraVideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "operation": { "enum": [ "text-to-video" ], "type": "string" }, "engine": { "enum": [ "sora" ], "type": "string" } }, "additionalProperties": false } ], "description": "Sora 2 Text-to-Video\nFAL Endpoints:\n- Standard: https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/sora-2/text-to-video\n- Pro: https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/sora-2/text-to-video/pro" }, "SoraVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "duration": { "maximum": 12, "minimum": 4, "type": "integer", "format": "int32", "default": 4 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "auto", "16:9", "9:16" ], "type": "string", "default": "auto" }, "usePro": { "type": "boolean", "default": false }, "engine": { "enum": [ "sora" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Sora2TextToVideoInput", "image-to-video": "#/components/schemas/Sora2ImageToVideoInput" } } } ], "description": "Retired: OpenAI shut down the Sora 2 API on 2026-09-24 and new requests are rejected." }, "StarVectorImageToSvgInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyImageToSvgInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "model": { "enum": [ "starvector-1b", "starvector-8b" ], "type": "string", "default": "starvector-1b" }, "precision": { "enum": [ "fp16", "bf16" ], "type": "string", "default": "fp16" }, "maxLength": { "maximum": 16000, "minimum": 100, "type": "integer", "format": "int32", "default": 4000 }, "ecosystem": { "enum": [ "starvector" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "StreamingBlobAppendResponse": { "required": [ "nextSequence" ], "type": "object", "properties": { "nextSequence": { "type": "integer", "description": "The sequence number the blob expects next.", "format": "int64" } }, "additionalProperties": false }, "SystemMessage": { "allOf": [ { "$ref": "#/components/schemas/ChatCompletionMessage" }, { "required": [ "content", "role" ], "type": "object", "properties": { "content": { "type": "string", "description": "The system message content (text only)." }, "name": { "type": [ "null", "string" ], "description": "Optional name for the participant." }, "role": { "enum": [ "system" ], "type": "string" } }, "additionalProperties": false } ], "description": "A system message that sets the behavior of the assistant." }, "TextToImageInput": { "required": [ "cfgScale", "prompt", "seed" ], "type": "object", "properties": { "quantity": { "maximum": 100, "minimum": 1, "type": "integer", "description": "The number of batches to run.", "format": "int32", "default": 1 }, "batchSize": { "maximum": 100, "minimum": 1, "type": "integer", "description": "The size of each batch", "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", "description": "The AIR of the checkpoint model to use for generation.", "default": "urn:air:sd1:checkpoint:civitai:4384@128713" }, "additionalNetworks": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ImageJobNetworkParams" }, "description": "Get or set a associative list of additional networks. Use the AIR of the network as the key." }, "controlNets": { "type": "array", "items": { "$ref": "#/components/schemas/ImageJobControlNet" }, "description": "Get or set a associative list of ControlNets." }, "prompt": { "type": "string", "description": "The provided text prompt." }, "negativePrompt": { "type": [ "null", "string" ], "description": "The provided negative text prompt." }, "scheduler": { "$ref": "#/components/schemas/Scheduler" }, "steps": { "maximum": 150, "minimum": 1, "type": "integer", "description": "The number of steps for image generation.", "format": "int32", "default": 30 }, "cfgScale": { "maximum": 30, "minimum": 1, "type": "number", "description": "The CFG scale value for image generation.", "format": "double", "default": 7.5 }, "width": { "maximum": 4084, "minimum": 64, "type": "integer", "description": "The desired image width in pixels.", "format": "int32", "default": 512 }, "height": { "maximum": 4084, "minimum": 64, "type": "integer", "description": "The desired image height in pixels.", "format": "int32", "default": 512 }, "seed": { "maximum": 4294967295, "minimum": 0, "type": "integer", "description": "The seed to use in image generation. Defaults to a random value if left unpopulated.", "format": "int64" }, "clipSkip": { "type": "integer", "description": "The clip skip value for image generation.", "format": "int32", "default": 2 }, "imageMetadata": { "type": [ "null", "string" ], "description": "External metadata that will be stored with the image" }, "engine": { "type": [ "null", "string" ], "description": "An optional engine to use for generation." }, "outputFormat": { "$ref": "#/components/schemas/OutputFormat" }, "sourceImage": { "type": [ "null", "string" ], "description": "An optional source image to trigger img-to-img", "format": "source-image" }, "sourceImageDenoiseStrenght": { "type": "number", "description": "The strength/denoise factor for img2img (0.0-1.0). Lower values preserve more of the source image.", "format": "double", "default": 0.8 } }, "additionalProperties": false, "description": "Input for an text to image step." }, "TextToImageOutput": { "required": [ "images" ], "type": "object", "properties": { "images": { "type": "array", "items": { "$ref": "#/components/schemas/ImageBlob" }, "description": "A collection of output images." } }, "additionalProperties": false, "description": "Represents the output of a TextToImage workflow step." }, "TextToImageStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TextToImageInput" }, "output": { "$ref": "#/components/schemas/TextToImageOutput" }, "$type": { "enum": [ "textToImage" ], "type": "string" } }, "additionalProperties": false } ], "description": "TextToImage" }, "TextToImageStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TextToImageInput" }, "$type": { "enum": [ "textToImage" ], "type": "string" } }, "additionalProperties": false } ], "description": "TextToImage" }, "TextToSpeechInput": { "required": [ "engine", "text" ], "type": "object", "properties": { "engine": { "type": [ "null", "string" ], "default": "custom" }, "text": { "type": "string", "description": "The text to synthesize into speech." }, "language": { "type": [ "null", "string" ], "description": "Target language (e.g., \"English\", \"Chinese\"). Defaults to \"Auto\"." } }, "additionalProperties": false, "discriminator": { "propertyName": "engine", "mapping": { "custom": "#/components/schemas/CustomTextToSpeechInput", "vllm-omni": "#/components/schemas/VllmOmniTextToSpeechInput" } } }, "TextToSpeechOutput": { "required": [ "audioBlob" ], "type": "object", "properties": { "audioBlob": { "$ref": "#/components/schemas/AudioBlob" }, "modelType": { "type": [ "null", "string" ], "description": "Whether the TTS used \"base\" (voice cloning) or \"custom_voice\" (built-in speaker) mode." }, "speaker": { "type": [ "null", "string" ], "description": "The speaker name used (set for CustomVoice mode, null for Base mode)." } }, "additionalProperties": false, "description": "Output from text-to-speech workflow step." }, "TextToSpeechStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TextToSpeechInput" }, "output": { "$ref": "#/components/schemas/TextToSpeechOutput" }, "$type": { "enum": [ "textToSpeech" ], "type": "string" } }, "additionalProperties": false } ], "description": "Text-to-Speech" }, "TextToSpeechStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TextToSpeechInput" }, "$type": { "enum": [ "textToSpeech" ], "type": "string" } }, "additionalProperties": false } ], "description": "Text-to-Speech" }, "ToolMessage": { "allOf": [ { "$ref": "#/components/schemas/ChatCompletionMessage" }, { "required": [ "content", "role", "tool_call_id" ], "type": "object", "properties": { "content": { "type": "string", "description": "The tool result content." }, "tool_call_id": { "type": "string", "description": "The ID of the tool call this message is responding to." }, "role": { "enum": [ "tool" ], "type": "string" } }, "additionalProperties": false } ], "description": "A tool result message sent back after executing a tool call." }, "TraceMode": { "enum": [ "none", "logs", "binary" ], "type": "string", "description": "How much of a custom-comfy job's ComfyUI `/ws` activity to record to a\nstreaming blob the consumer can tail live." }, "TrainingData": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string" } }, "additionalProperties": false, "description": "Represents training data in various formats", "discriminator": { "propertyName": "type", "mapping": { "zip": "#/components/schemas/ZipTrainingData", "blobs": "#/components/schemas/BlobsTrainingData" } } }, "TrainingInput": { "required": [ "engine", "requiresAgeClassification", "trainingData", "usesStepPricing" ], "type": "object", "properties": { "engine": { "type": "string" }, "trainingData": { "$ref": "#/components/schemas/TrainingData" }, "samples": { "$ref": "#/components/schemas/TrainingInputSamples" }, "usesStepPricing": { "type": "boolean", "description": "Whether this run uses step-based pricing rather than the legacy flat per-epoch price.", "readOnly": true }, "requiresAgeClassification": { "type": "boolean", "description": "Whether age classification should run on this training type's dataset.", "readOnly": true } }, "additionalProperties": false, "description": "Input for a training step.", "discriminator": { "propertyName": "engine", "mapping": { "ai-toolkit": "#/components/schemas/AIToolkitTrainingInput", "comfy": "#/components/schemas/ComfyTrainingInput" } } }, "TrainingInputSamples": { "type": "object", "properties": { "prompts": { "type": "array", "items": { "type": "string" }, "description": "A selection of sample prompts to generate preview outputs during training." }, "negativePrompt": { "type": [ "null", "string" ], "description": "An optional negative prompt that will be applied when generating samples" }, "sourceImages": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Source images for edit training sample generation.\nProcessed by ISourceImageProcessor during initialization, then TryGetUri() yields URLs\nthat are passed as ReferenceImageUrls when generating samples with edit LoRAs." }, "cfgScale": { "type": [ "null", "number" ], "description": "CFG (guidance) scale for sample generation. When unset, each ecosystem uses its own default.", "format": "double" }, "strength": { "type": [ "null", "number" ], "description": "Strength of the trained LoRA when generating samples. Defaults to 1.0 when unset.", "format": "double" } }, "additionalProperties": false, "description": "Sample generation configuration for training workflows" }, "TrainingModerationStatus": { "enum": [ "evaluating", "underReview", "approved", "rejected" ], "type": "string", "description": "The moderation status of the training data" }, "TrainingOutput": { "required": [ "epochs", "moderationStatus" ], "type": "object", "properties": { "moderationStatus": { "$ref": "#/components/schemas/TrainingModerationStatus" }, "epochs": { "type": "array", "items": { "$ref": "#/components/schemas/TrainingOutputEpochResult" }, "description": "Every epoch of the run in epoch order, from the start of the step. Epochs that are still pending or\ntraining carry a model with `available: false` and no samples yet." } }, "additionalProperties": false, "description": "Output from a training step." }, "TrainingOutputEpochResult": { "required": [ "epochNumber", "model", "samples" ], "type": "object", "properties": { "epochNumber": { "type": "integer", "description": "The epoch number (1-based)", "format": "int32" }, "model": { "$ref": "#/components/schemas/Blob" }, "samples": { "type": "array", "items": { "$ref": "#/components/schemas/Blob" }, "description": "Sample outputs (images/videos/audio) generated with this epoch's model" }, "traceUrl": { "type": [ "null", "string" ], "description": "Tail-able live trace of this epoch's job, only when the input requested `trace`: plain text console\noutput for `logs`, or NDJSON for `events` where each line carries a unix-millisecond `t`,\na `type` and the `epoch`. Responds 404 until the worker has written its first line and stays\nopen (chunked) while the epoch job runs. Null for epochs served from an existing checkpoint.", "format": "uri" } }, "additionalProperties": false, "description": "Represents the output of a single training epoch" }, "TrainingStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TrainingInput" }, "output": { "$ref": "#/components/schemas/TrainingOutput" }, "$type": { "enum": [ "training" ], "type": "string" } }, "additionalProperties": false } ], "description": "Training" }, "TrainingStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TrainingInput" }, "$type": { "enum": [ "training" ], "type": "string" } }, "additionalProperties": false } ], "description": "Training" }, "TrainingTraceMode": { "enum": [ "none", "logs", "events" ], "type": "string", "description": "What an epoch job records to its live trace stream (`output.epochs[].traceUrl`), which the consumer can tail\nwhile the job runs." }, "TransactionInfo": { "required": [ "accountType", "amount", "type" ], "type": "object", "properties": { "type": { "$ref": "#/components/schemas/TransactionType" }, "amount": { "maximum": 2147483647, "minimum": 0, "type": "integer", "description": "The transaction amount.", "format": "int32" }, "id": { "type": [ "null", "string" ], "description": "The transaction ID." }, "accountType": { "$ref": "#/components/schemas/BuzzClientAccount" } }, "additionalProperties": false, "description": "Transaction information." }, "TransactionSummary": { "required": [ "list" ], "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionInfo" }, "description": "Get a list of individual transactions." }, "insufficientBuzz": { "type": [ "null", "boolean" ], "description": "A boolean returned with whatif requests to indicate whether the user has nsufficient buzz to run a workflow." } }, "additionalProperties": false }, "TransactionType": { "enum": [ "debit", "credit" ], "type": "string" }, "TranscodeInput": { "required": [ "sourceUrl", "width" ], "type": "object", "properties": { "sourceUrl": { "type": "string", "format": "uri" }, "containerFormat": { "$ref": "#/components/schemas/ContainerFormat" }, "width": { "type": "integer", "format": "int32" }, "destinationUrl": { "type": [ "null", "string" ], "format": "uri" }, "public": { "type": [ "null", "boolean" ], "description": "Serves the result at a stable unsigned url. Privileged callers only: nothing gates a read of\nit, so a block decided after the fact cannot take it back." }, "hideMetadata": { "type": [ "null", "boolean" ], "description": "Removes the source's container tags and chapters; the video and audio streams are untouched." } }, "additionalProperties": false }, "TranscodeOutput": { "required": [ "available", "id", "jobId" ], "type": "object", "properties": { "id": { "type": "string", "description": "Gets the id of the blob that contains the media." }, "available": { "type": "boolean", "description": "Gets a value indicating whether the media is available." }, "url": { "type": [ "null", "string" ], "description": "Gets a url that can be used to preview the media.", "format": "uri" }, "urlExpiresAt": { "type": [ "null", "string" ], "description": "Get when the url is set to expire", "format": "date-time" }, "jobId": { "type": "string", "description": "Get the id of the job that is associated with this media." }, "tier": { "type": [ "null", "string" ], "description": "Storage tier holding the blob; null when none was declared." } }, "additionalProperties": false }, "TranscodeStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TranscodeInput" }, "output": { "$ref": "#/components/schemas/TranscodeOutput" }, "$type": { "enum": [ "transcode" ], "type": "string" } }, "additionalProperties": false } ], "description": "Transcoding" }, "TranscodeStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TranscodeInput" }, "$type": { "enum": [ "transcode" ], "type": "string" } }, "additionalProperties": false } ], "description": "Transcoding" }, "TranscriptionInput": { "required": [ "mediaUrl" ], "type": "object", "properties": { "mediaUrl": { "type": "string", "description": "The URL of the audio media to transcribe.", "format": "uri" }, "language": { "type": [ "null", "string" ], "description": "Optional language hint (e.g., \"en\", \"zh\") to guide transcription." }, "context": { "type": [ "null", "string" ], "description": "Optional context prompt to improve transcription accuracy." }, "returnTimeStamps": { "type": "boolean", "description": "Whether to return word-level timestamps. Defaults to true.", "default": true } }, "additionalProperties": false }, "TranscriptionOutput": { "required": [ "elapsedSeconds", "language", "text", "timeStamps" ], "type": "object", "properties": { "text": { "type": "string", "description": "The full transcribed text." }, "language": { "type": "string", "description": "The detected language of the audio." }, "timeStamps": { "type": "array", "items": { "$ref": "#/components/schemas/TranscriptionTimeStamp" }, "description": "Word-level timestamps (if requested)." }, "elapsedSeconds": { "type": "number", "description": "Total processing time in seconds.", "format": "double" } }, "additionalProperties": false }, "TranscriptionStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TranscriptionInput" }, "output": { "$ref": "#/components/schemas/TranscriptionOutput" }, "$type": { "enum": [ "transcription" ], "type": "string" } }, "additionalProperties": false } ], "description": "Transcription" }, "TranscriptionStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/TranscriptionInput" }, "$type": { "enum": [ "transcription" ], "type": "string" } }, "additionalProperties": false } ], "description": "Transcription" }, "TranscriptionTimeStamp": { "required": [ "endTime", "startTime", "text" ], "type": "object", "properties": { "text": { "type": "string" }, "startTime": { "type": "number", "format": "double" }, "endTime": { "type": "number", "format": "double" } }, "additionalProperties": false }, "Trellis2ComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyPolyGenInput" }, { "required": [ "engine", "model", "operation" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "imageTo3D" }, "modelVersion": { "enum": [ "pixal3D", "trellis2" ], "type": "string", "default": "pixal3D" }, "modelAir": { "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" ] }, "structureSteps": { "maximum": 100, "minimum": 1, "type": "integer", "format": "int32", "default": 12 }, "shapeSteps": { "maximum": 100, "minimum": 1, "type": "integer", "format": "int32", "default": 20 }, "upsampleSteps": { "maximum": 100, "minimum": 1, "type": "integer", "format": "int32", "default": 12 }, "textureSteps": { "maximum": 100, "minimum": 1, "type": "integer", "format": "int32", "default": 12 }, "structureCfg": { "maximum": 30, "minimum": 0, "type": "number", "format": "double", "default": 7.5 }, "shapeCfg": { "maximum": 30, "minimum": 0, "type": "number", "format": "double", "default": 7.5 }, "textureCfg": { "maximum": 30, "minimum": 0, "type": "number", "format": "double", "default": 1 }, "targetResolution": { "maximum": 2048, "minimum": 1024, "enum": [ 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, 2048 ], "type": "integer", "format": "int32", "default": 1536 }, "shouldRemesh": { "type": "boolean", "default": true }, "remeshResolution": { "maximum": 2048, "minimum": 32, "type": "integer", "format": "int32", "default": 768 }, "targetFaceCount": { "maximum": 50000000, "minimum": 1000, "type": "integer", "format": "int32", "default": 700000 }, "textureResolution": { "maximum": 8192, "minimum": 64, "type": "integer", "format": "int32", "default": 2048 }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "model": { "enum": [ "trellis2" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "imageTo3D": "#/components/schemas/Trellis2ImageTo3DComfyPolyGenInput", "shapeGen": "#/components/schemas/Trellis2ShapeGenComfyPolyGenInput", "texGen": "#/components/schemas/Trellis2TexGenComfyPolyGenInput" } } } ] }, "Trellis2ImageTo3DComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/Trellis2ComfyPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "shouldTexture": { "type": "boolean", "default": true }, "enablePbr": { "type": "boolean", "default": true }, "operation": { "enum": [ "imageTo3D" ], "type": "string" }, "model": { "enum": [ "trellis2" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "Trellis2ShapeGenComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/Trellis2ComfyPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "operation": { "enum": [ "shapeGen" ], "type": "string" }, "model": { "enum": [ "trellis2" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "Trellis2TexGenComfyPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/Trellis2ComfyPolyGenInput" }, { "required": [ "engine", "imageUrl", "model", "operation" ], "type": "object", "properties": { "imageUrl": { "type": "string", "format": "uri" }, "enablePbr": { "type": "boolean", "default": true }, "operation": { "enum": [ "texGen" ], "type": "string" }, "model": { "enum": [ "trellis2" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "TripoFalPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/FalPolyGenInput" }, { "required": [ "engine", "imageUrl", "model" ], "type": "object", "properties": { "imageUrl": { "minLength": 1, "type": "string" }, "texture": { "enum": [ "no", "standard", "HD" ], "type": "string", "default": "standard" }, "pbr": { "type": "boolean", "default": false }, "faceLimit": { "maximum": 500000, "minimum": 1000, "type": [ "null", "integer" ], "format": "int32" }, "autoSize": { "type": "boolean", "default": false }, "quad": { "type": "boolean", "description": "Quad topology. Forces the mesh output to FBX instead of GLB.", "default": false }, "textureAlignment": { "enum": [ "original_image", "geometry" ], "type": "string", "default": "original_image" }, "orientation": { "enum": [ "default", "align_image" ], "type": "string", "default": "default" }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "textureSeed": { "type": [ "null", "integer" ], "format": "int32" }, "model": { "enum": [ "tripo" ], "type": "string" }, "engine": { "enum": [ "fal" ], "type": "string" } }, "additionalProperties": false } ] }, "TryOnUInput": { "required": [ "cropSubject", "garmentUrl", "maskSubject", "seed", "subjectUrl" ], "type": "object", "properties": { "subjectUrl": { "type": "string", "format": "uri" }, "garmentUrl": { "type": "string", "format": "uri" }, "subjectMaskUrl": { "type": [ "null", "string" ], "format": "uri" }, "subjectMaskBlobKey": { "type": [ "null", "string" ] }, "garmentDescription": { "type": [ "null", "string" ] }, "maskSubject": { "type": "boolean" }, "cropSubject": { "type": "boolean" }, "steps": { "maximum": 150, "minimum": 1, "type": "integer", "format": "int32", "default": 30 }, "seed": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "TryOnUOutput": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/Blob" } }, "additionalProperties": false }, "UnavailableResourceAvailability": { "allOf": [ { "$ref": "#/components/schemas/ResourceAvailability" }, { "required": [ "status" ], "type": "object", "properties": { "status": { "enum": [ "unavailable" ], "type": "string" } }, "additionalProperties": false } ], "description": "Eligible, but nothing is pulling it. A resource waiting in a download lane reports\nCivitai.Orchestration.Grains.Resources.QueuedResourceAvailability instead." }, "UniRigPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/PolyGenInput" }, { "required": [ "engine", "operation" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "rig" }, "seed": { "type": [ "null", "integer" ], "format": "int64" }, "engine": { "enum": [ "unirig" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "rig": "#/components/schemas/UniRigRigPolyGenInput" } } } ] }, "UniRigRigPolyGenInput": { "allOf": [ { "$ref": "#/components/schemas/UniRigPolyGenInput" }, { "required": [ "engine", "mesh", "operation" ], "type": "object", "properties": { "mesh": { "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" }, "heightMeters": { "maximum": 100, "minimum": 0.01, "type": [ "null", "number" ], "format": "double" }, "skeleton": { "enum": [ "mixamo", "generic" ], "type": "string", "default": "mixamo" }, "operation": { "enum": [ "rig" ], "type": "string" }, "engine": { "enum": [ "unirig" ], "type": "string" } }, "additionalProperties": false } ] }, "UnsupportedResourceAvailability": { "allOf": [ { "$ref": "#/components/schemas/ResourceAvailability" }, { "required": [ "status" ], "type": "object", "properties": { "status": { "enum": [ "unsupported" ], "type": "string" } }, "additionalProperties": false } ] }, "UpdateWorkflowRequest": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/UpdateWorkflowStatus" }, "metadata": { "type": [ "null", "object" ], "additionalProperties": { }, "description": "An optional set of new properties to set on the workflow." }, "tags": { "type": [ "null", "array" ], "items": { "type": "string" }, "description": "An optional set of new tags to set on the workflow." }, "allowMatureContent": { "type": [ "null", "boolean" ], "description": "Set to true to remove the mature content restriction on the workflow." }, "downloadPriority": { "$ref": "#/components/schemas/Priority" } }, "additionalProperties": false, "description": "An request for updating a workflow." }, "UpdateWorkflowStatus": { "enum": [ "canceled" ], "type": "string", "description": "Available statuses for updating workflows." }, "UpdateWorkflowStepRequest": { "required": [ "metadata" ], "type": "object", "properties": { "metadata": { "type": "object", "additionalProperties": { }, "description": "An set of new properties to set on the workflow step." } }, "additionalProperties": false }, "UserMessage": { "allOf": [ { "$ref": "#/components/schemas/ChatCompletionMessage" }, { "required": [ "content", "role" ], "type": "object", "properties": { "content": { "type": "array", "items": { "$ref": "#/components/schemas/ChatCompletionContentPart" }, "description": "The message content - can be a simple string or array of content parts.\nWhen deserialized from a string, it will be converted to a single TextContentPart." }, "name": { "type": [ "null", "string" ], "description": "Optional name for the participant." }, "role": { "enum": [ "user" ], "type": "string" } }, "additionalProperties": false } ], "description": "A user message that can contain text and/or images." }, "VTracerImageToSvgInput": { "allOf": [ { "$ref": "#/components/schemas/ComfyImageToSvgInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "hierarchical": { "enum": [ "stacked", "cutout" ], "type": "string", "default": "stacked" }, "mode": { "enum": [ "spline", "polygon", "none" ], "type": "string", "default": "spline" }, "filterSpeckle": { "maximum": 100, "minimum": 0, "type": "integer", "format": "int32", "default": 8 }, "colorPrecision": { "maximum": 10, "minimum": 0, "type": "integer", "format": "int32", "default": 6 }, "layerDifference": { "maximum": 256, "minimum": 0, "type": "integer", "format": "int32", "default": 24 }, "cornerThreshold": { "maximum": 180, "minimum": 0, "type": "integer", "format": "int32", "default": 65 }, "lengthThreshold": { "maximum": 10, "minimum": 3.5, "type": "number", "format": "double", "default": 5 }, "maxIterations": { "maximum": 70, "minimum": 1, "type": "integer", "format": "int32", "default": 10 }, "spliceThreshold": { "maximum": 180, "minimum": 0, "type": "integer", "format": "int32", "default": 50 }, "pathPrecision": { "maximum": 10, "minimum": 0, "type": "integer", "format": "int32", "default": 2 }, "ecosystem": { "enum": [ "vtracer" ], "type": "string" }, "engine": { "enum": [ "comfy" ], "type": "string" } }, "additionalProperties": false } ] }, "ValidationProblemDetails": { "required": [ "errors" ], "type": "object", "properties": { "type": { "type": [ "null", "string" ] }, "title": { "type": [ "null", "string" ] }, "status": { "type": [ "null", "integer" ], "format": "int32" }, "detail": { "type": [ "null", "string" ] }, "instance": { "type": [ "null", "string" ] }, "errors": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } }, "additionalProperties": { } }, "ValueTupleOfDoubleAndDouble": { "type": "object", "additionalProperties": false }, "ValueTupleOfStringAndInt32": { "type": "object", "additionalProperties": false }, "Veo3AspectRatio": { "enum": [ "16:9", "9:16", "1:1" ], "type": "string" }, "Veo3GenerationMode": { "enum": [ "standard", "fast", "lite" ], "type": "string" }, "Veo3Version": { "enum": [ "3.0", "3.1" ], "type": "string", "description": "Google retired the Veo 3.0 endpoints on 2026-08-28; requests with `3.0` are rejected with 400. Use `3.1`." }, "Veo3VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine", "generateAudio" ], "type": "object", "properties": { "negativePrompt": { "type": [ "null", "string" ] }, "enablePromptEnhancer": { "type": "boolean", "default": true }, "aspectRatio": { "$ref": "#/components/schemas/Veo3AspectRatio" }, "duration": { "enum": [ 4, 6, 8 ], "type": "integer", "format": "int32", "default": 8 }, "generateAudio": { "type": "boolean" }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "fastMode": { "type": "boolean", "default": false }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "version": { "$ref": "#/components/schemas/Veo3Version" }, "mode": { "$ref": "#/components/schemas/Veo3GenerationMode" }, "engine": { "enum": [ "veo3" ], "type": "string" } }, "additionalProperties": false } ] }, "VideoBackgroundRemovalInput": { "required": [ "video" ], "type": "object", "properties": { "video": { "type": "string", "format": "uri" }, "foregroundPoints": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/VideoBackgroundRemovalPoint" } }, "backgroundPoints": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/VideoBackgroundRemovalPoint" } }, "maskExpansion": { "maximum": 32, "minimum": -32, "type": "integer", "format": "int32", "default": 0 }, "maskFeather": { "maximum": 32, "minimum": 0, "type": "number", "format": "double", "default": 2 } }, "additionalProperties": false }, "VideoBackgroundRemovalOutput": { "type": "object", "properties": { "video": { "$ref": "#/components/schemas/VideoBlob" } }, "additionalProperties": false }, "VideoBackgroundRemovalPoint": { "required": [ "x", "y" ], "type": "object", "properties": { "x": { "maximum": 1, "minimum": 0, "type": "number", "format": "double" }, "y": { "maximum": 1, "minimum": 0, "type": "number", "format": "double" } }, "additionalProperties": false }, "VideoBackgroundRemovalStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoBackgroundRemovalInput" }, "output": { "$ref": "#/components/schemas/VideoBackgroundRemovalOutput" }, "$type": { "enum": [ "videoBackgroundRemoval" ], "type": "string" } }, "additionalProperties": false } ], "description": "Tracks a prompted foreground object across a video and returns a lossless animated WebP with transparency." }, "VideoBackgroundRemovalStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoBackgroundRemovalInput" }, "$type": { "enum": [ "videoBackgroundRemoval" ], "type": "string" } }, "additionalProperties": false } ], "description": "Tracks a prompted foreground object across a video and returns a lossless animated WebP with transparency." }, "VideoBlob": { "allOf": [ { "$ref": "#/components/schemas/Blob" }, { "required": [ "type" ], "type": "object", "properties": { "width": { "type": [ "null", "integer" ], "format": "int32" }, "height": { "type": [ "null", "integer" ], "format": "int32" }, "duration": { "type": [ "null", "number" ], "description": "In seconds", "format": "float" }, "type": { "enum": [ "video" ], "type": "string" } }, "additionalProperties": false } ] }, "VideoComposeMediaOutput": { "allOf": [ { "$ref": "#/components/schemas/ComposeMediaOutput" }, { "required": [ "type", "videoBlob" ], "type": "object", "properties": { "videoBlob": { "$ref": "#/components/schemas/VideoBlob" }, "type": { "enum": [ "video" ], "type": "string" } }, "additionalProperties": false } ], "description": "A video composition produced when any element is video, or video output was requested." }, "VideoEnhancementInput": { "required": [ "sourceUrl" ], "type": "object", "properties": { "sourceUrl": { "type": "string", "format": "uri" }, "upscaler": { "$ref": "#/components/schemas/VideoEnhancementInputUpscalerOptions" }, "interpolation": { "$ref": "#/components/schemas/VideoEnhancementInputInterpolationOptions" } }, "additionalProperties": false }, "VideoEnhancementInputInterpolationOptions": { "required": [ "multiplier" ], "type": "object", "properties": { "multiplier": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "VideoEnhancementInputUpscalerOptions": { "required": [ "height", "width" ], "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" ] }, "width": { "type": "integer", "format": "int32" }, "height": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "VideoEnhancementOutput": { "type": "object", "properties": { "video": { "$ref": "#/components/schemas/VideoBlob" } }, "additionalProperties": false }, "VideoEnhancementStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoEnhancementInput" }, "output": { "$ref": "#/components/schemas/VideoEnhancementOutput" }, "$type": { "enum": [ "videoEnhancement" ], "type": "string" } }, "additionalProperties": false } ], "description": "Upscale videos and/or interpolate frames" }, "VideoEnhancementStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoEnhancementInput" }, "$type": { "enum": [ "videoEnhancement" ], "type": "string" } }, "additionalProperties": false } ], "description": "Upscale videos and/or interpolate frames" }, "VideoFrameExtractionInput": { "required": [ "videoUrl" ], "type": "object", "properties": { "videoUrl": { "type": "string", "description": "The URL of the video to extract frames from.", "format": "uri" }, "frameRate": { "type": "number", "description": "The rate at which to extract frames (frames per second).\nDefault is 1.0 (one frame per second).", "format": "double", "default": 1 }, "uniqueThreshold": { "type": "number", "description": "The similarity threshold for determining unique frames (0.0 to 1.0).\nFrames with similarity above this threshold are considered duplicates and filtered out.\nDefault is 0.9 (90% similarity).", "format": "double", "default": 0.9 }, "maxFrames": { "type": [ "null", "integer" ], "description": "Optional maximum number of unique frames to extract.\nIf null, all unique frames will be extracted.", "format": "int32" }, "startTime": { "type": "number", "description": "Time in seconds to seek to before extracting frames.\nDefault is 0 (start of video).", "format": "double", "default": 0 }, "public": { "type": [ "null", "boolean" ], "description": "Serves the frames at stable unsigned urls. Privileged callers only: nothing gates a read of\none, so a block decided after the fact cannot take it back." } }, "additionalProperties": false, "description": "Represents the input information needed for the VideoFrameExtraction workflow step." }, "VideoFrameExtractionOutput": { "required": [ "frames", "totalFramesExtracted" ], "type": "object", "properties": { "frames": { "type": "array", "items": { "$ref": "#/components/schemas/ImageBlob" }, "description": "A collection of extracted unique video frames as image blobs." }, "totalFramesExtracted": { "type": "integer", "description": "The total number of unique frames extracted from the video.", "format": "int32" } }, "additionalProperties": false, "description": "Represents the output from the VideoFrameExtraction workflow step." }, "VideoFrameExtractionStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoFrameExtractionInput" }, "output": { "$ref": "#/components/schemas/VideoFrameExtractionOutput" }, "$type": { "enum": [ "videoFrameExtraction" ], "type": "string" } }, "additionalProperties": false } ], "description": "Video Frame Extraction" }, "VideoFrameExtractionStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoFrameExtractionInput" }, "$type": { "enum": [ "videoFrameExtraction" ], "type": "string" } }, "additionalProperties": false } ], "description": "Video Frame Extraction" }, "VideoGenInput": { "required": [ "engine", "prompt" ], "type": "object", "properties": { "engine": { "type": "string" }, "prompt": { "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "engine", "mapping": { "haiper": "#/components/schemas/HaiperVideoGenInput", "mochi": "#/components/schemas/MochiVideoGenInput", "kling": "#/components/schemas/KlingVideoGenInput", "minimax": "#/components/schemas/MiniMaxVideoGenInput", "lightricks": "#/components/schemas/LightricksVideoGenInput", "ltx2": "#/components/schemas/ComfyLtx2VideoGenInput", "ltx2.3": "#/components/schemas/ComfyLtx23VideoGenInput", "ltx2.5": "#/components/schemas/ComfyLtx25VideoGenInput", "hunyuan": "#/components/schemas/HunyuanVdeoGenInput", "wan": "#/components/schemas/WanVideoGenInput", "vidu": "#/components/schemas/ViduVideoGenInput", "vidu-q3": "#/components/schemas/ViduQ3VideoGenInput", "veo3": "#/components/schemas/Veo3VideoGenInput", "gemini-omni": "#/components/schemas/GeminiOmniVideoGenInput", "sora": "#/components/schemas/SoraVideoGenInput", "kling-v3": "#/components/schemas/KlingV3VideoGenInput", "grok": "#/components/schemas/GrokVideoGenInput", "seedance": "#/components/schemas/SeedanceVideoGenInput", "happyHorse": "#/components/schemas/HappyHorseVideoGenInput", "heygen": "#/components/schemas/HeyGenVideoGenInput", "minimax-h3-max": "#/components/schemas/MiniMaxH3MaxVideoGenInput", "minimax-h3": "#/components/schemas/MiniMaxH3VideoGenInput", "minimax-h3-comfy": "#/components/schemas/ComfyMiniMaxH3VideoGenInput", "flux": "#/components/schemas/Flux3VideoGenInput" } } }, "VideoGenInputLora": { "required": [ "air", "strength" ], "type": "object", "properties": { "air": { "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" }, "strength": { "type": "number", "format": "double" } }, "additionalProperties": false }, "VideoGenOutput": { "type": "object", "properties": { "video": { "$ref": "#/components/schemas/VideoBlob" }, "additionalVideos": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/VideoBlob" }, "description": "Extra videos produced by the step when Quantity > 1. Always null/empty for single-output\nengines; populated alongside Civitai.Orchestration.Grains.Workflows.Steps.VideoGen.VideoGenOutput.Video (the primary slot) by engines that batch\nmultiple videos in a single job (e.g. LTX 2.3)." }, "draftCache": { "$ref": "#/components/schemas/Blob" } }, "additionalProperties": false }, "VideoGenStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoGenInput" }, "output": { "$ref": "#/components/schemas/VideoGenOutput" }, "$type": { "enum": [ "videoGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "Video generation" }, "VideoGenStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoGenInput" }, "$type": { "enum": [ "videoGen" ], "type": "string" } }, "additionalProperties": false } ], "description": "Video generation" }, "VideoInterpolationInput": { "required": [ "video" ], "type": "object", "properties": { "video": { "type": "string", "format": "uri" }, "interpolationFactor": { "maximum": 3, "minimum": 2, "type": "integer", "format": "int32", "default": 2 }, "model": { "type": "string", "default": "VFIMamba" } }, "additionalProperties": false }, "VideoInterpolationOutput": { "type": "object", "properties": { "video": { "$ref": "#/components/schemas/VideoBlob" } }, "additionalProperties": false }, "VideoInterpolationStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoInterpolationInput" }, "output": { "$ref": "#/components/schemas/VideoInterpolationOutput" }, "$type": { "enum": [ "videoInterpolation" ], "type": "string" } }, "additionalProperties": false } ], "description": "Interpolate videos using VFI Mamba" }, "VideoInterpolationStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoInterpolationInput" }, "$type": { "enum": [ "videoInterpolation" ], "type": "string" } }, "additionalProperties": false } ], "description": "Interpolate videos using VFI Mamba" }, "VideoMetadataInput": { "required": [ "video" ], "type": "object", "properties": { "video": { "type": "string", "description": "The video file to extract metadata from.", "format": "uri" } }, "additionalProperties": false, "description": "Represents the input information needed for the VideoMetadata workflow step." }, "VideoMetadataOutput": { "required": [ "duration", "fps", "height", "width" ], "type": "object", "properties": { "width": { "type": "integer", "description": "The width of the video in pixels.", "format": "int32" }, "height": { "type": "integer", "description": "The height of the video in pixels.", "format": "int32" }, "fps": { "type": "number", "description": "The frame rate of the video in frames per second.", "format": "double" }, "duration": { "type": "string", "description": "The duration of the video.", "format": "date-span" } }, "additionalProperties": false, "description": "Represents the output information returned from the VideoMetadata workflow step." }, "VideoMetadataStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoMetadataInput" }, "output": { "$ref": "#/components/schemas/VideoMetadataOutput" }, "$type": { "enum": [ "videoMetadata" ], "type": "string" } }, "additionalProperties": false } ], "description": "Extract metadata from videos including width, height, FPS, and duration" }, "VideoMetadataStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoMetadataInput" }, "$type": { "enum": [ "videoMetadata" ], "type": "string" } }, "additionalProperties": false } ], "description": "Extract metadata from videos including width, height, FPS, and duration" }, "VideoUpscalerInput": { "required": [ "video" ], "type": "object", "properties": { "video": { "type": "string", "format": "uri" }, "scaleFactor": { "maximum": 4, "minimum": 2, "type": "integer", "format": "int32", "default": 2 } }, "additionalProperties": false }, "VideoUpscalerOutput": { "type": "object", "properties": { "video": { "$ref": "#/components/schemas/VideoBlob" } }, "additionalProperties": false }, "VideoUpscalerStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoUpscalerInput" }, "output": { "$ref": "#/components/schemas/VideoUpscalerOutput" }, "$type": { "enum": [ "videoUpscaler" ], "type": "string" } }, "additionalProperties": false } ], "description": "Upscale videos using FlashVSR" }, "VideoUpscalerStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/VideoUpscalerInput" }, "$type": { "enum": [ "videoUpscaler" ], "type": "string" } }, "additionalProperties": false } ], "description": "Upscale videos using FlashVSR" }, "ViduQ3VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine" ], "type": "object", "properties": { "seed": { "type": [ "null", "integer" ], "format": "int32" }, "duration": { "maximum": 16, "minimum": 1, "type": "integer", "format": "int32", "default": 5 }, "resolution": { "enum": [ "360p", "540p", "720p", "1080p" ], "type": "string", "default": "720p" }, "turbo": { "type": "boolean", "default": false }, "enableAudio": { "type": "boolean", "default": true }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": [ "null", "string" ] }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "engine": { "enum": [ "vidu-q3" ], "type": "string" } }, "additionalProperties": false } ] }, "ViduVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "engine" ], "type": "object", "properties": { "enablePromptEnhancer": { "type": "boolean", "default": true }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "style": { "$ref": "#/components/schemas/ViduVideoGenStyle" }, "duration": { "enum": [ 4, 8 ], "type": "integer", "format": "int32", "default": 4 }, "endSourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "model": { "$ref": "#/components/schemas/ViduVideoGenModel" }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1" ], "type": [ "null", "string" ] }, "movementAmplitude": { "enum": [ "auto", "small", "medium", "large" ], "type": [ "null", "string" ] }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "enableBackgroundMusic": { "type": "boolean", "default": false }, "engine": { "enum": [ "vidu" ], "type": "string" } }, "additionalProperties": false } ] }, "ViduVideoGenModel": { "enum": [ "default", "q1", "q3" ], "type": "string" }, "ViduVideoGenStyle": { "enum": [ "general", "anime" ], "type": "string" }, "VllmOmniTextToSpeechInput": { "allOf": [ { "$ref": "#/components/schemas/TextToSpeechInput" }, { "required": [ "ecosystem", "engine" ], "type": "object", "properties": { "ecosystem": { "type": "string" }, "engine": { "enum": [ "vllm-omni" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "ecosystem", "mapping": { "qwen3": "#/components/schemas/Qwen3TextToSpeechInput", "omnivoice": "#/components/schemas/OmniVoiceTextToSpeechInput" } } } ] }, "VolumeTransformer": { "allOf": [ { "$ref": "#/components/schemas/MediaTransformer" }, { "required": [ "db", "type" ], "type": "object", "properties": { "db": { "type": "number", "description": "Gain adjustment in dB.", "format": "float" }, "type": { "enum": [ "volume" ], "type": "string" } }, "additionalProperties": false } ], "description": "Adjusts the element's audio gain in decibels. `0` is unity gain; negative values\nattenuate. No-op for elements with no audio stream." }, "WDTaggingInput": { "required": [ "mediaUrl" ], "type": "object", "properties": { "model": { "type": [ "null", "string" ], "description": "The model to use for tagging. Tagging always runs with \"cl-tagger.v2\"; any other model, including the\ndefault \"wd14-vit.v1\", is deprecated and produces a warning." }, "mediaUrl": { "type": "string", "description": "The URL of the image to tag.", "format": "uri" }, "threshold": { "type": [ "null", "number" ], "description": "Optional threshold for tag confidence filtering. Tags below this threshold will be excluded.\nThe tagger never returns tags scoring below its own minimum, so lower values have no effect.", "format": "double" }, "prompt": { "type": [ "null", "string" ], "description": "Ignored; kept for compatibility." } }, "additionalProperties": false, "description": "Represents the input information needed for the WDTagging workflow step." }, "WDTaggingOutput": { "required": [ "tags" ], "type": "object", "properties": { "tags": { "type": "object", "additionalProperties": { "type": "number", "format": "double" }, "description": "The detected tags with their confidence scores." }, "rating": { "type": [ "null", "object" ], "additionalProperties": { "type": "number", "format": "double" }, "description": "The content rating scores (general, sensitive, questionable, explicit)." } }, "additionalProperties": false, "description": "Represents the output information returned from the WDTagging workflow step." }, "WDTaggingStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/WDTaggingInput" }, "output": { "$ref": "#/components/schemas/WDTaggingOutput" }, "$type": { "enum": [ "wdTagging" ], "type": "string" } }, "additionalProperties": false } ], "description": "WDTagging" }, "WDTaggingStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/WDTaggingInput" }, "$type": { "enum": [ "wdTagging" ], "type": "string" } }, "additionalProperties": false } ], "description": "WDTagging" }, "Wan21CivitaiVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan21VideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "width": { "type": "integer", "format": "int32", "default": 480 }, "height": { "type": "integer", "format": "int32", "default": 480 }, "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" ] }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "provider": { "enum": [ "civitai" ], "type": "string" }, "version": { "enum": [ "v2.1" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan21FalVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan21VideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "1:1", "16:9", "9:16" ], "type": "string", "default": "16:9" }, "enablePromptExpansion": { "type": "boolean", "default": false }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.1" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan21VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "civitai" }, "version": { "enum": [ "v2.1" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "civitai": "#/components/schemas/Wan21CivitaiVideoGenInput", "fal": "#/components/schemas/Wan21FalVideoGenInput" } } } ] }, "Wan225bFalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan225bImageGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2-5b" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan225bFalImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan225bFalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2-5b" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan225bFalTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan225bFalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "enum": [ "text-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2-5b" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan225bFalVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan225bVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "resolution": { "enum": [ "480p", "580p", "720p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "1:1", "16:9", "9:16", "auto" ], "type": "string", "default": "16:9" }, "enablePromptExpansion": { "type": "boolean", "default": false }, "useDistill": { "type": "boolean", "default": false }, "useFastWan": { "type": "boolean", "default": false }, "interpolatorModel": { "enum": [ "none", "film", "rife" ], "type": "string", "default": "film" }, "negativePrompt": { "type": [ "null", "string" ] }, "enableSafetyChecker": { "type": "boolean", "default": false }, "numInferenceSteps": { "maximum": 50, "minimum": 2, "type": "integer", "format": "int32", "default": 20 }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2-5b" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Wan225bFalTextToVideoInput", "image-to-video": "#/components/schemas/Wan225bFalImageToVideoInput" } } } ] }, "Wan225bImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanImageGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "steps": { "maximum": 50, "minimum": 2, "type": "integer", "format": "int32", "default": 40 }, "shift": { "maximum": 10, "minimum": 1, "type": "number", "format": "double", "default": 2 }, "version": { "enum": [ "v2.2-5b" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan225bFalImageGenInput" } } } ] }, "Wan225bVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.2-5b" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan225bFalVideoGenInput" } } } ] }, "Wan22ComfyVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan22VideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "width": { "maximum": 2048, "minimum": 64, "type": "integer", "format": "int32", "default": 1280 }, "height": { "maximum": 2048, "minimum": 64, "type": "integer", "format": "int32", "default": 720 }, "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" ] }, "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "negativePrompt": { "type": [ "null", "string" ] }, "sampler": { "enum": [ "euler", "euler_ancestral", "heun", "heunpp2", "dpm_2", "dpm_2_ancestral", "lms", "dpm_fast", "dpm_adaptive", "dpmpp_2s_ancestral", "dpmpp_sde", "dpmpp_2m", "dpmpp_2m_sde", "dpmpp_3m_sde", "ddpm", "lcm", "uni_pc", "uni_pc_bh2" ], "type": "string", "default": "euler" }, "scheduler": { "enum": [ "normal", "karras", "exponential", "sgm_uniform", "simple", "ddim_uniform", "beta" ], "type": "string", "default": "simple" }, "shift": { "maximum": 20, "minimum": 1, "type": "number", "format": "double", "default": 8 }, "provider": { "enum": [ "comfy" ], "type": "string" }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan22FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan22ImageGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "acceleration": { "enum": [ "none", "fast", "faster" ], "type": "string", "default": "none" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan22FalImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan22FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan22FalTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan22FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "enum": [ "text-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan22FalVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan22VideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "resolution": { "enum": [ "480p", "720p" ], "type": "string", "default": "720p" }, "aspectRatio": { "enum": [ "1:1", "16:9", "9:16", "4:3", "3:4", "4:5", "5:4" ], "type": "string", "default": "16:9" }, "enablePromptExpansion": { "type": "boolean", "default": false }, "shift": { "maximum": 10, "minimum": 1, "type": "number", "format": "double", "default": 5 }, "interpolatorModel": { "enum": [ "film", "rife" ], "type": "string", "default": "film" }, "useTurbo": { "type": "boolean", "default": false }, "negativePrompt": { "type": [ "null", "string" ] }, "enableSafetyChecker": { "type": "boolean", "default": false }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Wan22FalTextToVideoInput", "image-to-video": "#/components/schemas/Wan22FalImageToVideoInput" } } } ] }, "Wan22ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanImageGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "steps": { "maximum": 40, "minimum": 2, "type": "integer", "format": "int32", "default": 27 }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan22FalImageGenInput" } } } ] }, "Wan22VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.2" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan22FalVideoGenInput", "comfy": "#/components/schemas/Wan22ComfyVideoGenInput" } } } ] }, "Wan25FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan25ImageGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-image" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-image": "#/components/schemas/Wan25FalTextToImageInput", "image-to-image": "#/components/schemas/Wan25FalImageToImageInput" } } } ] }, "Wan25FalImageToImageInput": { "allOf": [ { "$ref": "#/components/schemas/Wan25FalImageGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-image" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan25FalImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan25FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan25FalTextToImageInput": { "allOf": [ { "$ref": "#/components/schemas/Wan25FalImageGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "enum": [ "text-to-image" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan25FalTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan25FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "enum": [ "text-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan25FalVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan25VideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "resolution": { "enum": [ "480p", "720p", "1080p" ], "type": "string", "default": "1080p" }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1" ], "type": "string", "default": "16:9" }, "enablePromptExpansion": { "type": "boolean", "default": true }, "negativePrompt": { "type": [ "null", "string" ] }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Wan25FalTextToVideoInput", "image-to-video": "#/components/schemas/Wan25FalImageToVideoInput" } } } ] }, "Wan25ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanImageGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan25FalImageGenInput" } } } ] }, "Wan25VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.5" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan25FalVideoGenInput" } } } ] }, "Wan26FalImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan26FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" } }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.6" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan26FalReferenceToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan26FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "referenceVideoUrls": { "type": "array", "items": { "type": "string" }, "description": "Reference videos for subject consistency (1-3 videos with minimum 16 FPS)\nUse @Video1, @Video2, @Video3 in the prompt to reference these subjects" }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "duration": { "maximum": 10, "minimum": 5, "type": "integer", "description": "Duration for reference-to-video is limited to 5 or 10 seconds", "format": "int32", "default": 5 }, "operation": { "enum": [ "reference-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.6" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan26FalTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan26FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "text-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.6" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan26FalVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan26VideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "1080p" }, "negativePrompt": { "type": [ "null", "string" ] }, "enablePromptExpansion": { "type": "boolean", "default": true }, "multiShots": { "type": "boolean", "default": false }, "enableSafetyChecker": { "type": "boolean", "default": false }, "audioUrl": { "type": [ "null", "string" ], "description": "URL of audio file for background music (3-30 seconds, up to 15 MB)\nSupported for text-to-video and image-to-video only" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.6" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Wan26FalTextToVideoInput", "image-to-video": "#/components/schemas/Wan26FalImageToVideoInput", "reference-to-video": "#/components/schemas/Wan26FalReferenceToVideoInput" } } } ] }, "Wan26VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.6" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan26FalVideoGenInput" } } } ] }, "Wan27FalEditVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version", "videoUrl" ], "type": "object", "properties": { "videoUrl": { "minLength": 1, "type": "string", "description": "URL of the input video to edit (MP4/MOV, 2-10s, max 100 MB)" }, "referenceImage": { "type": [ "null", "string" ], "description": "Reference image for reference-based editing", "format": "source-image" }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": [ "null", "string" ], "description": "Aspect ratio of the generated video. If not provided, uses the input video's aspect ratio." }, "audioSetting": { "enum": [ "auto", "origin" ], "type": "string", "description": "Audio handling: \"auto\" or \"origin\" (keep original audio)", "default": "auto" }, "operation": { "enum": [ "edit-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan27FalImageEditInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27FalImageGenInput" }, { "required": [ "engine", "images", "operation", "provider", "version" ], "type": "object", "properties": { "images": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Reference images for editing (1-4 images required)" }, "operation": { "enum": [ "editImage" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan27FalImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27ImageGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "createImage" }, "usePro": { "type": "boolean", "default": false }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/Wan27FalTextToImageInput", "editImage": "#/components/schemas/Wan27FalImageEditInput" } } } ] }, "Wan27FalImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "startImage": { "type": [ "null", "string" ], "description": "First frame image URL", "format": "source-image" }, "endImage": { "type": [ "null", "string" ], "description": "Last frame image for first-and-last-frame-to-video", "format": "source-image" }, "videoUrl": { "type": [ "null", "string" ], "description": "URL of a video clip to continue from (MP4/MOV, 2-10s, max 100 MB)" }, "negativePrompt": { "type": [ "null", "string" ] }, "enablePromptExpansion": { "type": "boolean", "default": true }, "audioUrl": { "type": [ "null", "string" ], "description": "URL of audio file (WAV/MP3, 3-30 seconds, up to 15 MB)" }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan27FalReferenceToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "referenceImages": { "type": "array", "items": { "type": "string", "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "description": "Reference images for character/object appearance (max 20 MB each)" }, "referenceVideoUrls": { "type": "array", "items": { "type": "string" }, "description": "Reference videos for character/object appearance and motion (max 100 MB each)\nUse @Video1, @Video2, @Video3 in the prompt to reference subjects" }, "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "multiShots": { "type": "boolean", "default": false }, "negativePrompt": { "type": [ "null", "string" ] }, "operation": { "enum": [ "reference-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan27FalTextToImageInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27FalImageGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "enum": [ "createImage" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan27FalTextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27FalVideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "negativePrompt": { "type": [ "null", "string" ] }, "enablePromptExpansion": { "type": "boolean", "default": true }, "audioUrl": { "type": [ "null", "string" ], "description": "URL of audio file (WAV/MP3, 3-30 seconds, up to 15 MB)" }, "operation": { "enum": [ "text-to-video" ], "type": "string" }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan27FalVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/Wan27VideoGenInput" }, { "required": [ "engine", "operation", "provider", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "resolution": { "enum": [ "720p", "1080p" ], "type": "string", "default": "1080p" }, "enableSafetyChecker": { "type": "boolean", "default": false }, "provider": { "enum": [ "fal" ], "type": "string" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Wan27FalTextToVideoInput", "image-to-video": "#/components/schemas/Wan27FalImageToVideoInput", "reference-to-video": "#/components/schemas/Wan27FalReferenceToVideoInput", "edit-video": "#/components/schemas/Wan27FalEditVideoInput" } } } ] }, "Wan27ImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanImageGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan27FalImageGenInput" } } } ] }, "Wan27VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "provider", "version" ], "type": "object", "properties": { "provider": { "type": [ "null", "string" ], "default": "fal" }, "version": { "enum": [ "v2.7" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "provider", "mapping": { "fal": "#/components/schemas/Wan27FalVideoGenInput" } } } ] }, "Wan30ImageToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan30VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "startImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "endImage": { "type": [ "null", "string" ], "description": "Constrains the last frame, for loops and transitions.", "format": "source-image" }, "operation": { "enum": [ "image-to-video" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan30TextToVideoInput": { "allOf": [ { "$ref": "#/components/schemas/Wan30VideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "aspectRatio": { "enum": [ "16:9", "9:16", "1:1", "4:3", "3:4" ], "type": "string", "default": "16:9" }, "operation": { "enum": [ "text-to-video" ], "type": "string" }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false } ] }, "Wan30VideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/WanVideoGenInput" }, { "required": [ "engine", "operation", "version" ], "type": "object", "properties": { "operation": { "type": [ "null", "string" ], "default": "text-to-video" }, "resolution": { "enum": [ "480p", "720p", "1080p" ], "type": "string", "default": "1080p" }, "negativePrompt": { "type": [ "null", "string" ] }, "enablePromptExpansion": { "type": "boolean", "description": "Prompt rewriting. Disabling saves 20-60s of latency but may reduce generation quality —\nfollow Alibaba's prompting guide when turning it off.", "default": true }, "usePrime": { "type": "boolean", "description": "Run on wan3.0-video-prime: same output quality, lower latency, higher price.", "default": false }, "version": { "enum": [ "v3.0" ], "type": "string" }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "text-to-video": "#/components/schemas/Wan30TextToVideoInput", "image-to-video": "#/components/schemas/Wan30ImageToVideoInput" } } } ] }, "WanImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ImageGenInput" }, { "required": [ "engine", "prompt", "version" ], "type": "object", "properties": { "version": { "type": [ "null", "string" ], "default": "v2.2" }, "prompt": { "minLength": 1, "type": "string" }, "negativePrompt": { "type": [ "null", "string" ] }, "guidanceScale": { "maximum": 10, "minimum": 1, "type": "number", "format": "double", "default": 3.5 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "quantity": { "maximum": 10, "minimum": 1, "type": "integer", "format": "int32", "default": 1 }, "imageSize": { "type": "string", "default": "square_hd" }, "enablePromptExpansion": { "type": "boolean", "default": false }, "enableSafetyChecker": { "type": "boolean", "default": false }, "loras": { "type": "array", "items": { "$ref": "#/components/schemas/ImageGenInputLora" } }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v2.2": "#/components/schemas/Wan22ImageGenInput", "v2.2-5b": "#/components/schemas/Wan225bImageGenInput", "v2.5": "#/components/schemas/Wan25ImageGenInput", "v2.7": "#/components/schemas/Wan27ImageGenInput" } } } ] }, "WanVideoGenInput": { "allOf": [ { "$ref": "#/components/schemas/VideoGenInput" }, { "required": [ "cfgScale", "engine", "version" ], "type": "object", "properties": { "version": { "type": [ "null", "string" ], "default": "v2.1" }, "sourceImage": { "type": [ "null", "string" ], "description": "Either A URL, A DataURL or a Base64 string", "format": "source-image" }, "cfgScale": { "maximum": 100, "minimum": 0, "type": "number", "format": "double", "default": 4 }, "frameRate": { "type": "integer", "format": "int32", "default": 24 }, "duration": { "maximum": 30, "minimum": 1, "type": "integer", "format": "int32", "default": 5 }, "seed": { "type": [ "null", "integer" ], "format": "int32" }, "steps": { "maximum": 50, "minimum": 10, "type": "integer", "format": "int32", "default": 20 }, "loras": { "type": "array", "items": { "$ref": "#/components/schemas/VideoGenInputLora" } }, "engine": { "enum": [ "wan" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "version", "mapping": { "v2.1": "#/components/schemas/Wan21VideoGenInput", "v2.2": "#/components/schemas/Wan22VideoGenInput", "v2.2-5b": "#/components/schemas/Wan225bVideoGenInput", "v2.5": "#/components/schemas/Wan25VideoGenInput", "v2.6": "#/components/schemas/Wan26VideoGenInput", "v2.7": "#/components/schemas/Wan27VideoGenInput", "v3.0": "#/components/schemas/Wan30VideoGenInput" } } } ] }, "WebScrapeInput": { "required": [ "formats", "url" ], "type": "object", "properties": { "url": { "type": "string", "description": "The URL of the page to scrape.", "format": "uri" }, "formats": { "type": "array", "items": { "type": "string" }, "description": "The formats to return the page content in (e.g. \"markdown\", \"html\", \"links\")." } }, "additionalProperties": false, "description": "Represents the input information needed for the WebScrape workflow step." }, "WebScrapeOutput": { "type": "object", "properties": { "markdown": { "type": [ "null", "string" ], "description": "The page content as markdown, when requested." }, "html": { "type": [ "null", "string" ], "description": "The page content as HTML, when requested." }, "links": { "type": [ "null", "array" ], "items": { "type": "string" }, "description": "The links found on the page, when requested." }, "title": { "type": [ "null", "string" ], "description": "The title of the page." }, "description": { "type": [ "null", "string" ], "description": "The description of the page." }, "statusCode": { "type": [ "null", "integer" ], "description": "The HTTP status code returned by the page.", "format": "int32" } }, "additionalProperties": false, "description": "Represents the output information returned from the WebScrape workflow step." }, "WebScrapeStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/WebScrapeInput" }, "output": { "$ref": "#/components/schemas/WebScrapeOutput" }, "$type": { "enum": [ "webScrape" ], "type": "string" } }, "additionalProperties": false } ], "description": "WebScrape" }, "WebScrapeStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/WebScrapeInput" }, "$type": { "enum": [ "webScrape" ], "type": "string" } }, "additionalProperties": false } ], "description": "WebScrape" }, "WebSearchInput": { "required": [ "limit", "query" ], "type": "object", "properties": { "query": { "type": "string", "description": "The search query." }, "limit": { "type": "integer", "description": "The maximum number of results to return (1-10).", "format": "int32" }, "scrapeFormats": { "type": [ "null", "array" ], "items": { "type": "string" }, "description": "Optional formats to scrape each result page in (e.g. [\"markdown\"]). When omitted,\nonly titles, URLs and descriptions are returned." } }, "additionalProperties": false, "description": "Represents the input information needed for the WebSearch workflow step." }, "WebSearchOutput": { "required": [ "results" ], "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/WebSearchResult" }, "description": "The search results, in relevance order." } }, "additionalProperties": false, "description": "Represents the output information returned from the WebSearch workflow step." }, "WebSearchResult": { "required": [ "url" ], "type": "object", "properties": { "url": { "type": "string", "description": "The URL of the result page." }, "title": { "type": [ "null", "string" ], "description": "The title of the result page." }, "description": { "type": [ "null", "string" ], "description": "The search engine's snippet/description for the result." }, "markdown": { "type": [ "null", "string" ], "description": "The result page content as markdown. Only present when the step input requested\nscraping via Civitai.Orchestration.Grains.Workflows.Steps.WebSearch.WebSearchInput.ScrapeFormats." } }, "additionalProperties": false, "description": "A single web search result." }, "WebSearchStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/WebSearchInput" }, "output": { "$ref": "#/components/schemas/WebSearchOutput" }, "$type": { "enum": [ "webSearch" ], "type": "string" } }, "additionalProperties": false } ], "description": "WebSearch" }, "WebSearchStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/WebSearchInput" }, "$type": { "enum": [ "webSearch" ], "type": "string" } }, "additionalProperties": false } ], "description": "WebSearch" }, "WebpOutputFormat": { "allOf": [ { "$ref": "#/components/schemas/ImageOutputFormat" }, { "required": [ "format" ], "type": "object", "properties": { "quality": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Quality setting for WebP 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 }, "maxFrames": { "type": [ "null", "integer" ], "description": "Maximum number of frames to include in the output. Set to 1 to extract only the first frame from animated images.\nWhen null, all frames are preserved.", "format": "int32" }, "format": { "enum": [ "webp" ], "type": "string" } }, "additionalProperties": false } ], "description": "WebP output format configuration." }, "Workflow": { "required": [ "arguments", "callbacks", "cost", "createdAt", "currencies", "forceRefunded", "metadata", "status", "steps", "tags", "tier", "tips", "upgradeMode" ], "type": "object", "properties": { "id": { "type": [ "null", "string" ], "description": "The ID for the workflow." }, "createdAt": { "type": "string", "description": "The date / time the workflow was created.", "format": "date-time" }, "transactions": { "$ref": "#/components/schemas/TransactionSummary" }, "metadata": { "type": "object", "additionalProperties": { }, "description": "A collection of user defined metadata for the workflow." }, "status": { "$ref": "#/components/schemas/WorkflowStatus" }, "startedAt": { "type": [ "null", "string" ], "description": "The date / time the workflow was started. Null if not yet started.", "format": "date-time" }, "completedAt": { "type": [ "null", "string" ], "description": "The date / time the workflow was completed. Null if not yet complete.", "format": "date-time" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "An optional list of tags for the workflow." }, "arguments": { "type": "object", "additionalProperties": { }, "description": "Get an associated collection of arguments" }, "steps": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowStep" }, "readOnly": true }, "callbacks": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowCallback" }, "description": "An array of callback details for the workflow." }, "tips": { "$ref": "#/components/schemas/WorkflowTips" }, "cost": { "$ref": "#/components/schemas/WorkflowCost" }, "nsfwLevel": { "$ref": "#/components/schemas/NSFWLevel" }, "experimental": { "type": [ "null", "boolean" ], "description": "Get or set whether this workflow is experimental" }, "allowMatureContent": { "type": [ "null", "boolean" ], "description": "Gets or sets a value indicating whether mature content is allowed in this workflow." }, "upgradeMode": { "$ref": "#/components/schemas/WorkflowUpgradeMode" }, "currencies": { "type": "array", "items": { "$ref": "#/components/schemas/BuzzClientAccount" }, "description": "An optional set of currencies to use for this workflow." }, "forceRefunded": { "type": "boolean", "description": "Whether this workflow has been force-refunded.\nPrevents re-charging on grain recovery." }, "ephemeral": { "type": [ "null", "boolean" ], "description": "When true, this workflow is not persisted to telemetry/MongoDB.\nIn-flight state lives only in Orleans grain state (Redis); once the workflow\nreaches a terminal state the grain clears its state and no record remains." }, "externalId": { "type": [ "null", "string" ], "description": "Client-supplied idempotency key. Stored as `\"{userId}-{clientValue}\"`\nso the partial unique index can be single-field while still scoping\nuniqueness per-user. See Civitai.Orchestration.Grains.Workflows.WorkflowTemplate.ExternalId." }, "lostBlobsRefund": { "type": [ "null", "integer" ], "description": "Net buzz refunded because deliverable blobs were lost in the 2026-06-12 storage\nincident (v2.20.1 wrote Default-tier blobs to the wrong store). Null = not yet\nchecked, 0 = checked and intact. A value > 0 also prevents re-charging on recovery.", "format": "int32" }, "deletedAt": { "type": [ "null", "string" ], "description": "When the consumer deleted this workflow. Soft delete: the telemetry document is kept\n(until its natural TTL) so operators can still inspect it in the dashboard, but\nconsumer reads and queries treat the workflow as gone.", "format": "date-time" }, "downloadPriority": { "$ref": "#/components/schemas/Priority" }, "tier": { "$ref": "#/components/schemas/WorkflowTier" } }, "additionalProperties": false, "description": "Details of a workflow." }, "WorkflowCallback": { "required": [ "type", "url" ], "type": "object", "properties": { "url": { "type": "string", "description": "The url for the callback.", "format": "uri" }, "type": { "type": "array", "items": { "enum": [ "workflow:*", "workflow:unassigned", "workflow:preparing", "workflow:scheduled", "workflow:processing", "workflow:succeeded", "workflow:failed", "workflow:expired", "workflow:canceled", "step:*", "step:unassigned", "step:preparing", "step:scheduled", "step:processing", "step:succeeded", "step:failed", "step:expired", "step:canceled", "job:*", "job:unassigned", "job:preparing", "job:scheduled", "job:processing", "job:succeeded", "job:failed", "job:expired", "job:canceled" ], "type": "string", "example": "workflow:succeeded" }, "description": "An array of event types to send to the callback." }, "detailed": { "type": [ "null", "boolean" ], "description": "Whether to include detailed output (step/workflow results) in the callback payload." } }, "additionalProperties": false, "description": "Details of a callback setup for a workflow." }, "WorkflowCost": { "required": [ "base", "tips", "total" ], "type": "object", "properties": { "base": { "type": "integer", "description": "The base cost of this request, excludsing any tips", "format": "int32" }, "factors": { "type": [ "null", "object" ], "additionalProperties": { "type": "number", "format": "double" }, "description": "A breakdown of the cost factors for this request" }, "fixed": { "type": [ "null", "object" ], "additionalProperties": { "type": "integer", "format": "int32" }, "description": "A fixed set of cost additions for this request" }, "tips": { "$ref": "#/components/schemas/WorkflowCostTips" }, "fees": { "type": [ "null", "object" ], "additionalProperties": { "type": "number", "format": "double" }, "description": "Per-resource licensing fees for this request, keyed by resource AIR. The\nuser is charged the sum of the values; each entry is settled to its\nresource's recipient (see `EmitFeeCompensationsAsync`)." }, "variable": { "type": [ "null", "boolean" ], "description": "When true, this price is a cap that may settle lower: at least one step is\npost-billed and charged up front at its maximum, with the difference\nrefunded once the provider reports the actual work delivered." }, "total": { "type": "integer", "description": "The total cost of this request, including tips", "format": "int32", "readOnly": true } }, "additionalProperties": false }, "WorkflowCostTips": { "required": [ "civitai", "creators" ], "type": "object", "properties": { "civitai": { "type": "integer", "description": "The buzz tipped to Civitai", "format": "int32" }, "creators": { "type": "integer", "description": "The buzz tipped to the Creators who's resources were used", "format": "int32" } }, "additionalProperties": false, "description": "Get the cost of tips" }, "WorkflowEvent": { "required": [ "$type", "status", "timestamp", "workflowId" ], "type": "object", "properties": { "workflowId": { "type": "string", "description": "The ID that represents the corresponding workflow." }, "status": { "$ref": "#/components/schemas/WorkflowStatus" }, "timestamp": { "type": "string", "description": "A timestamp for when this event got raised", "format": "date-time" }, "$type": { "type": "string", "readOnly": true }, "details": { "$ref": "#/components/schemas/WorkflowEventDetails" } }, "additionalProperties": false, "description": "Details of a workflow event." }, "WorkflowEventDetails": { "required": [ "createdAt", "steps" ], "type": "object", "properties": { "metadata": { "type": [ "null", "object" ], "additionalProperties": { "type": "null" }, "description": "Custom metadata associated with the workflow" }, "arguments": { "type": [ "null", "object" ], "additionalProperties": { "type": "null" }, "description": "Arguments provided to the workflow" }, "createdAt": { "type": "string", "description": "When the workflow was created", "format": "date-time" }, "completedAt": { "type": [ "null", "string" ], "description": "When the workflow completed execution", "format": "date-time" }, "startedAt": { "type": [ "null", "string" ], "description": "When the workflow started execution", "format": "date-time" }, "steps": { "type": "array", "items": { "$ref": "#/components/schemas/WorkflowEventStepDetails" }, "description": "Details about each step in the workflow" } }, "additionalProperties": false, "description": "Detailed information about a workflow included in webhook callbacks when detailed mode is enabled." }, "WorkflowEventStepDetails": { "required": [ "name", "status" ], "type": "object", "properties": { "name": { "type": "string", "description": "The name of the step" }, "status": { "$ref": "#/components/schemas/WorkflowStatus" }, "startedAt": { "type": [ "null", "string" ], "description": "When the step started execution", "format": "date-time" }, "completedAt": { "type": [ "null", "string" ], "description": "When the step completed execution", "format": "date-time" }, "metadata": { "type": [ "null", "object" ], "additionalProperties": { "type": "null" }, "description": "Custom metadata associated with the step" }, "input": { "type": "null", "description": "The input configuration for the step" }, "output": { "type": "null", "description": "The output result from the step" }, "cost": { "type": [ "null", "number" ], "description": "The cost of executing the step", "format": "double" } }, "additionalProperties": false, "description": "Detailed information about a workflow step within a workflow event." }, "WorkflowStatus": { "enum": [ "unassigned", "preparing", "scheduled", "processing", "succeeded", "failed", "expired", "canceled" ], "type": "string", "description": "Values available to represent workflow status." }, "WorkflowStep": { "required": [ "$type", "metadata", "name", "priority", "status" ], "type": "object", "properties": { "$type": { "type": "string" }, "name": { "type": "string", "description": "The name of the workflow step. Used to allow steps to refer to one another." }, "priority": { "$ref": "#/components/schemas/Priority" }, "timeout": { "type": [ "null", "string" ], "description": "The maximum time to wait for this step to complete.", "format": "date-span" }, "retries": { "type": [ "null", "integer" ], "description": "The maximum number of times this step should be retried.", "format": "int32" }, "status": { "$ref": "#/components/schemas/WorkflowStatus" }, "startedAt": { "type": [ "null", "string" ], "description": "The date / time the step was started. Null if not yet started.", "format": "date-time" }, "completedAt": { "type": [ "null", "string" ], "description": "The date / time the step was completed. Null if not yet completed.", "format": "date-time" }, "metadata": { "type": "object", "additionalProperties": { }, "description": "A collection of user defined metadata for the workflow step." }, "estimatedProgressRate": { "type": [ "null", "number" ], "description": "An estimation on the current progression of this step, or null if there is no estimation.\nComputed by the step's handler (see `WorkflowStepHandler.GetEstimatedProgressRate`)\nand refreshed by `WorkflowStepManager` on each job event. Cleared to null once the\nstep reaches a final status.", "format": "double" }, "preparation": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/WorkflowStepPreparationResource" }, "description": "Every resource download this step is waiting on, the one holding it back first. Only set while\nthe step is preparing." }, "queuePosition": { "$ref": "#/components/schemas/WorkflowStepQueuePosition" }, "warnings": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/WorkflowStepWarning" }, "description": "Non-fatal warnings about this step, such as a requested model that is scheduled for retirement.\nOmitted when there are none." } }, "additionalProperties": false, "description": "Details of a workflow step.", "discriminator": { "propertyName": "$type", "mapping": { "aceStepAudio": "#/components/schemas/AceStepAudioStep", "ageClassification": "#/components/schemas/AgeClassificationStep", "audioCaptioning": "#/components/schemas/AudioCaptioningStep", "blobArchive": "#/components/schemas/BlobArchiveStep", "chatCompletion": "#/components/schemas/ChatCompletionStep", "comfy": "#/components/schemas/ComfyStep", "comfyNodepackSnapshot": "#/components/schemas/ComfyNodepackSnapshotStep", "composeMedia": "#/components/schemas/ComposeMediaStep", "convertImage": "#/components/schemas/ConvertImageStep", "customComfy": "#/components/schemas/CustomComfyStep", "echo": "#/components/schemas/EchoStep", "imageBackgroundRemoval": "#/components/schemas/ImageBackgroundRemovalStep", "imageGen": "#/components/schemas/ImageGenStep", "imageResourceTraining": "#/components/schemas/ImageResourceTrainingStep", "imageScanning": "#/components/schemas/ImageScanningStep", "imageToSvg": "#/components/schemas/ImageToSvgStep", "imageUpload": "#/components/schemas/ImageUploadStep", "imageUpscaler": "#/components/schemas/ImageUpscalerStep", "liveTranscription": "#/components/schemas/LiveTranscriptionStep", "mediaCaptioning": "#/components/schemas/MediaCaptioningStep", "mediaHash": "#/components/schemas/MediaHashStep", "mediaRating": "#/components/schemas/MediaRatingStep", "merge": "#/components/schemas/MergeStep", "miniMaxMusic3": "#/components/schemas/MiniMaxMusic3Step", "model3DPreview": "#/components/schemas/Model3DPreviewStep", "modelClamScan": "#/components/schemas/ModelClamScanStep", "modelHash": "#/components/schemas/ModelHashStep", "modelParseMetadata": "#/components/schemas/ModelParseMetadataStep", "modelPickleScan": "#/components/schemas/ModelPickleScanStep", "polyGen": "#/components/schemas/PolyGenStep", "preprocessImage": "#/components/schemas/PreprocessImageStep", "preprocessVideo": "#/components/schemas/PreprocessVideoStep", "promptEnhancement": "#/components/schemas/PromptEnhancementStep", "qwenImageBench": "#/components/schemas/QwenImageBenchStep", "shieldstralModeration": "#/components/schemas/ShieldstralModerationStep", "soniloAudioGen": "#/components/schemas/SoniloAudioGenStep", "textToImage": "#/components/schemas/TextToImageStep", "textToSpeech": "#/components/schemas/TextToSpeechStep", "training": "#/components/schemas/TrainingStep", "transcode": "#/components/schemas/TranscodeStep", "transcription": "#/components/schemas/TranscriptionStep", "videoBackgroundRemoval": "#/components/schemas/VideoBackgroundRemovalStep", "videoEnhancement": "#/components/schemas/VideoEnhancementStep", "videoFrameExtraction": "#/components/schemas/VideoFrameExtractionStep", "videoGen": "#/components/schemas/VideoGenStep", "videoInterpolation": "#/components/schemas/VideoInterpolationStep", "videoMetadata": "#/components/schemas/VideoMetadataStep", "videoUpscaler": "#/components/schemas/VideoUpscalerStep", "wdTagging": "#/components/schemas/WDTaggingStep", "webScrape": "#/components/schemas/WebScrapeStep", "webSearch": "#/components/schemas/WebSearchStep", "xGuardModeration": "#/components/schemas/XGuardModerationStep", "yuE2": "#/components/schemas/YuE2Step" } } }, "WorkflowStepEvent": { "required": [ "$type", "name", "status", "workflowId" ], "type": "object", "properties": { "workflowId": { "type": "string", "description": "The workflow ID." }, "name": { "type": "string", "description": "The workflow step's name." }, "status": { "$ref": "#/components/schemas/WorkflowStatus" }, "$type": { "type": "string", "readOnly": true }, "details": { "$ref": "#/components/schemas/WorkflowStepEventDetails" }, "preparation": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/WorkflowStepPreparationResource" }, "description": "Every resource download this step is waiting on, gating resource first. Only set while preparing." } }, "additionalProperties": false, "description": "Details of a workflow step event." }, "WorkflowStepEventDetails": { "required": [ "retries" ], "type": "object", "properties": { "startedAt": { "type": [ "null", "string" ], "description": "When the step started execution", "format": "date-time" }, "completedAt": { "type": [ "null", "string" ], "description": "When the step completed execution", "format": "date-time" }, "estimatedProgressRate": { "type": [ "null", "number" ], "description": "Estimated progress rate of the step (0.0 to 1.0)", "format": "double" }, "retries": { "type": "integer", "description": "Number of times the step has been retried", "format": "int32" }, "metadata": { "type": [ "null", "object" ], "additionalProperties": { "type": "null" }, "description": "Custom metadata associated with the step" }, "input": { "type": "null", "description": "The input configuration for the step" }, "output": { "type": "null", "description": "The output result from the step" }, "preparation": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/WorkflowStepPreparationResource" }, "description": "Every resource download this step is waiting on, gating resource first. Only set while preparing." } }, "additionalProperties": false, "description": "Detailed information about a workflow step included in webhook callbacks when detailed mode is enabled." }, "WorkflowStepJobEvent": { "required": [ "$type", "jobId", "status", "stepName", "workflowId" ], "type": "object", "properties": { "workflowId": { "type": "string", "description": "The workflow ID." }, "stepName": { "type": "string", "description": "The step's name." }, "jobId": { "type": "string", "description": "The job's ID." }, "status": { "$ref": "#/components/schemas/WorkflowStatus" }, "$type": { "type": "string", "readOnly": true }, "progress": { "type": [ "null", "number" ], "format": "double" }, "reason": { "type": [ "null", "string" ] }, "blockedReason": { "type": [ "null", "string" ] }, "matureContent": { "type": [ "null", "boolean" ] } }, "additionalProperties": false, "description": "Details of a workflow step job event." }, "WorkflowStepPreparationResource": { "required": [ "lane", "resource", "sizeBytes" ], "type": "object", "properties": { "resource": { "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" }, "sizeBytes": { "type": "integer", "format": "int64" }, "lane": { "$ref": "#/components/schemas/Priority" }, "queuePosition": { "type": [ "null", "integer" ], "format": "int32" }, "progress": { "type": [ "null", "number" ], "format": "double" }, "bytesPerSecond": { "type": [ "null", "number" ], "format": "double" }, "etaSeconds": { "type": [ "null", "integer" ], "format": "int32" }, "boostedEtaSeconds": { "type": [ "null", "integer" ], "description": "What Civitai.Orchestration.Grains.Workflows.WorkflowStepPreparationResource.EtaSeconds would become in the High lane. Null when already High.", "format": "int32" }, "rateLimitBytesPerSecond": { "type": [ "null", "integer" ], "description": "Per-stream ceiling the lane applies to this download. Null when uncapped; boosting to High lifts it.", "format": "int64" } }, "additionalProperties": false, "description": "One resource a step is waiting on. A queued resource reports a position and no progress; one that\nis transferring reports the reverse." }, "WorkflowStepQueuePosition": { "required": [ "support" ], "type": "object", "properties": { "support": { "$ref": "#/components/schemas/JobSupport" }, "precedingJobs": { "type": [ "null", "integer" ], "description": "The number of preceding jobs in the queue.", "format": "int32" }, "estimatedStartAt": { "type": [ "null", "string" ], "description": "An estimated date / time for when the step will start.", "format": "date-time" }, "estimatedCompleteAt": { "type": [ "null", "string" ], "description": "An estimated date / time for when the step will complete.", "format": "date-time" } }, "additionalProperties": false, "description": "Details of a workflow step's position in the queue." }, "WorkflowStepTemplate": { "required": [ "$type" ], "type": "object", "properties": { "$type": { "type": "string" }, "name": { "type": [ "null", "string" ], "description": "The name of the workflow step. Used to allow steps to refer to one another." }, "priority": { "$ref": "#/components/schemas/Priority" }, "timeout": { "type": [ "null", "string" ], "description": "The maximum time to wait for this step to complete.", "format": "date-span" }, "retries": { "type": [ "null", "integer" ], "description": "The maximum number of times this step should be retried.", "format": "int32" }, "metadata": { "type": [ "null", "object" ], "additionalProperties": { }, "description": "A collection of user defined metadata for the workflow step." } }, "additionalProperties": false, "description": "Details of a workflow step template.", "discriminator": { "propertyName": "$type", "mapping": { "aceStepAudio": "#/components/schemas/AceStepAudioStepTemplate", "ageClassification": "#/components/schemas/AgeClassificationStepTemplate", "audioCaptioning": "#/components/schemas/AudioCaptioningStepTemplate", "blobArchive": "#/components/schemas/BlobArchiveStepTemplate", "chatCompletion": "#/components/schemas/ChatCompletionStepTemplate", "comfy": "#/components/schemas/ComfyStepTemplate", "comfyNodepackSnapshot": "#/components/schemas/ComfyNodepackSnapshotStepTemplate", "composeMedia": "#/components/schemas/ComposeMediaStepTemplate", "convertImage": "#/components/schemas/ConvertImageStepTemplate", "customComfy": "#/components/schemas/CustomComfyStepTemplate", "echo": "#/components/schemas/EchoStepTemplate", "imageBackgroundRemoval": "#/components/schemas/ImageBackgroundRemovalStepTemplate", "imageGen": "#/components/schemas/ImageGenStepTemplate", "imageResourceTraining": "#/components/schemas/ImageResourceTrainingStepTemplate", "imageScanning": "#/components/schemas/ImageScanningStepTemplate", "imageToSvg": "#/components/schemas/ImageToSvgStepTemplate", "imageUpload": "#/components/schemas/ImageUploadStepTemplate", "imageUpscaler": "#/components/schemas/ImageUpscalerStepTemplate", "liveTranscription": "#/components/schemas/LiveTranscriptionStepTemplate", "mediaCaptioning": "#/components/schemas/MediaCaptioningStepTemplate", "mediaHash": "#/components/schemas/MediaHashStepTemplate", "mediaRating": "#/components/schemas/MediaRatingStepTemplate", "merge": "#/components/schemas/MergeStepTemplate", "miniMaxMusic3": "#/components/schemas/MiniMaxMusic3StepTemplate", "model3DPreview": "#/components/schemas/Model3DPreviewStepTemplate", "modelClamScan": "#/components/schemas/ModelClamScanStepTemplate", "modelHash": "#/components/schemas/ModelHashStepTemplate", "modelParseMetadata": "#/components/schemas/ModelParseMetadataStepTemplate", "modelPickleScan": "#/components/schemas/ModelPickleScanStepTemplate", "polyGen": "#/components/schemas/PolyGenStepTemplate", "preprocessImage": "#/components/schemas/PreprocessImageStepTemplate", "preprocessVideo": "#/components/schemas/PreprocessVideoStepTemplate", "promptEnhancement": "#/components/schemas/PromptEnhancementStepTemplate", "qwenImageBench": "#/components/schemas/QwenImageBenchStepTemplate", "shieldstralModeration": "#/components/schemas/ShieldstralModerationStepTemplate", "soniloAudioGen": "#/components/schemas/SoniloAudioGenStepTemplate", "textToImage": "#/components/schemas/TextToImageStepTemplate", "textToSpeech": "#/components/schemas/TextToSpeechStepTemplate", "training": "#/components/schemas/TrainingStepTemplate", "transcode": "#/components/schemas/TranscodeStepTemplate", "transcription": "#/components/schemas/TranscriptionStepTemplate", "videoBackgroundRemoval": "#/components/schemas/VideoBackgroundRemovalStepTemplate", "videoEnhancement": "#/components/schemas/VideoEnhancementStepTemplate", "videoFrameExtraction": "#/components/schemas/VideoFrameExtractionStepTemplate", "videoGen": "#/components/schemas/VideoGenStepTemplate", "videoInterpolation": "#/components/schemas/VideoInterpolationStepTemplate", "videoMetadata": "#/components/schemas/VideoMetadataStepTemplate", "videoUpscaler": "#/components/schemas/VideoUpscalerStepTemplate", "wdTagging": "#/components/schemas/WDTaggingStepTemplate", "webScrape": "#/components/schemas/WebScrapeStepTemplate", "webSearch": "#/components/schemas/WebSearchStepTemplate", "xGuardModeration": "#/components/schemas/XGuardModerationStepTemplate", "yuE2": "#/components/schemas/YuE2StepTemplate" } } }, "WorkflowStepWarning": { "required": [ "code", "message" ], "type": "object", "properties": { "code": { "$ref": "#/components/schemas/WorkflowStepWarningCode" }, "message": { "type": "string", "description": "A human-readable description of the warning." }, "deprecatedAt": { "type": [ "null", "string" ], "description": "When the deprecation was announced, if applicable.", "format": "date-time" }, "retiresAt": { "type": [ "null", "string" ], "description": "When requests relying on the deprecated behavior start being rejected, if applicable.", "format": "date-time" }, "replacement": { "type": [ "null", "string" ], "description": "The suggested replacement, if applicable." } }, "additionalProperties": false, "description": "A non-fatal notice about a workflow step, e.g. a requested model that is scheduled for retirement." }, "WorkflowStepWarningCode": { "enum": [ "modelDeprecated" ], "type": "string" }, "WorkflowTemplate": { "required": [ "currencies", "steps" ], "type": "object", "properties": { "metadata": { "type": [ "null", "object" ], "additionalProperties": { }, "description": "A collection of user defined metadata that can be used to store additional information about the workflow." }, "tags": { "maxItems": 10, "uniqueItems": true, "type": [ "null", "array" ], "items": { "type": "string" }, "description": "A list of tags associated with this workflow.\nTags are indexed and can be used to search for workflows.\nAt most 10 tags can be assigned to a workflow. Each tag can be at most 200 characters long." }, "steps": { "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/WorkflowStepTemplate" }, "description": "An array of steps that compose this workflow." }, "callbacks": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/WorkflowCallback" }, "description": "An array of callbacks to be triggered during the lifetime of the workflow." }, "tips": { "$ref": "#/components/schemas/WorkflowTips" }, "arguments": { "type": [ "null", "object" ], "additionalProperties": { }, "description": "Get an associated collection of arguments" }, "nsfwLevel": { "$ref": "#/components/schemas/NSFWLevel" }, "downloadPriority": { "$ref": "#/components/schemas/Priority" }, "tier": { "$ref": "#/components/schemas/WorkflowTier" }, "experimental": { "type": [ "null", "boolean" ], "description": "Get or set whether this workflow is experimental" }, "allowMatureContent": { "type": [ "null", "boolean" ], "description": "Get or set whether this workflow should allow mature content.\nWhen set to false, the workflow will not return any content that is marked as mature.\nAdditional payment options are available for workflows that do not allow mature content." }, "upgradeMode": { "$ref": "#/components/schemas/WorkflowUpgradeMode" }, "currencies": { "type": "array", "items": { "$ref": "#/components/schemas/BuzzClientAccount" }, "description": "Limit the currencies that can be used to pay for this workflow." }, "ephemeral": { "type": [ "null", "boolean" ], "description": "When true, the workflow is never persisted to long-term storage.\nResults are available via callbacks and via the synchronous `wait` parameter only;\nafter the workflow reaches a terminal state, GET /v2/consumer/workflows/{id} returns 404.\nRequires at least one callback OR `wait > 0` on submission." }, "externalId": { "maxLength": 128, "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "type": [ "null", "string" ], "description": "Optional client-supplied idempotency key. If a workflow with the same\n`(userId, externalId)` already exists — including from a prior\n`whatif=true` request — the existing workflow is returned instead\nof creating a new one. Mirrors `externalTransactionId` in the buzz\nservice. Max 128 chars, `[A-Za-z0-9_-]+`." } }, "additionalProperties": false, "description": "Details of a requested workflow." }, "WorkflowTier": { "enum": [ "paid", "free" ], "type": "string", "description": "How a workflow is paid for." }, "WorkflowTips": { "required": [ "civitai", "creators" ], "type": "object", "properties": { "civitai": { "maximum": 2, "minimum": 0, "type": "number", "description": "The rate of tipping that should be allocated to civitai", "format": "double" }, "creators": { "maximum": 2, "minimum": 0, "type": "number", "description": "The rate of tipping that should be allocated to creators involved in this workflow", "format": "double" } }, "additionalProperties": false }, "WorkflowUpgradeMode": { "enum": [ "manual", "automatic" ], "type": "string", "description": "Specifies how a workflow should be upgraded when mature content is detected and green or blue buzz was used for payment." }, "WorkflowWaitUntil": { "enum": [ "completion", "change" ], "type": "string", "description": "What a held read of a workflow waits for before it returns." }, "XGuardCustomSignalMetadata": { "required": [ "name", "negativeCount", "negativeSignals", "positiveCount", "positiveSignals", "textCount", "textSignals" ], "type": "object", "properties": { "name": { "type": "string" }, "positiveSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "negativeSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "textSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "positiveCount": { "type": "integer", "format": "int32", "readOnly": true }, "negativeCount": { "type": "integer", "format": "int32", "readOnly": true }, "textCount": { "type": "integer", "format": "int32", "readOnly": true } }, "additionalProperties": false }, "XGuardLabelConfiguration": { "required": [ "action", "label", "policy", "threshold" ], "type": "object", "properties": { "label": { "type": "string" }, "action": { "type": "string" }, "threshold": { "type": "number", "format": "double" }, "policy": { "type": "string" } }, "additionalProperties": false }, "XGuardLabelResult": { "required": [ "action", "field", "label", "modelReason", "score", "threshold", "topToken", "triggered" ], "type": "object", "properties": { "label": { "type": "string" }, "action": { "type": "string" }, "threshold": { "type": "number", "format": "double" }, "score": { "type": "number", "format": "double" }, "triggered": { "type": "boolean" }, "topToken": { "type": "string" }, "field": { "type": "string" }, "modelReason": { "type": "string" }, "postprocess": { "type": [ "null", "string" ] }, "finishReason": { "type": [ "null", "string" ] }, "responseId": { "type": [ "null", "string" ] }, "error": { "type": [ "null", "string" ] }, "matchedTerms": { "$ref": "#/components/schemas/XGuardMatchedTerms" }, "policyHash": { "type": [ "null", "string" ] } }, "additionalProperties": false }, "XGuardMatchedTerms": { "required": [ "negativePrompt", "positivePrompt", "text" ], "type": "object", "properties": { "text": { "type": "array", "items": { "type": "string" } }, "positivePrompt": { "type": "array", "items": { "type": "string" } }, "negativePrompt": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "XGuardModerationInput": { "required": [ "includeReasoning", "mode", "storeFullResponse" ], "type": "object", "properties": { "mode": { "type": "string" }, "labels": { "type": [ "null", "array" ], "items": { "type": "string" }, "description": "Optional label filter. When provided, only the named labels are evaluated.\nLabels not found in the defaults (or label overrides) are silently ignored.\nWhen omitted or empty, all labels are evaluated." }, "labelOverrides": { "type": [ "null", "array" ], "items": { "$ref": "#/components/schemas/XGuardLabelConfiguration" }, "description": "Optional label configuration overrides. When provided, these merge with/override the\ndefaults from the XGuardModerationOptionsGrain for the given mode." }, "storeFullResponse": { "type": "boolean", "description": "Debug opt-out. When true, the worker stores the full raw chat completion response\n(including the complete logprobs.content array) in the destination blob instead of\nthe trimmed version. Intended for one-off debugging of classification decisions\nwhere the full logprobs distribution or generated token stream needs inspection.\nLeaves blobs at ~200KB instead of ~2-3KB — do not enable in normal traffic.\nCivitai prompt Scan always emits one token, including with debugging enabled.\nThis is NOT the reasoning switch — use IncludeReasoning for ModelReason. On its own it\nmerely raises the token budget from 1 to 128 (XGuardScoring.MaxTokensFor), which lets\n~600 chars of explanation slip out before a finishReason=length cutoff." }, "includeReasoning": { "type": "boolean", "description": "For site-text moderation only; Civitai prompt Scan always emits one token.\nWhen true, the model generates an explanation after its verdict token, populating\nXGuardLabelResult.ModelReason and MatchedTerms. Uses a larger token budget (256 —\nlong explanations can still end at finishReason=length) and a distinct blob-cache\nkey, so results never reuse cached verdict-only blobs." } }, "additionalProperties": false, "discriminator": { "propertyName": "mode", "mapping": { "prompt": "#/components/schemas/XGuardPromptModerationInput", "text": "#/components/schemas/XGuardTextModerationInput" } } }, "XGuardModerationOutput": { "required": [ "blocked", "results", "triggeredLabels" ], "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/XGuardLabelResult" } }, "signalMetadata": { "$ref": "#/components/schemas/XGuardSignalMetadata" }, "blocked": { "type": "boolean" }, "triggeredLabels": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "XGuardModerationStep": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/XGuardModerationInput" }, "output": { "$ref": "#/components/schemas/XGuardModerationOutput" }, "$type": { "enum": [ "xGuardModeration" ], "type": "string" } }, "additionalProperties": false } ], "description": "XGuardModeration" }, "XGuardModerationStepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/XGuardModerationInput" }, "$type": { "enum": [ "xGuardModeration" ], "type": "string" } }, "additionalProperties": false } ], "description": "XGuardModeration" }, "XGuardPromptModerationInput": { "allOf": [ { "$ref": "#/components/schemas/XGuardModerationInput" }, { "required": [ "mode", "positivePrompt", "scope" ], "type": "object", "properties": { "positivePrompt": { "type": "string", "description": "The positive prompt to evaluate." }, "negativePrompt": { "type": [ "null", "string" ], "description": "The negative prompt to evaluate." }, "instructions": { "type": [ "null", "string" ], "description": "Additional instructions are unsupported by the fixed Civitai Scan contract." }, "scope": { "$ref": "#/components/schemas/XGuardPromptScope" }, "mode": { "enum": [ "prompt" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for evaluating generation prompts (positive/negative) against XGuard moderation policies." }, "XGuardPromptScope": { "enum": [ "combined", "positive", "negative" ], "type": "string", "description": "Which generation-prompt field(s) the model is asked to evaluate in Prompt mode." }, "XGuardSignalMetadata": { "required": [ "customSignals", "negativeAdultCount", "negativeAdultSignals", "negativeAgeDownCount", "negativeAgeDownSignals", "negativeSexualCount", "negativeSexualSignals", "positiveAdultCount", "positiveAdultSignals", "positiveAgeDownCount", "positiveAgeDownSignals", "positiveSexualCount", "positiveSexualSignals" ], "type": "object", "properties": { "positiveAgeDownSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "negativeAgeDownSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "positiveAdultSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "negativeAdultSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "positiveSexualSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "negativeSexualSignals": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32" } }, "customSignals": { "type": "array", "items": { "$ref": "#/components/schemas/XGuardCustomSignalMetadata" } }, "positiveAgeDownCount": { "type": "integer", "format": "int32", "readOnly": true }, "negativeAgeDownCount": { "type": "integer", "format": "int32", "readOnly": true }, "positiveAdultCount": { "type": "integer", "format": "int32", "readOnly": true }, "negativeAdultCount": { "type": "integer", "format": "int32", "readOnly": true }, "positiveSexualCount": { "type": "integer", "format": "int32", "readOnly": true }, "negativeSexualCount": { "type": "integer", "format": "int32", "readOnly": true } }, "additionalProperties": false }, "XGuardTextModerationInput": { "allOf": [ { "$ref": "#/components/schemas/XGuardModerationInput" }, { "required": [ "mode", "text" ], "type": "object", "properties": { "text": { "type": "string", "description": "The text to evaluate." }, "mode": { "enum": [ "text" ], "type": "string" } }, "additionalProperties": false } ], "description": "Input for evaluating site text content against XGuard moderation policies." }, "YuE2AIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "defaultSteps", "ecosystem", "engine" ], "type": "object", "properties": { "samplesOverrides": { "type": "array", "items": { "$ref": "#/components/schemas/YuE2SampleOverride" } }, "defaultSteps": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "yue2" ], "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": "YuE2 music LoRA training. Audio captions contain style followed by [Lyrics] and lyrics." }, "YuE2Input": { "required": [ "loras", "lyrics", "mode", "seed", "style" ], "type": "object", "properties": { "style": { "minLength": 1, "type": "string", "description": "Musical style, instrumentation, mood, tempo, and vocal description." }, "lyrics": { "minLength": 1, "type": "string", "description": "Lyrics with section markers such as [verse] and [chorus]." }, "seed": { "type": "integer", "format": "int32" }, "maxDuration": { "maximum": 360, "minimum": 0.03999999910593033, "type": "number", "description": "Maximum song duration in seconds; generation can stop earlier.", "format": "float", "default": 120 }, "steps": { "maximum": 100, "minimum": 1, "type": "integer", "description": "Diffusion steps using the upstream dpm_2 / sgm_uniform sampler.", "format": "int32", "default": 32 }, "mode": { "minLength": 1, "pattern": "^(full|melody|off)$", "type": "string", "description": "Score planning: full (melody and chords), melody, or off.", "default": "full" }, "abc": { "type": [ "null", "string" ], "description": "Optional ABC score to use instead of generating a score. Ignored in off mode." }, "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": "Optional YuE2 checkpoint override containing the model, text encoder, and audio VAE." }, "loras": { "type": "object", "additionalProperties": { "type": "number", "format": "double" }, "description": "Optional LoRAs for both YuE2 experts." } }, "additionalProperties": false, "description": "YuE2 text-to-music generation with optional ABC score planning." }, "YuE2Output": { "required": [ "blob" ], "type": "object", "properties": { "blob": { "$ref": "#/components/schemas/AudioBlob" } }, "additionalProperties": false, "description": "Output from YuE2 generation." }, "YuE2SampleOverride": { "type": "object", "properties": { "lyrics": { "type": [ "null", "string" ] }, "duration": { "maximum": 360, "minimum": 0.03999999910593033, "type": [ "null", "number" ], "format": "float" }, "steps": { "maximum": 100, "minimum": 1, "type": [ "null", "integer" ], "format": "int32" }, "mode": { "pattern": "^(full|melody|off)$", "type": [ "null", "string" ] }, "abc": { "type": [ "null", "string" ] } }, "additionalProperties": false, "description": "Optional overrides aligned with Samples.Prompts." }, "YuE2Step": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStep" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/YuE2Input" }, "output": { "$ref": "#/components/schemas/YuE2Output" }, "$type": { "enum": [ "yuE2" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a song from style and lyrics with YuE2." }, "YuE2StepTemplate": { "allOf": [ { "$ref": "#/components/schemas/WorkflowStepTemplate" }, { "required": [ "$type", "input" ], "type": "object", "properties": { "input": { "$ref": "#/components/schemas/YuE2Input" }, "$type": { "enum": [ "yuE2" ], "type": "string" } }, "additionalProperties": false } ], "description": "Generate a song from style and lyrics with YuE2." }, "ZImageBaseAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "maxBatchSize" ], "type": "object", "properties": { "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "zimagebase" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" }, "batchSize": { "maximum": 2, "minimum": 1, "type": [ "null", "integer" ], "description": "Training batch size. Defaults to 1; raise it up to 2 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 } }, "additionalProperties": false } ], "description": "AI Toolkit training for Z Image Turbo models" }, "ZImageBaseCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ZImageBaseImageGenInput" }, { "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": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "ZImageBaseImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ZImageImageGenInput" }, { "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" ] }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "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" } }, "controlNets": { "type": "array", "items": { "$ref": "#/components/schemas/ImageJobControlNet" } }, "model": { "enum": [ "base" ], "type": "string" }, "ecosystem": { "enum": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/ZImageBaseCreateImageGenInput" } } } ] }, "ZImageImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/SdCppImageGenInput" }, { "required": [ "ecosystem", "engine", "model" ], "type": "object", "properties": { "model": { "type": "string" }, "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": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "model", "mapping": { "turbo": "#/components/schemas/ZImageTurboImageGenInput", "base": "#/components/schemas/ZImageBaseImageGenInput" } } } ] }, "ZImageTurboAIToolkitTrainingInput": { "allOf": [ { "$ref": "#/components/schemas/AIToolkitTrainingInput" }, { "required": [ "ecosystem", "engine", "maxBatchSize" ], "type": "object", "properties": { "maxBatchSize": { "type": "integer", "format": "int32", "readOnly": true }, "ecosystem": { "enum": [ "zimageturbo" ], "type": "string" }, "engine": { "enum": [ "ai-toolkit" ], "type": "string" }, "batchSize": { "maximum": 2, "minimum": 1, "type": [ "null", "integer" ], "description": "Training batch size. Defaults to 1; raise it up to 2 for this ecosystem to train faster at the cost of more GPU memory.", "default": 1 } }, "additionalProperties": false } ], "description": "AI Toolkit training for Z Image Turbo models" }, "ZImageTurboCreateImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ZImageTurboImageGenInput" }, { "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": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false } ] }, "ZImageTurboImageGenInput": { "allOf": [ { "$ref": "#/components/schemas/ZImageImageGenInput" }, { "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" ] }, "sampleMethod": { "$ref": "#/components/schemas/SdCppSampleMethod" }, "schedule": { "$ref": "#/components/schemas/SdCppSchedule" }, "steps": { "maximum": 150, "minimum": 1, "type": "integer", "format": "int32", "default": 9 }, "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" } }, "controlNets": { "type": "array", "items": { "$ref": "#/components/schemas/ImageJobControlNet" } }, "model": { "enum": [ "turbo" ], "type": "string" }, "ecosystem": { "enum": [ "zImage" ], "type": "string" }, "engine": { "enum": [ "sdcpp" ], "type": "string" } }, "additionalProperties": false, "discriminator": { "propertyName": "operation", "mapping": { "createImage": "#/components/schemas/ZImageTurboCreateImageGenInput" } } } ] }, "ZipTrainingData": { "allOf": [ { "$ref": "#/components/schemas/TrainingData" }, { "required": [ "count", "sourceUrl", "type" ], "type": "object", "properties": { "sourceUrl": { "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": "AIR pointing to the zip file containing training data" }, "count": { "type": "integer", "description": "The number of images/frames/items in this training data", "format": "int32" }, "type": { "enum": [ "zip" ], "type": "string" } }, "additionalProperties": false } ], "description": "Training data packaged as a zip file" }, "ZoeDepthEnvironment": { "enum": [ "indoor", "outdoor" ], "type": "string" } }, "securitySchemes": { "ApiKey": { "type": "http", "description": "Copy valid authorization token into field", "scheme": "bearer", "bearerFormat": "JWT" } } }, "security": [ { } ], "tags": [ { "name": "Blobs" }, { "name": "CivitaiConsumer" }, { "name": "Free tier" }, { "name": "Recipes" }, { "name": "Resources" }, { "name": "Services" }, { "name": "StreamingBlobs" }, { "name": "Workflows" }, { "name": "WorkflowSteps" } ] }