{
  "openapi": "3.1.0",
  "info": {
    "title": "storyteller-web",
    "description": "",
    "contact": {
      "name": "Brandon Thomas",
      "email": "bt@brand.io"
    },
    "license": {
      "name": ""
    },
    "version": "0.0.1"
  },
  "paths": {
    "/moderation/user_bans/manage_ban": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Ban or unban a user. Moderators only.",
        "operationId": "moderation_ban_user_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModerationBanUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "User ban status updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationBanUserSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "User not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/accounts/google_sso": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Sign in or sign up with \"Sign in with Google\" credentials.\nThis supports both sign up for new users and sign in for existing users.",
        "operationId": "google_sso_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GoogleCreateAccountRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoogleCreateAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleCreateAccountSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/active_user": {
      "post": {
        "tags": [
          "Analytics"
        ],
        "summary": "Log an active app user - user must be logged in.",
        "operationId": "log_app_active_user_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LogAppActiveUserRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogAppActiveUserResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/active_user_v2": {
      "post": {
        "tags": [
          "Analytics"
        ],
        "summary": "Log an active app user (JSON body version) - user must be logged in.",
        "operationId": "log_app_active_user_json_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogAppActiveUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogAppActiveUserResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/log_session": {
      "post": {
        "tags": [
          "Analytics"
        ],
        "summary": "Log a browser session (so we can calculate duration, etc.)",
        "operationId": "log_browser_session_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LogBrowserSessionRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogBrowserSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogBrowserSessionSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogBrowserSessionError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogBrowserSessionError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogBrowserSessionError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api_keys/create": {
      "post": {
        "tags": [
          "API Keys"
        ],
        "summary": "Create a new API key for the logged-in user. The full secret `api_key`\nvalue is returned exactly once in this response — it can never be retrieved\nagain afterward.",
        "operationId": "create_api_key_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateApiKeySuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api_keys/list": {
      "get": {
        "tags": [
          "API Keys"
        ],
        "summary": "List the logged-in user's API keys, newest first, **including\nsoft-deleted** keys. Paginated via `limit`/`offset`. Never returns the full\nsecret — each entry carries only the truncated key prefix.",
        "operationId": "list_api_keys_handler",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Page size. Defaults server-side if omitted.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of rows to skip. Defaults to 0.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListApiKeysSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api_keys/{api_key_token}": {
      "get": {
        "tags": [
          "API Keys"
        ],
        "summary": "Fetch a single API key by its `token`, scoped to the logged-in user.\n`NotFound` if the key doesn't exist or belongs to a different user (so we\ndon't leak the existence of others' keys). Never returns the full secret.",
        "operationId": "get_api_key_handler",
        "parameters": [
          {
            "name": "api_key_token",
            "in": "path",
            "description": "The API key's token (not the secret value)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ApiKeyToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiKeySuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "API Keys"
        ],
        "summary": "Update an API key's description (also refreshing its update IP), scoped to\nthe logged-in user. `NotFound` if the key doesn't exist, belongs to another\nuser, or has been deleted.",
        "operationId": "update_api_key_handler",
        "parameters": [
          {
            "name": "api_key_token",
            "in": "path",
            "description": "The API key's token (not the secret value)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ApiKeyToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiKeySuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "API Keys"
        ],
        "summary": "Soft-delete an API key by `token`, scoped to the logged-in user.",
        "operationId": "delete_api_key_handler",
        "parameters": [
          {
            "name": "api_key_token",
            "in": "path",
            "description": "The API key's token (not the secret value)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ApiKeyToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteApiKeySuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/app_state": {
      "get": {
        "tags": [
          "App State"
        ],
        "summary": "Load core application and  user state.",
        "description": "This endpoint loads a lot of the application state for the user and avoids lots\nof parallel queries to various endpoints. This should help improve Google Lighthouse\nand Core Web Vitals scores.\n\nThis single endpoint can replace the following endpoints:\n - `GET /detect_locale`\n - `GET /server_info`\n - `GET /v1/billing/active_subscriptions`\n - `GET /v1/status_alert_check`\n - `GET /v1/session`\n\nThis endpoint will probably grow new functionality in the future as well.",
        "operationId": "get_app_state_handler",
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppStateResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppStateError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beta_keys/create": {
      "post": {
        "tags": [
          "Beta Keys"
        ],
        "summary": "Create beta keys in bulk, and possibly assign them to a referrer user.",
        "operationId": "create_beta_keys_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CreateBetaKeysRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBetaKeysRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateBetaKeysSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beta_keys/list": {
      "get": {
        "tags": [
          "Beta Keys"
        ],
        "summary": "List beta keys.",
        "operationId": "list_beta_keys_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "page_index",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "maybe_referrer_username",
            "in": "query",
            "description": "Scope the beta keys to a referrer user.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "only_list_remaining",
            "in": "query",
            "description": "DEPRECATED: use `list_keys` instead.\nOnly return un-redeemed, un-expired keys.",
            "required": false,
            "deprecated": true,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "How to filter the keys.\nIf not specified, \"all\" is the default.",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/ListBetaKeysFilterOption"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Featured Media Files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBetaKeysSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beta_keys/redeem": {
      "post": {
        "tags": [
          "Beta Keys"
        ],
        "summary": "Redeem a beta key to gain access to a feature",
        "operationId": "redeem_beta_key_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RedeemBetaKeyRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemBetaKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedeemBetaKeySuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beta_keys/{token}/distributed": {
      "post": {
        "tags": [
          "Beta Keys"
        ],
        "summary": "Edit the \"distributed\" flag on a beta key to mark it as shared",
        "operationId": "edit_beta_key_distributed_flag_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditBetaKeyDistributedFlagRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditBetaKeyDistributedFlagPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditBetaKeyDistributedFlagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditBetaKeyDistributedFlagSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beta_keys/{token}/note": {
      "post": {
        "tags": [
          "Beta Keys"
        ],
        "summary": "Edit or clear a note on a beta key",
        "operationId": "edit_beta_key_note_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditBetaKeyNoteRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditBetaKeyNotePathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditBetaKeyNoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditBetaKeyNoteSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/active_subscriptions": {
      "get": {
        "tags": [
          "Billing"
        ],
        "operationId": "list_active_user_subscriptions_handler",
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListActiveUserSubscriptionsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/billing/stripe/checkout/create_redirect": {
      "get": {
        "tags": [
          "Billing"
        ],
        "summary": "Create a Stripe Checkout session and return the redirect URL in Json.",
        "operationId": "stripe_create_checkout_session_json_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CreateCheckoutSessionRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCheckoutSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success Delete",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCheckoutSessionSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCheckoutSessionError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCheckoutSessionError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCheckoutSessionError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/character/create": {
      "post": {
        "tags": [
          "Characters"
        ],
        "summary": "Create a new character.",
        "operationId": "create_character_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCharacterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCharacterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/character/edit": {
      "post": {
        "tags": [
          "Characters"
        ],
        "summary": "Edit a character's name or description.",
        "operationId": "edit_character_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditCharacterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditCharacterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/character/{character_token}": {
      "get": {
        "tags": [
          "Characters"
        ],
        "summary": "Get a character by token.",
        "operationId": "get_character_handler",
        "parameters": [
          {
            "name": "character_token",
            "in": "path",
            "description": "Character token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CharacterToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCharacterResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      },
      "delete": {
        "tags": [
          "Characters"
        ],
        "summary": "Delete a character.",
        "operationId": "delete_character_handler",
        "parameters": [
          {
            "name": "character_token",
            "in": "path",
            "description": "Character token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CharacterToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCharacterResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/characters/session": {
      "get": {
        "tags": [
          "Characters"
        ],
        "summary": "List characters for the current session.",
        "operationId": "list_characters_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Optional cursor for pagination.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCharactersResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/comments/delete/{comment_token}": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Delete a comment.",
        "operationId": "delete_comment_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DeleteCommentRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DeleteCommentPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteCommentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCommentError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCommentError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCommentError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/comments/list/{entity_type}/{entity_token}": {
      "get": {
        "tags": [
          "Comments"
        ],
        "summary": "List comments for an entity of a given type.",
        "description": "You need to supply the entity type (media files, model weights, users, etc.) and the token of the entity.",
        "operationId": "list_comments_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ListCommentsPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCommentsSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCommentsError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/comments/new": {
      "post": {
        "tags": [
          "Comments"
        ],
        "summary": "Add a comment to an entity (file, model, user, etc.)",
        "operationId": "create_comment_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CreateCommentRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCommentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCommentSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCommentError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCommentError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCommentError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/conversion/enqueue_fbx_to_gltf": {
      "post": {
        "tags": [
          "Engine"
        ],
        "operationId": "enqueue_fbx_to_gltf_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for FBX to GLTF Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EnqueueFbxToGltfRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnqueueFbxToGltfRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Enqueue FBX to GLTF",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueFbxToGltfRequestSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueFbxToGltfRequestError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueFbxToGltfRequestError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueFbxToGltfRequestError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueFbxToGltfRequestError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/create_account": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create a new account with username and password",
        "operationId": "create_account_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CreateAccountRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAccountSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAccountErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAccountErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAccountErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/credits/namespace/{namespace}": {
      "get": {
        "tags": [
          "Credits"
        ],
        "operationId": "get_session_credits_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetSessionCreditsPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionCreditsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/featured_item/create": {
      "post": {
        "tags": [
          "Featured Items"
        ],
        "summary": "Create a featured item (only mods can do this).",
        "operationId": "create_featured_item_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFeaturedItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFeaturedItemSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/featured_item/delete": {
      "delete": {
        "tags": [
          "Featured Items"
        ],
        "summary": "Remove a featured item (only mods can do this).",
        "operationId": "delete_featured_item_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteFeaturedItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/featured_item/is_featured/{entity_type}/{entity_token}": {
      "get": {
        "tags": [
          "Featured Items"
        ],
        "summary": "Determine if an item is featured",
        "operationId": "get_is_featured_item_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetIsFeaturedItemPathInfo"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIsFeaturedItemSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/create": {
      "post": {
        "tags": [
          "Folders"
        ],
        "summary": "Create a new folder owned by the logged-in user.",
        "operationId": "create_folder_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFolderSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/folder/{folder_token}": {
      "get": {
        "tags": [
          "Folders"
        ],
        "summary": "Fetch a single folder owned by the logged-in user.",
        "operationId": "get_folder_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFolderSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Folders"
        ],
        "summary": "Soft-delete a folder. Children retain their parent pointer and become\n\"orphaned\" — surfaced by the list query's `is_orphaned` flag.",
        "operationId": "delete_folder_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteFolderSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/folder/{folder_token}/color_code": {
      "put": {
        "tags": [
          "Folders"
        ],
        "operationId": "color_code_folder_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFolderColorCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetFolderColorCodeSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/folder/{folder_token}/cover_image": {
      "put": {
        "tags": [
          "Folders"
        ],
        "summary": "Set or clear the custom cover image on a folder.",
        "description": "If `maybe_media_file_token` is `None`, the cover is cleared. Otherwise\nthe server resolves the supplied media file to a usable cover token:\n\n1. The media file must exist, not be soft-deleted, and be owned by the\n   requesting user (same owner as the folder).\n2. If the media file has its own `maybe_cover_image_media_file_token`\n   set, that cover token wins outright and is used as the folder\n   cover.\n3. Otherwise, if the media file's `media_class` is `image`/`video` OR\n   its `media_type` is `jpg`/`png`/`mp4`, the file's own token is used.\n4. If neither path applies, the request is rejected with 400.",
        "operationId": "cover_image_folder_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFolderCoverImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetFolderCoverImageSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/folder/{folder_token}/rename": {
      "put": {
        "tags": [
          "Folders"
        ],
        "operationId": "rename_folder_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameFolderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenameFolderSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/folder/{folder_token}/star": {
      "put": {
        "tags": [
          "Folders"
        ],
        "operationId": "star_folder_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFolderStarRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetFolderStarSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/list_all": {
      "get": {
        "tags": [
          "Folders"
        ],
        "summary": "List all live folders owned by the logged-in user. Newest first.\nIncludes the derived `is_orphaned` flag.",
        "operationId": "list_folders_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFoldersSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/media_files/{folder_token}": {
      "get": {
        "tags": [
          "Folders (Media File Management)"
        ],
        "operationId": "list_folder_media_files_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFolderMediaFilesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/media_files/{folder_token}/bulk_add": {
      "post": {
        "tags": [
          "Folders (Media File Management)"
        ],
        "summary": "Bulk-add media files to a folder. Idempotent via INSERT IGNORE on the\ncomposite primary key. Media-file tokens that don't exist or are\nsoft-deleted are silently skipped; the response lists the accepted\ntokens.",
        "operationId": "bulk_add_folder_media_files_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkAddFolderMediaFilesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkAddFolderMediaFilesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/media_files/{folder_token}/bulk_move": {
      "post": {
        "tags": [
          "Folders (Media File Management)"
        ],
        "summary": "Atomically move media files from `source_folder` (request body) to the\nURL `folder_token` (destination).",
        "description": "The delete-from-source and insert-into-destination steps run inside a\nsingle MySQL transaction so a partial failure leaves both folders\nuntouched. Idempotent on both sides:\n* tokens not currently in the source are silently skipped by the\n  delete;\n* tokens already in the destination stay there (INSERT IGNORE on the\n  composite primary key);\n* media files that don't exist or are soft-deleted are filtered out\n  before the insert.",
        "operationId": "bulk_move_folder_media_files_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Destination folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkMoveFolderMediaFilesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkMoveFolderMediaFilesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/media_files/{folder_token}/bulk_remove": {
      "post": {
        "tags": [
          "Folders (Media File Management)"
        ],
        "summary": "Bulk-remove media files from a folder. Hard-deletes the membership\nrows; idempotent (rows that don't exist are silently skipped).",
        "operationId": "bulk_remove_folder_media_files_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRemoveFolderMediaFilesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRemoveFolderMediaFilesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/media_files_without_folder": {
      "get": {
        "tags": [
          "Folders (Media File Management)"
        ],
        "summary": "Paginated list of the logged-in user's media files that sit in no folder\nat all (memberships pointing at soft-deleted folders count as\nunfoldered). Newest first.",
        "description": "Use `filter_media_class` to scope the results to a single media class.",
        "operationId": "list_media_files_without_folder_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          },
          {
            "name": "filter_media_class",
            "in": "query",
            "description": "Optional filter on the coarse media class.\n\nUsage:\n  - `?filter_media_class=image`\n  - `?filter_media_class=video`\n  - `?filter_media_class=mesh`\n  - `?filter_media_class=splat`",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/MediaFileClass"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFilesWithoutFolderSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/subfolders/{folder_token}": {
      "get": {
        "tags": [
          "Folders (Subfolder Management)"
        ],
        "operationId": "list_subfolders_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Parent folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSubfoldersSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/subfolders/{folder_token}/bulk_add": {
      "post": {
        "tags": [
          "Folders (Subfolder Management)"
        ],
        "summary": "Bulk-reparent folders under the URL `folder_token`. Idempotent: tokens\nthat don't exist or are already parented to this folder are silently\naccepted; the response lists the tokens that \"stick\".",
        "operationId": "bulk_add_subfolders_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Parent folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkAddSubfoldersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkAddSubfoldersSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/folders/subfolders/{folder_token}/bulk_remove": {
      "post": {
        "tags": [
          "Folders (Subfolder Management)"
        ],
        "summary": "Bulk-unparent folders from the URL `folder_token`. Idempotent: rows\nthat aren't currently parented to this folder are silently skipped.",
        "operationId": "bulk_remove_subfolders_handler",
        "parameters": [
          {
            "name": "folder_token",
            "in": "path",
            "description": "Parent folder token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FolderToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkRemoveSubfoldersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkRemoveSubfoldersSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/cost_estimate/image": {
      "post": {
        "tags": [
          "Cost Estimate"
        ],
        "summary": "Estimate the credit and USD cost of an image generation request.\nDoes not require authentication and does not charge any credits.",
        "operationId": "estimate_image_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateImageCostRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Cost estimate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateImageCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateImageCostError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/cost_estimate/video": {
      "post": {
        "tags": [
          "Cost Estimate"
        ],
        "summary": "Estimate the credit and USD cost of a video generation request.\nDoes not require authentication and does not charge any credits.",
        "operationId": "estimate_video_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EstimateVideoCostRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Cost estimate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateVideoCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateVideoCostError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/angle/flux_2_lora": {
      "post": {
        "tags": [
          "Generate Images (Angle)"
        ],
        "summary": "Flux 2 LoRA - Edit Image Angle",
        "operationId": "flux_2_lora_edit_image_angle_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Flux2LoraEditImageAngleRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Flux2LoraEditImageAngleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Flux2LoraEditImageAngleResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/angle/qwen_edit_2511": {
      "post": {
        "tags": [
          "Generate Images (Angle)"
        ],
        "summary": "Qwen Edit 2511 - Edit Image Angle",
        "operationId": "qwen_edit_2511_edit_image_angle_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/QwenEdit2511EditImageAngleRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QwenEdit2511EditImageAngleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QwenEdit2511EditImageAngleResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/edit/SeedEdit3": {
      "post": {
        "tags": [
          "Generate Images (Edit)"
        ],
        "summary": "SeedEdit v3 Image Editing",
        "operationId": "seededit_3_edit_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SeedEdit3EditImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeedEdit3EditImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeedEdit3EditImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/edit/flux_pro_kontext_max": {
      "post": {
        "tags": [
          "Generate Images (Edit)"
        ],
        "summary": "Gpt Image 1 Image Editing",
        "operationId": "flux_pro_kontext_max_edit_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FluxProKontextMaxEditImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FluxProKontextMaxEditImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FluxProKontextMaxEditImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/edit/gemini_25_flash": {
      "post": {
        "tags": [
          "Generate Images (Edit)"
        ],
        "summary": "Gemini 2.5 Flash Image Editing",
        "operationId": "gemini_25_flash_edit_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Gemini25FlashEditImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Gemini25FlashEditImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Gemini25FlashEditImageResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/generate/image/edit/gpt_image_1": {
      "post": {
        "tags": [
          "Generate Images (Edit)"
        ],
        "summary": "Gpt Image 1 Image Editing",
        "operationId": "gpt_image_1_edit_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GptImage1EditImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GptImage1EditImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GptImage1EditImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/edit/qwen": {
      "post": {
        "tags": [
          "Generate Images (Edit)"
        ],
        "summary": "Qwen Image Editing",
        "operationId": "qwen_edit_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/QwenEditImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QwenEditImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QwenEditImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/flux_1_dev_text_to_image": {
      "post": {
        "tags": [
          "Generate Images"
        ],
        "summary": "Flux 1 Dev text to image",
        "operationId": "generate_flux_1_dev_text_to_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateFlux1DevTextToImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateFlux1DevTextToImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateFlux1DevTextToImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/flux_1_schnell_text_to_image": {
      "post": {
        "tags": [
          "Generate Images"
        ],
        "summary": "Flux 1 Schnell text to image",
        "operationId": "generate_flux_1_schnell_text_to_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateFlux1SchnellTextToImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateFlux1SchnellTextToImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateFlux1SchnellTextToImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/flux_pro_1.1_text_to_image": {
      "post": {
        "tags": [
          "Generate Images"
        ],
        "summary": "Flux Pro 1.1",
        "operationId": "generate_flux_pro_11_text_to_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateFluxPro11TextToImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateFluxPro11TextToImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateFluxPro11TextToImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/flux_pro_1.1_ultra_text_to_image": {
      "post": {
        "tags": [
          "Generate Images"
        ],
        "summary": "Flux Pro 1.1 Ultra",
        "operationId": "generate_flux_pro_11_ultra_text_to_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateFluxPro11UltraTextToImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateFluxPro11UltraTextToImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateFluxPro11UltraTextToImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/gpt_image_1_text_to_image": {
      "post": {
        "tags": [
          "Generate Images"
        ],
        "summary": "Gpt Image 1",
        "operationId": "generate_gpt_image_1_text_to_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateGptImage1TextToImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateGptImage1TextToImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateGptImage1TextToImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/inpaint/flux_dev_juggernaut": {
      "post": {
        "tags": [
          "Generate Images (Inpaint)"
        ],
        "summary": "Flux Dev juggernaut inpainting",
        "operationId": "flux_dev_juggernaut_inpaint_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FluxDevJuggernautInpaintImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FluxDevJuggernautInpaintImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FluxDevJuggernautInpaintImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/inpaint/flux_pro_1": {
      "post": {
        "tags": [
          "Generate Images (Inpaint)"
        ],
        "summary": "Flux Pro-1 Inpainting",
        "operationId": "flux_pro_1_inpaint_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FluxPro1InpaintImageRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FluxPro1InpaintImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FluxPro1InpaintImageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/bytedance_seedream_5_lite": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Bytedance Seedream 5 Lite Multi-Function (generate + edit)",
        "operationId": "bytedance_seedream_5_lite_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BytedanceSeedream5LiteMultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BytedanceSeedream5LiteMultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BytedanceSeedream5LiteMultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/bytedance_seedream_v4": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Bytedance Seedream 4 Multi-Function (generate + edit)",
        "operationId": "bytedance_seedream_v4_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BytedanceSeedreamV4MultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BytedanceSeedreamV4MultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BytedanceSeedreamV4MultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/bytedance_seedream_v4p5": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Bytedance Seedream 4.5 Multi-Function (generate + edit)",
        "operationId": "bytedance_seedream_v4p5_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BytedanceSeedreamV4p5MultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BytedanceSeedreamV4p5MultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BytedanceSeedreamV4p5MultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/gpt_image_1p5": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Gpt Image 1.5 Multi-Function (generate + edit + inpaint)",
        "operationId": "gpt_image_1p5_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/nano_banana": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Nano Banana Multi-Function (generate + edit)",
        "operationId": "nano_banana_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NanoBananaMultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NanoBananaMultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NanoBananaMultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/nano_banana_2": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Nano Banana 2 Multi-Function (generate + edit)",
        "operationId": "nano_banana_2_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NanaBanana2MultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NanaBanana2MultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NanaBanana2MultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/multi_function/nano_banana_pro": {
      "post": {
        "tags": [
          "Generate Images (Multi-Function)"
        ],
        "summary": "Nano Banana Pro Multi-Function (generate + edit)",
        "operationId": "nano_banana_pro_multi_function_image_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NanoBananaProMultiFunctionImageGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NanoBananaProMultiFunctionImageGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NanoBananaProMultiFunctionImageGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/image/remove_background": {
      "post": {
        "tags": [
          "Generate Images"
        ],
        "summary": "Background removal",
        "operationId": "remove_image_background_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RemoveImageBackgroundRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveImageBackgroundRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveImageBackgroundResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/object/hunyuan_2.0_image_to_3d": {
      "post": {
        "tags": [
          "Generate Objects"
        ],
        "summary": "Hunyuan 2.0 Image to 3D",
        "operationId": "generate_hunyuan_2_0_image_to_3d_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateHunyuan20ImageTo3dRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateHunyuan20ImageTo3dRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateHunyuan20ImageTo3dResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/object/hunyuan_2.1_image_to_3d": {
      "post": {
        "tags": [
          "Generate Objects"
        ],
        "summary": "Hunyuan 2.1 Image to 3D",
        "operationId": "generate_hunyuan_2_1_image_to_3d_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateHunyuan21ImageTo3dRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateHunyuan21ImageTo3dRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateHunyuan21ImageTo3dResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/object/multi_function/hunyuan3d_v3": {
      "post": {
        "tags": [
          "Generate Objects (Multi-Function)"
        ],
        "summary": "Hunyuan 3D v3 Multi-Function (text-to-3d, image-to-3d, sketch-to-3d)",
        "operationId": "generate_hunyuan3d_v3_multi_function_object_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Hunyuan3dV3MultiFunctionObjectGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Hunyuan3dV3MultiFunctionObjectGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Hunyuan3dV3MultiFunctionObjectGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/splat/worldlabs_marble_0p1_mini": {
      "post": {
        "tags": [
          "Generate Splats"
        ],
        "summary": "World Labs Marble 0.1-mini Splat Generation",
        "operationId": "generate_worldlabs_marble_0p1_mini_splat_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateWorldlabsMarble0p1MiniSplatRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateWorldlabsMarble0p1MiniSplatRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateWorldlabsMarble0p1MiniSplatResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/splat/worldlabs_marble_0p1_plus": {
      "post": {
        "tags": [
          "Generate Splats"
        ],
        "summary": "World Labs Marble 0.1-plus Splat Generation",
        "operationId": "generate_worldlabs_marble_0p1_plus_splat_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateWorldlabsMarble0p1PlusSplatRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateWorldlabsMarble0p1PlusSplatRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateWorldlabsMarble0p1PlusSplatResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/edit/beeble_switchx": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Beeble SwitchX Video Edit",
        "operationId": "beeble_switchx_edit_video_gen_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BeebleSwitchXEditVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BeebleSwitchXEditVideoResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/generate/video/kling_1.6_pro_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Kling 1.6 Pro Image to Video",
        "operationId": "generate_kling_1_6_pro_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateKling16ProImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateKling16ProImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateKling16ProImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/kling_2.1_master_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Kling 2.1 Master Image to Video",
        "operationId": "generate_kling_2_1_master_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateKling21MasterImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateKling21MasterImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateKling21MasterImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/kling_2.1_pro_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Kling 2.1 Pro Image to Video",
        "operationId": "generate_kling_2_1_pro_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateKling21ProImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateKling21ProImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateKling21ProImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/kling_2p5_turbo_pro": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Kling 2.5 Turbo Pro Multi-Function (text and image to video)",
        "operationId": "kling_2p5_turbo_pro_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Kling2p5TurboProMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Kling2p5TurboProMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Kling2p5TurboProMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/kling_2p6_pro": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Kling 2.6 Pro Multi-Function (text and image to video)",
        "operationId": "kling_2p6_pro_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Kling2p6ProMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Kling2p6ProMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Kling2p6ProMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/kling_3p0_pro": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Kling 3.0 Pro Multi-Function (text and image to video)",
        "operationId": "kling_3p0_pro_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Kling3p0ProMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Kling3p0ProMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Kling3p0ProMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/kling_3p0_standard": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Kling 3.0 Standard Multi-Function (text and image to video)",
        "operationId": "kling_3p0_standard_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Kling3p0StandardMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Kling3p0StandardMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Kling3p0StandardMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/seedance_1p5_pro": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Seedance 1.5 Pro Multi-Function (text and image to video)",
        "operationId": "seedance_1p5_pro_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Seedance1p5ProMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Seedance1p5ProMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Seedance1p5ProMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/seedance_2p0": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Seedance 2.0 Multi-Function video generation (text-to-video, keyframe, and reference).",
        "operationId": "seedance_2p0_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Seedance2p0MultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Seedance2p0MultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Seedance2p0MultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/sora_2": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Sora 2 Multi-Function (text and image to video)",
        "operationId": "sora_2_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Sora2MultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Sora2MultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sora2MultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/sora_2_pro": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Sora 2 Pro Multi-Function (text and image to video)",
        "operationId": "sora_2_pro_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Sora2ProMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Sora2ProMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Sora2ProMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/veo_3p1": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Veo 3.1 Multi-Function (text and image to video)",
        "operationId": "veo_3p1_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Veo3p1MultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Veo3p1MultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Veo3p1MultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/multi_function/veo_3p1_fast": {
      "post": {
        "tags": [
          "Generate Video (Multi-Function)"
        ],
        "summary": "Veo 3.1 Fast Multi-Function (text and image to video)",
        "operationId": "veo_3p1_fast_multi_function_video_gen_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Veo3p1FastMultiFunctionVideoGenRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Veo3p1FastMultiFunctionVideoGenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Veo3p1FastMultiFunctionVideoGenResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/seedance_1.0_lite_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Seedance 1.0 Lite Image to Video",
        "operationId": "generate_seedance_1_0_lite_image_to_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateSeedance10LiteImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateSeedance10LiteImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateSeedance10LiteImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/seedance_1.0_pro_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Seedance 1.0 Pro Image to Video",
        "operationId": "generate_seedance_1_0_pro_image_to_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateSeedance10ProImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateSeedance10ProImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateSeedance10ProImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/veo_2_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Veo 2 Image to Video",
        "operationId": "generate_veo_2_image_to_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateVeo2ImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateVeo2ImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateVeo2ImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/veo_3_fast_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Veo 3 Fast Image to Video",
        "operationId": "generate_veo_3_fast_image_to_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateVeo3FastImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateVeo3FastImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateVeo3FastImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/generate/video/veo_3_image_to_video": {
      "post": {
        "tags": [
          "Generate Videos"
        ],
        "summary": "Veo 3 Image to Video",
        "operationId": "generate_veo_3_image_to_video_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GenerateVeo3ImageToVideoRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateVeo3ImageToVideoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateVeo3ImageToVideoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/image_studio/scene_snapshot": {
      "post": {
        "tags": [
          "Image Studio"
        ],
        "summary": "Upload snapshots of the scenes created in the 3D image studio.",
        "operationId": "upload_snapshot_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSnapshotMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadSnapshotMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadSnapshotMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/image_studio/update_job_status": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "[INTERNAL ENDPOINT] Update a GPT Image generation job status.\nThis is called by our internal infra, not users. Keep it guarded.\nWe can do secrets-based auth later.",
        "operationId": "update_gpt_image_job_status_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateGptImageJobStatusRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGptImageJobStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateGptImageJobStatusSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/internal/minimax_jobs/job/{job_token}/failure": {
      "post": {
        "tags": [
          "Internal (Minimax Jobs)"
        ],
        "summary": "Internal (worker-facing): mark a first-party Minimax job as failed.",
        "operationId": "mark_minimax_job_failure_handler",
        "parameters": [
          {
            "name": "job_token",
            "in": "path",
            "description": "The inference job token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkMinimaxJobFailureRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarkMinimaxJobFailureResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid internal API key"
          },
          "404": {
            "description": "No such minimax job"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/internal/minimax_jobs/job/{job_token}/success": {
      "post": {
        "tags": [
          "Internal (Minimax Jobs)"
        ],
        "summary": "Internal (worker-facing): mark a first-party Minimax job as successful and\nupload the generated video. Mirrors what the Fal webhook does when videos\ncomplete: upload to the public bucket, create the media file record, fire\nthumbnail tasks, then mark the job `complete_success`.",
        "operationId": "mark_minimax_job_success_handler",
        "parameters": [
          {
            "name": "job_token",
            "in": "path",
            "description": "The inference job token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "Multipart form: `file` (video bytes) plus optional `duration_millis` / `width` / `height` metadata.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MarkMinimaxJobSuccessForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarkMinimaxJobSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input (unreadable or non-video file)"
          },
          "401": {
            "description": "Missing or invalid internal API key"
          },
          "404": {
            "description": "No such minimax job"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/internal/minimax_jobs/obtain_job": {
      "post": {
        "tags": [
          "Internal (Minimax Jobs)"
        ],
        "summary": "Internal (worker-facing): obtain a lock on a pending first-party Minimax\njob by atomically moving it from `pending` to `started`. The response\ncarries everything the worker needs to run inference: the text prompt,\ngeneration settings, and full CDN links to every media reference.",
        "operationId": "obtain_minimax_job_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ObtainMinimaxJobRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success (maybe_job is null when no pending job exists)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObtainMinimaxJobResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid internal API key"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/jobs/batch": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get job statuses for a batch of multiple job tokens.",
        "operationId": "batch_get_inference_job_status_handler",
        "parameters": [
          {
            "name": "tokens",
            "in": "query",
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetInferenceJobStatusSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": ""
          }
        }
      }
    },
    "/v1/jobs/job/{token}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get the status for a single job.",
        "operationId": "get_inference_job_status_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path params for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetInferenceJobStatusPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInferenceJobStatusSuccessResponse"
                }
              }
            }
          },
          "404": {
            "description": ""
          },
          "500": {
            "description": ""
          }
        }
      },
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Terminate a job for the user.",
        "description": "The user must own the job. This works for logged in users as well as logged out users\nIf the user was logged out, we check the IP address.",
        "operationId": "terminate_inference_job_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path params for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TerminateInferenceJobPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminateInferenceJobSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/session": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "List job statuses for jobs that are associated with the user's session.",
        "description": "The user must be logged in. This endpoint will only show the last 36 hours\nof jobs. Any jobs \"dismissed\" by the user will not be returned.\n\nThis returns jobs of all states: pending, started, attempt_failed,\ncomplete_success, dead, etc.",
        "operationId": "list_session_jobs_handler",
        "parameters": [
          {
            "name": "include_states",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `JobStatusPlus`.\n?include_states=pending or ?include_states=pending,started,complete_success (etc.)",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "exclude_states",
            "in": "query",
            "description": "The opposite of include_states, this filters out states from view.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSessionJobsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/jobs/session/dismiss_finished": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Mark all jobs that are finished (or that failed completely and will not retry) as dismissed.",
        "description": "This will prevent these jobs from being returned in the \"list session jobs\" endpoint.",
        "operationId": "dismiss_finished_session_jobs_handler",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DismissFinishedSessionJobsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/login": {
      "post": {
        "tags": [
          "Users"
        ],
        "operationId": "login_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/LoginRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoginErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/logout": {
      "post": {
        "tags": [
          "Users"
        ],
        "operationId": "logout_handler",
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoutSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mcp/session/create": {
      "post": {
        "tags": [
          "MCP Sessions"
        ],
        "summary": "Create a new MCP session for the authenticated user (API key or web session). The secret\n`private_session_token` is returned exactly once in this response — it can never be\nretrieved again afterward.",
        "operationId": "create_mcp_session_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMcpSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMcpSessionSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mcp/session/list": {
      "get": {
        "tags": [
          "MCP Sessions"
        ],
        "summary": "List the authenticated user's MCP sessions (API key or web session), newest first,\n**including terminated** sessions. Paginated via `limit`/`offset`. Never returns the secret\n`private_session_token` — only the management `token`.",
        "operationId": "list_mcp_sessions_handler",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Page size. Defaults server-side if omitted.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of rows to skip. Defaults to 0.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMcpSessionsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mcp/session/refresh": {
      "post": {
        "tags": [
          "MCP Sessions"
        ],
        "summary": "Refresh the calling MCP session, pushing its expiry two weeks out from now. Authenticated\nby the session's `private_session_token` in the `Authorization` header PLUS its current\nrefresh token in the body — a session cannot bump itself without the refresh token.",
        "description": "Each success ROTATES the refresh token: the response carries the new one and the one just\nused becomes invalid. This is deliberately NOT idempotent — a retried refresh (or a stale,\nwrong, terminated, or expired credential) is a 401, never a replay.",
        "operationId": "refresh_mcp_session_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshMcpSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshMcpSessionSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mcp/session/revoke": {
      "post": {
        "tags": [
          "MCP Sessions"
        ],
        "summary": "Terminate the calling MCP session (authenticated ONLY by its `private_session_token` in the\n`Authorization` header), marking it invalid for all future use. Sessions are not\nrecoverable.",
        "operationId": "revoke_mcp_session_handler",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevokeMcpSessionSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mcp/session/{token}/delete": {
      "post": {
        "tags": [
          "MCP Sessions"
        ],
        "summary": "Terminate an MCP session by its management `token`, scoped to the authenticated user (API\nkey or web session). This is the dashboard path; a session revoking ITSELF uses\n`/v1/mcp/session/revoke` with its private credential instead.",
        "operationId": "delete_mcp_session_handler",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "description": "The session's management token (not the private credential)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/McpSessionToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteMcpSessionSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/animation_type/{token}": {
      "post": {
        "tags": [
          "Media Files"
        ],
        "summary": "Change the animation type for a media file.",
        "description": "Only characters, expressions, and animations can have an animation type.",
        "operationId": "change_media_file_animation_type_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ChangeMediaFileAnimationTypeRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileTokenPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeMediaFileAnimationTypeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/batch": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List many media files at the same time by supplying their tokens. You'll have to provide the tokens.",
        "operationId": "batch_get_media_files_handler",
        "parameters": [
          {
            "name": "tokens",
            "in": "query",
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetMediaFilesSuccessResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/batch/{token}": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List media files that were generated together in a \"batch\", e.g. stable diffusion outputs.",
        "description": "This uses a special \"batch token\" that these jobs return. Media files created together will also\nreturn their batch token in the GET endpoint so that you can render a gallery of the batch outputs.",
        "operationId": "list_media_files_by_batch_token_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "page_index",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "filter_media_type",
            "in": "query",
            "required": false,
            "deprecated": true,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/MediaFileType"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Media Files by Batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFilesByBatchSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/batch_gen_redux/{token}": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List media files generated as part of the same batch (redux endpoint)",
        "operationId": "list_batch_generated_redux_media_files_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ListBatchGeneratedReduxMediaFilesPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListBatchGeneratedReduxMediaFilesSuccessResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/by_job/{job_token}": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List the media files produced by an inference job.\nAuthenticates as either a web-session (cookie) user or an API-key (`Authorization` header)\nuser, and only returns files from the caller's own jobs.",
        "operationId": "list_media_files_by_job_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ListMediaFilesByJobPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFilesByJobSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/cover_image/{token}": {
      "post": {
        "tags": [
          "Media Files"
        ],
        "summary": "Set or remove the \"cover image\" (which are used as thumbnails) on a file.",
        "description": "The cover image is another media file of media_class = image. It can be anything in the database,\nyou'll just need its media file token.",
        "operationId": "set_media_file_cover_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SetMediaFileCoverImageRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileTokenPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetMediaFileCoverImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success Delete",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/engine_category/{token}": {
      "post": {
        "tags": [
          "Media Files"
        ],
        "summary": "Change the engine category of a media file.",
        "description": "Only certain transitions are allowed.",
        "operationId": "change_media_file_engine_category_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ChangeMediaFileEngineCategoryRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileTokenPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeMediaFileEngineCategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/file/{token}": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "Get a single media file by token.",
        "operationId": "get_media_file_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetMediaFilePathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMediaFileSuccessResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      },
      "delete": {
        "tags": [
          "Media Files"
        ],
        "summary": "Delete a media file. (Files and records are soft deleted.)",
        "operationId": "delete_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DeleteMediaFileRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DeleteMediaFilePathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteMediaFileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success Delete",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/list": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List all media files in the system globally, across all users (paginated).",
        "description": "This powers \"explore files\" page.",
        "operationId": "list_media_files_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor_is_reversed",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_classes",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - `?filter_media_classes=dimensional`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_type",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, jpg, png, mp4, wav, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf,fbx`\n  - `?filter_media_type=pmd,vmd,pmx`\n  - `?filter_media_type=jpg,png,gif`\n  - `?filter_media_type=wav,mp3`\n  - `?filter_media_type=mp4`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_engine_categories",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "include_user_uploads",
            "in": "query",
            "description": "Include user uploaded files in the results.\nBy default, we do not return them unless this flag is set to true.",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Featured Media Files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/list/user/{username}": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List all of a user's media files (paginated).",
        "description": "This endpoint uses the session to automatically show all files for the given user, but only\nshow \"public\" files for external users.",
        "operationId": "list_media_files_for_user_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "page_index",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "filter_media_classes",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - `?filter_media_classes=dimensional`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_type",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, jpg, png, mp4, wav, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf,fbx`\n  - `?filter_media_type=pmd,vmd,pmx`\n  - `?filter_media_type=jpg,png,gif`\n  - `?filter_media_type=wav,mp3`\n  - `?filter_media_type=mp4`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_engine_categories",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "include_user_uploads",
            "in": "query",
            "description": "Include user uploaded files in the results.\nBy default, we do not return them unless this flag is set to true.",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Featured Media Files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFilesForUserSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/list_featured": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List media files that were featured or promoted by the staff (paginated). This will power our global asset drawers and highlight reels.",
        "operationId": "list_featured_media_files_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor_is_reversed",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_classes",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - `?filter_media_classes=dimensional`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_type",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, jpg, png, mp4, wav, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf,fbx`\n  - `?filter_media_type=pmd,vmd,pmx`\n  - `?filter_media_type=jpg,png,gif`\n  - `?filter_media_type=wav,mp3`\n  - `?filter_media_type=mp4`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_engine_categories",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_products",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `AutoProductCategory`.\nAutoProductCategory is not a db enum directly and can expand to multiple categories for some values.\n\nUsage:\n  - `?filter_products=voice`\n  - `?filter_products=tts,voice_conversion,zs_voice`\n  - `?filter_products=live_portrait`\n  - `?filter_products=lipsync`\n  - `?filter_products=vst`\n  - `?filter_products=studio`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Featured Media Files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFeaturedMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/list_pinned": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List media files that were pinned by the staff (paginated).",
        "operationId": "list_pinned_media_files_handler",
        "responses": {
          "200": {
            "description": "List Featured Media Files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPinnedMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/mesh/list": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List the session user's mesh files (`media_class = 'mesh'`), paginated.",
        "operationId": "list_session_mesh_media_files_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor_is_reversed",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List the session user's mesh files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSessionMeshMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/project/list": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List the session user's project files (`media_class = 'project'`), such as\n3D scenes, mood boards, workflows, and video timelines (paginated).",
        "description": "Use `filter_project_type` to scope the results to a single project type.",
        "operationId": "list_session_project_media_files_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor_is_reversed",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "filter_project_type",
            "in": "query",
            "description": "Optional filter on the specific project document type.\n\nUsage:\n  - `?filter_project_type=scene_3d`\n  - `?filter_project_type=mood_board`\n  - `?filter_project_type=workflow`\n  - `?filter_project_type=video_timeline`",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/MediaFileProjectType"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List the session user's project files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSessionProjectMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/rename/{token}": {
      "post": {
        "tags": [
          "Media Files"
        ],
        "summary": "Change (or remove) the \"title\" of a media file.",
        "operationId": "rename_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RenameMediaFileRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileTokenPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameMediaFileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/search_featured": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "Search for featured media files based on various criteria.",
        "operationId": "search_featured_media_files_handler",
        "parameters": [
          {
            "name": "search_term",
            "in": "query",
            "description": "REQUIRED: The search term.\n\nThis supports typeahead, but the request should still be debounced.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_media_classes",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_type",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_engine_categories",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchFeaturedMediaFilesSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/search_session": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "Search for media files for the active user based on various criteria.",
        "description": "This only returns media files owned by the active user.",
        "operationId": "search_session_media_files_handler",
        "parameters": [
          {
            "name": "search_term",
            "in": "query",
            "description": "REQUIRED: The search term.\n\nThis supports typeahead, but the request should still be debounced.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_media_classes",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_media_type",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_engine_categories",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/splat/list": {
      "get": {
        "tags": [
          "Media Files"
        ],
        "summary": "List the session user's gaussian splat files (`media_class = 'splat'`), paginated.",
        "operationId": "list_session_splat_media_files_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor_is_reversed",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List the session user's splat files",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSessionSplatMediaFilesSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload": {
      "post": {
        "tags": [
          "Media Files [Deprecated]"
        ],
        "summary": "DEPRECATED: Use one of the various specialized upload endpoints instead.\nTODO: Does not support `maybe_generation_provider`. Use the specialized upload endpoints instead.",
        "operationId": "upload_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Ask Brandon. This is form-multipart.",
            "required": true,
            "schema": {
              "default": null
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadMediaSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/media_files/upload/audio": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "This endpoint is for uploading audio files.",
        "operationId": "upload_audio_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadAudioMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadAudioMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadAudioMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/image": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "This endpoint is for uploading image files.",
        "operationId": "upload_image_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadImageMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadImageMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadImageMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/new_engine_asset": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "Upload an engine asset: character, animation, etc. Just don't use this for scenes.",
        "description": "This is for new assets. You can't update existing assets with this endpoint.\n\nBe careful to set the correct `engine_category` and `maybe_animation_type` (if needed) fields!",
        "operationId": "upload_new_engine_asset_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadNewEngineAssetFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadNewEngineAssetFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewEngineAssetSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/new_scene": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "This endpoint is for saving a new scene for the first time.",
        "description": "You'll get back a media token for accessing and querying the scene in the future.\n\nFor future saving on the same scene, call the \"saved scene\" endpoint, i.e. do not\ncall this endpoint a second time unless the user wants to save a new copy of the\nsame scene.",
        "operationId": "upload_new_scene_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadNewSceneMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadNewSceneMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewSceneMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/new_video": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "This endpoint is for uploading video files.",
        "operationId": "upload_new_video_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadNewVideoMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadNewVideoMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewVideoMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/pmx": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "Upload a pmx zip file.",
        "description": "Be careful to set the correct `engine_category` and `maybe_animation_type` (if needed) fields!",
        "operationId": "upload_pmx_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadPmxFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadPmxFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadPmxSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/project/editor_2d/new": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Save a new 2D editor project (multipart JSON document upload).",
        "description": "You'll get back a media file token for accessing and querying the project\nin the future. To save further changes to the same project, call the\ncorresponding update endpoint — only call this endpoint again if the user\nwants to save a brand new copy.\n\nAnonymous (logged-out) users may also save projects.",
        "operationId": "upload_new_editor_2d_project_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `NewProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NewProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "New 2D editor project saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewEditor2dProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/editor_2d/update/{token}": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Overwrite an existing 2D editor project (multipart JSON document upload).",
        "description": "Only the project's creator may update it: user-owned projects require a\nmatching user session, and anonymously created projects require a matching\nanonymous visitor token. To save a brand new copy instead, call the\ncorresponding \"new\" endpoint.",
        "operationId": "upload_updated_editor_2d_project_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadUpdatedEditor2dProjectPathInfo"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UpdateProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "2d editor project updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadUpdatedEditor2dProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/mood_board/new": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Save a new mood board project (multipart JSON document upload).",
        "description": "You'll get back a media file token for accessing and querying the project\nin the future. To save further changes to the same project, call the\ncorresponding update endpoint — only call this endpoint again if the user\nwants to save a brand new copy.\n\nAnonymous (logged-out) users may also save projects.",
        "operationId": "upload_new_mood_board_project_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `NewProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NewProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "New mood board project saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewMoodBoardProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/mood_board/update/{token}": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Overwrite an existing mood board project (multipart JSON document upload).",
        "description": "Only the project's creator may update it: user-owned projects require a\nmatching user session, and anonymously created projects require a matching\nanonymous visitor token. To save a brand new copy instead, call the\ncorresponding \"new\" endpoint.",
        "operationId": "upload_updated_mood_board_project_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadUpdatedMoodBoardProjectPathInfo"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UpdateProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Mood board project updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadUpdatedMoodBoardProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/scene_3d/new": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Save a new 3D scene project (multipart JSON document upload).",
        "description": "You'll get back a media file token for accessing and querying the project\nin the future. To save further changes to the same project, call the\ncorresponding update endpoint — only call this endpoint again if the user\nwants to save a brand new copy.\n\nAnonymous (logged-out) users may also save projects.",
        "operationId": "upload_new_scene_3d_project_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `NewProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NewProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "New 3D scene project saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewScene3dProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/scene_3d/update/{token}": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Overwrite an existing 3D scene project (multipart JSON document upload).",
        "description": "Only the project's creator may update it: user-owned projects require a\nmatching user session, and anonymously created projects require a matching\nanonymous visitor token. To save a brand new copy instead, call the\ncorresponding \"new\" endpoint.",
        "operationId": "upload_updated_scene_3d_project_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadUpdatedScene3dProjectPathInfo"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UpdateProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "3d scene project updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadUpdatedScene3dProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/video_timeline/new": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Save a new video editor timeline project (multipart JSON document upload).",
        "description": "You'll get back a media file token for accessing and querying the project\nin the future. To save further changes to the same project, call the\ncorresponding update endpoint — only call this endpoint again if the user\nwants to save a brand new copy.\n\nAnonymous (logged-out) users may also save projects.",
        "operationId": "upload_new_video_timeline_project_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `NewProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/NewProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "New video editor timeline project saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadNewVideoTimelineProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/project/video_timeline/update/{token}": {
      "post": {
        "tags": [
          "Media Files (Projects)"
        ],
        "summary": "Overwrite an existing video editor timeline project (multipart JSON document upload).",
        "description": "Only the project's creator may update it: user-owned projects require a\nmatching user session, and anonymously created projects require a matching\nanonymous visitor token. To save a brand new copy instead, call the\ncorresponding \"new\" endpoint.",
        "operationId": "upload_updated_video_timeline_project_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadUpdatedVideoTimelineProjectPathInfo"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UpdateProjectMultipartForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateProjectMultipartForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Video editor timeline project updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadUpdatedVideoTimelineProjectSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Not authorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/media_files/upload/saved_scene/{token}": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "Use this endpoint to make changes to an existing scene.",
        "description": "If you have a media token for the scene you're trying to save (i.e. not a completely\nnew, unsaved scene), call this endpoint to overwrite and save the changes to the scene.\n\nIf you want to create a new copy of an existing scene, call the \"new scene\" endpoint\ninstead as it won't overwrite an existing scene and will return a brand new media token.",
        "operationId": "upload_saved_scene_media_file_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadSavedSceneMediaFilePathInfo"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSavedSceneMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadSavedSceneMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadSavedSceneMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/scene_snapshot": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "This endpoint is for saving a snapshot of a scene before we render it as a video.",
        "description": "Do not replace the user's current scene with this snapshot token!",
        "operationId": "upload_scene_snapshot_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSceneSnapshotMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadSceneSnapshotMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadSceneSnapshotMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/spz": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "This endpoint is for uploading SPZ (Gaussian Splat) files.",
        "description": "SPZ files are compressed Gaussian splat files used for 3D scene representation.\nThe file must have a `.spz` extension and be gzip-compressed.",
        "operationId": "upload_spz_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSpzMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadSpzMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadSpzMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/studio_shot": {
      "post": {
        "tags": [
          "Media Files (Upload)"
        ],
        "summary": "Upload a studio render in a zip file.",
        "operationId": "upload_studio_shot_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadStudioShotFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UploadStudioShotFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadStudioShotSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/media_files/upload/video": {
      "post": {
        "tags": [
          "Media Files [Deprecated]"
        ],
        "summary": "DEPRECATED: Use the \"new video\" endpoint instead.",
        "operationId": "upload_video_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Ask Brandon. This is form-multipart.",
            "required": true,
            "schema": {
              "default": null
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadVideoMediaSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/media_files/visibility/{token}": {
      "post": {
        "tags": [
          "Media Files"
        ],
        "summary": "Change the visibility (public, hidden, private) of a media file.",
        "operationId": "change_media_file_visibility_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ChangeMediaFileVisibilityRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileTokenPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeMediaFileVisibilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/model_download/gsv": {
      "post": {
        "tags": [
          "Model Downloads"
        ],
        "summary": "Enqueue a GptSoVits model for download (eg. from Google Drive)",
        "operationId": "enqueue_gptsovits_model_download_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnqueueGptSovitsModelDownloadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueGptSovitsModelDownloadSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/moderation/alerts/send": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Send a test alert via the pager system. Moderators only.",
        "operationId": "moderation_send_alert_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModerationSendAlertRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationSendAlertResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/dashboards/databox": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List the Databox metrics dashboards configured for the admin dashboard.\nDashboards whose env vars aren't set are omitted.",
        "operationId": "moderator_list_databox_dashboards_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDataboxDashboardsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/moderation/debug_logs/list/{token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "operationId": "moderation_list_debug_logs_for_token_handler",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "description": "Debug log event token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationListDebugLogsForTokenSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/debug_logs/list_all": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "operationId": "moderation_list_all_debug_logs_handler",
        "parameters": [
          {
            "name": "severities",
            "in": "query",
            "description": "Optional comma-separated list of severity levels to include,\neg. `severities=error,warn`. Omit to include all rows.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor for pagination. Pass the `next_cursor` from a previous response.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max rows per page (default 50, max 200).",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationListAllDebugLogsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid severity)"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/debug_logs/user_list/{user_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "operationId": "moderation_list_debug_logs_for_user_handler",
        "parameters": [
          {
            "name": "user_token",
            "in": "path",
            "description": "User token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor for pagination. Pass the `next_cursor` from a previous response.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max rows per page (default 50, max 200).",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationListDebugLogsForUserSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/job/{token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "operationId": "moderation_get_job_by_token_handler",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "description": "Inference job token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetJobByTokenSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/jobs/user/{user_token}/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List jobs for a user (moderation)",
        "operationId": "list_user_jobs_handler",
        "parameters": [
          {
            "name": "user_token",
            "in": "path",
            "description": "User token to look up jobs for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UserToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserJobsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/staff_audit_logs/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List all staff audit logs. Moderators only.",
        "operationId": "moderator_list_staff_audit_logs_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListStaffAuditLogsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/token_info/{token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "operationId": "moderator_get_token_info_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ModeratorTokenInfoPath"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorTokenInfoResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/moderation/top_spenders/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "Top spenders aggregated over a rolling time window, biggest net spend first.\nModerators only.",
        "operationId": "moderator_list_top_spenders_handler",
        "parameters": [
          {
            "name": "window",
            "in": "query",
            "description": "Aggregation window: `24h`, `7d`, `14d`, `30d` (default), `60d`, `90d`,\n`180d`, or `365d`.",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/TopSpendersWindow"
                }
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Row offset for pagination (page size is fixed at 100). Pass `next_offset` from the previous page.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "payments_namespace",
            "in": "query",
            "description": "Optional namespace filter (e.g. `artcraft`). Omit to return all namespaces.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListTopSpendersResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid window"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_daily_spends/user/{user_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List a user's daily spend rows, most recent payment date first. Moderators only.",
        "operationId": "moderator_user_daily_spends_handler",
        "parameters": [
          {
            "name": "user_token",
            "in": "path",
            "description": "The user's token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size (default 200, max 5000).",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Row offset for pagination. Pass `next_offset` from the previous page.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "payments_namespace",
            "in": "query",
            "description": "Payments namespace. Defaults to `artcraft`.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorUserDailySpendsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_emails/change": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Change a user's email address as a moderator. Records the change in\n`user_email_changes` and writes a `staff_audit_logs` row.",
        "operationId": "moderator_change_user_email_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorChangeUserEmailRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Email changed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorChangeUserEmailSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad email format or duplicate email",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "Target user not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/moderation/user_emails/list/{username}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List recorded email-address changes for a given user, newest first.\nModerators only. Paginated via opaque cursor + limit.",
        "operationId": "moderator_list_email_address_changes_for_user_handler",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "description": "Username of the user whose email history to list",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Opaque cursor from a previous page's `maybe_cursor`. Omit for the\nfirst page.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Page size. Defaults to 100, capped at 1000.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListUserEmailChangesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad cursor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/moderation/user_feature_flags/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List all available user feature flags.",
        "operationId": "moderator_list_all_available_user_feature_flags_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListUserFeatureFlagsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/v1/moderation/user_feature_flags/user/{username_or_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List the feature flags enabled for a specific user.",
        "operationId": "moderator_list_user_feature_flags_handler",
        "parameters": [
          {
            "name": "username_or_token",
            "in": "path",
            "description": "Username or user token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListUserFeatureFlagsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "post": {
        "tags": [
          "Moderation"
        ],
        "operationId": "moderator_edit_user_feature_flags_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditUserFeatureFlagPathInfo"
            }
          },
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditUserFeatureFlagsRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditUserFeatureFlagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/moderation/user_referrals/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List all user referrals globally. Moderators only.",
        "operationId": "moderator_list_global_user_referrals_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGlobalUserReferralsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_referrals/user/{username}/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List user referrals for a specific referrer user. Moderators only.",
        "operationId": "moderator_list_user_referrals_for_user_handler",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "description": "The referrer's username",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserReferralsForUserSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_sessions/impersonate": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Create a user impersonation request. Moderators only.",
        "operationId": "moderator_user_session_impersonation_request_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModerationImpersonateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Impersonation request created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModerationImpersonateSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "User not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_sessions/impersonation_requests/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List all impersonation requests (not scoped to a user). Moderators only.",
        "operationId": "moderator_list_user_session_impersonation_requests_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAllImpersonationRequestsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_sessions/impersonation_requests/user/{user_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List impersonation requests for a given user. Moderators only.",
        "operationId": "moderator_list_user_session_impersonation_requests_for_user_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserImpersonationRequestsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_spend_events/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List spend events, most recent payment date first, with the spender's display info.\nModerators only.",
        "operationId": "moderator_list_user_spend_events_handler",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Row offset for pagination (page size is fixed at 200). Pass `next_offset` from the previous page.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "payments_namespace",
            "in": "query",
            "description": "Optional namespace filter (e.g. `artcraft`). Omit to return all namespaces.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListUserSpendEventsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_spend_summaries/reengagement_list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List users that need re-engagement (re-engagement score descending). Moderators only.",
        "operationId": "moderator_reengagement_list_handler",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Row offset for pagination (page size is fixed at 200). Pass `next_offset` from the previous page.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "payments_namespace",
            "in": "query",
            "description": "Payments namespace. Defaults to `artcraft`.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorReengagementListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_spend_summaries/summary/{user_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "Get the full spend summary for a user. Moderators only.",
        "operationId": "moderator_get_user_spend_summary_handler",
        "parameters": [
          {
            "name": "user_token",
            "in": "path",
            "description": "The user's token",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "payments_namespace",
            "in": "query",
            "description": "Payments namespace. Defaults to `artcraft`.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorGetUserSpendSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_spend_summaries/top_users_list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List top spenders, sorted by net spend over the requested window. Moderators only.",
        "operationId": "moderator_top_users_list_handler",
        "parameters": [
          {
            "name": "window",
            "in": "query",
            "description": "Sort window: `7d`, `14d`, `30d`, `60d`, `90d`, `1y`, or `lifetime` (default).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/TopUsersWindow"
                }
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Row offset for pagination (page size is fixed at 200). Pass `next_offset` from the previous page.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "payments_namespace",
            "in": "query",
            "description": "Payments namespace. Defaults to `artcraft`.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorTopUsersListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/user_stripe_data/{user_token}/customer_ids": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "Get all stripe customer ids on file for a user (moderation)",
        "operationId": "moderator_get_user_stripe_customer_ids_handler",
        "parameters": [
          {
            "name": "user_token",
            "in": "path",
            "description": "User token to look up",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UserToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorGetUserStripeCustomerIdsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/users/list_all_by_signup_date": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "List users by signup date (descending), for moderators.",
        "operationId": "moderator_list_users_by_signup_date_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorListUsersBySignupDateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListUsersBySignupDateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/users/list_subscribers_by_signup_date": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "List subscribing users by signup date (descending), for moderators.",
        "operationId": "moderator_list_subscribing_users_by_signup_date_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorListSubscribingUsersBySignupDateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorListSubscribingUsersBySignupDateResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/users/lookup": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Moderator User Lookup",
        "operationId": "moderator_user_lookup_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorUserLookupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorUserLookupSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/users/lookup_by_stripe_customer_id": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Moderator User Lookup by Stripe Customer ID",
        "operationId": "moderator_user_lookup_by_stripe_customer_id_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorUserLookupByStripeCustomerIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorUserLookupByStripeCustomerIdResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/wallet/create_for_user": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Create a wallet for a user (moderation)",
        "operationId": "moderator_create_wallet_for_user_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorCreateWalletForUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorCreateWalletForUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/wallet/{wallet_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "Get a single wallet by token (moderation)",
        "operationId": "moderator_get_wallet_handler",
        "parameters": [
          {
            "name": "wallet_token",
            "in": "path",
            "description": "Wallet token to look up",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/WalletToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorGetWalletResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/wallet/{wallet_token}/add_banked_balance": {
      "post": {
        "tags": [
          "Moderation"
        ],
        "summary": "Add banked credits to a wallet (moderation)",
        "operationId": "moderator_add_banked_balance_to_wallet_handler",
        "parameters": [
          {
            "name": "wallet_token",
            "in": "path",
            "description": "Wallet token to add credits to",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/WalletToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModeratorAddBankedBalanceToWalletRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorAddBankedBalanceToWalletResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/wallet_ledger_entries/wallet/{wallet_token}/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List wallet ledger entries by wallet token (moderation)",
        "operationId": "list_wallet_ledger_entries_by_wallet_handler",
        "parameters": [
          {
            "name": "wallet_token",
            "in": "path",
            "description": "Wallet token to look up ledger entries for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/WalletToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWalletLedgerEntriesByWalletResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/wallet_ledger_entry/{wallet_ledger_entry_token}": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "Get a single wallet ledger entry by token (moderation)",
        "operationId": "moderator_get_wallet_ledger_entry_handler",
        "parameters": [
          {
            "name": "wallet_ledger_entry_token",
            "in": "path",
            "description": "Wallet ledger entry token to look up",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/WalletLedgerEntryToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModeratorGetWalletLedgerEntryResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/moderation/wallets/user/{user_token}/list": {
      "get": {
        "tags": [
          "Moderation"
        ],
        "summary": "List wallets for a user (moderation)",
        "operationId": "list_user_wallets_handler",
        "parameters": [
          {
            "name": "user_token",
            "in": "path",
            "description": "User token to look up wallets for",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UserToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserWalletsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_api/generate/image": {
      "post": {
        "tags": [
          "Omni API"
        ],
        "summary": "Generate an image using the omni-api unified endpoint (API-key authenticated).",
        "operationId": "omni_api_image_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniApiImageGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenImageGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_api/generate/video": {
      "post": {
        "tags": [
          "Omni API"
        ],
        "summary": "Generate a video using the omni-api unified endpoint (API-key authenticated).",
        "description": "Razor-thin handler: validate the omni-api extras (URL-based media inputs),\nauthenticate the API key, ingest any URL inputs into media files, then\ndelegate to the shared generation core in the omni_gen module — which is\nauthoritative for generation behavior. This endpoint is the API-key-only\ntwin of `/v1/omni_gen/generate/video`.",
        "operationId": "omni_api_video_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniApiVideoGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenVideoGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_api/job_status/batch": {
      "get": {
        "tags": [
          "Omni API"
        ],
        "summary": "Get job statuses for a batch of multiple job tokens (Omni API, API-key authenticated).",
        "description": "Mirrors `/v1/jobs/batch` but reads the caller's identity from the\n`Authorization` header API key instead of a session cookie.",
        "operationId": "omni_api_batch_get_job_status_handler",
        "parameters": [
          {
            "name": "tokens",
            "in": "query",
            "description": "A grab bag of job tokens. Each token family generally has its own prefix,\nso a flat set is sufficient.\n\nNB: handlers parse this with `actix_web_lab`'s `Query<T>` because the\ndefault actix-web `Query<T>` doesn't decode repeated/sequence params yet.\nSee https://github.com/actix/actix-web/issues/1301",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniApiBatchGetJobStatusSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": ""
          }
        }
      }
    },
    "/v1/omni_api/job_status/job/{token}": {
      "get": {
        "tags": [
          "Omni API"
        ],
        "summary": "Get the status for a single job (Omni API, API-key authenticated).",
        "description": "Mirrors `/v1/jobs/job/{token}` but reads the caller's identity from the\n`Authorization` header API key instead of a session cookie.",
        "operationId": "omni_api_get_job_status_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path params for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OmniApiGetJobStatusPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniApiGetJobStatusSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": ""
          },
          "500": {
            "description": ""
          }
        }
      }
    },
    "/v1/omni_api/upload/audio": {
      "post": {
        "tags": [
          "Omni API"
        ],
        "summary": "API-key authenticated audio upload (Omni API). Identity is read from the `Authorization` header\nAPI key rather than a session cookie.",
        "operationId": "omni_upload_audio_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `OmniUploadAudioMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OmniUploadAudioMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniUploadAudioMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/omni_api/upload/image": {
      "post": {
        "tags": [
          "Omni API"
        ],
        "summary": "API-key authenticated image upload (Omni API). Identity is read from the `Authorization` header\nAPI key rather than a session cookie.",
        "operationId": "omni_upload_image_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `OmniUploadImageMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OmniUploadImageMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniUploadImageMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/omni_api/upload/video": {
      "post": {
        "tags": [
          "Omni API"
        ],
        "summary": "API-key authenticated video upload (Omni API). Identity is read from the `Authorization` header\nAPI key rather than a session cookie.",
        "operationId": "omni_upload_video_media_file_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "IF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `OmniUploadVideoMediaFileForm` (Under 'Schema') FOR DETAILS ON FIELDS AND NULLABILITY.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OmniUploadVideoMediaFileForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniUploadVideoMediaFileSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaFileUploadError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/omni_gen/cost/audio": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Estimate the cost of an audio generation.",
        "operationId": "omni_gen_audio_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenAudioCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenAudioCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/cost/image": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Estimate the cost of an image generation.",
        "operationId": "omni_gen_image_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenImageCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenImageCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/cost/mesh": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Estimate the cost of a mesh (3D object) generation.",
        "operationId": "omni_gen_mesh_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenMeshCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenMeshCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/cost/splat": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Estimate the cost of a splat (3D world) generation.",
        "operationId": "omni_gen_splat_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenSplatCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenSplatCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/cost/video": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Estimate the cost of a video generation.",
        "operationId": "omni_gen_video_cost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenVideoCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenVideoCostResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/generate/audio": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Generate audio using the omni-gen unified endpoint.\nAuthenticates as a web-session (cookie) user, an API-key (`Authorization` header) user, or\nan MCP-session (`Authorization` header) user.",
        "operationId": "omni_gen_audio_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenAudioCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenAudioGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/generate/image": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Generate an image using the omni-gen unified endpoint.\nAuthenticates as a web-session (cookie) user, an API-key (`Authorization` header) user, or\nan MCP-session (`Authorization` header) user.",
        "operationId": "omni_gen_image_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenImageCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenImageGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/generate/mesh": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Generate a mesh (3D object) using the omni-gen unified endpoint.\nAuthenticates as a web-session (cookie) user, an API-key (`Authorization` header) user, or\nan MCP-session (`Authorization` header) user.",
        "operationId": "omni_gen_mesh_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenMeshCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenMeshGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/generate/splat": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Generate a splat (3D world) using the omni-gen unified endpoint.\nAuthenticates as a web-session (cookie) user, an API-key (`Authorization` header) user, or\nan MCP-session (`Authorization` header) user.",
        "operationId": "omni_gen_splat_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenSplatCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenSplatGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/generate/video": {
      "post": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "Generate a video using the omni-gen unified endpoint.\nAuthenticates as a web-session (cookie) user, an API-key (`Authorization` header) user, or\nan MCP-session (`Authorization` header) user.",
        "description": "Razor-thin handler: authenticate, then delegate to the shared\ngeneration core in `shared_video_generation` (which is authoritative for\nbehavior — the omni_api endpoint delegates to the same core).",
        "operationId": "omni_gen_video_generate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OmniGenVideoCostAndGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenVideoGenerateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "402": {
            "description": "Payment required"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/models/audio": {
      "get": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "List available audio models.",
        "operationId": "omni_gen_audio_models_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenAudioModelsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/models/image": {
      "get": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "List available image models.",
        "operationId": "omni_gen_image_models_handler",
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "description": "Which provider's models to list. Defaults to \"artcraft\" if absent.",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/OmniGenImageModelsProvider"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenImageModelsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/models/mesh": {
      "get": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "List available mesh (3D object) models.",
        "operationId": "omni_gen_mesh_models_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenMeshModelsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/models/splat": {
      "get": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "List available splat (3D world) models.",
        "operationId": "omni_gen_splat_models_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenSplatModelsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/omni_gen/models/video": {
      "get": {
        "tags": [
          "Omni Gen"
        ],
        "summary": "List available video models.",
        "operationId": "omni_gen_video_models_handler",
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "description": "Which provider's models to list. Defaults to \"artcraft\" if absent.",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/OmniGenVideoModelsProvider"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OmniGenVideoModelsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/prompt/batch": {
      "get": {
        "tags": [
          "Prompts"
        ],
        "summary": "Batch get details on multiple prompts.",
        "description": "Called, eg. {{api_host}}/v1/prompt/batch?tokens={val}&tokens={val}&tokens=...",
        "operationId": "batch_get_prompts_handler",
        "parameters": [
          {
            "name": "tokens",
            "in": "query",
            "description": "Prompt tokens to look up.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetPromptsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/prompts/create": {
      "post": {
        "tags": [
          "Prompts"
        ],
        "summary": "Create a new prompt record (note: most inference endpoints do this internally for us automatically).",
        "operationId": "create_prompt_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CreatePromptRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePromptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePromptResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/prompts/{token}": {
      "get": {
        "tags": [
          "Prompts"
        ],
        "summary": "Get details on a prompt.",
        "operationId": "get_prompt_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetPromptPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPromptSuccessResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/session": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "session_info_handler",
        "responses": {
          "200": {
            "description": "Get profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionInfoSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/session_token": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Hack to bypass CORS. !!!!!!!!!!!DO NOT USE THIS!!!!!!!!!!!!!!",
        "description": "Seriously do not use this unless you okay it with Brandon, Kasisnu, or Michael.\nThis is poison and is a huge security vuln.",
        "operationId": "session_token_info_handler",
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionTokenInfoSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/stats/queues": {
      "get": {
        "tags": [
          "Stats"
        ],
        "summary": "[DEPRECATED] Get queue stats for legacy inference jobs (tts, voice conversion, etc.)",
        "description": "The legacy inference systems are gone; this returns a hardcoded snapshot\nfor old clients that still poll it.",
        "operationId": "get_unified_queue_stats_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUnifiedQueueStatsSuccessResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/status_alert_check": {
      "get": {
        "tags": [
          "Misc"
        ],
        "operationId": "status_alert_handler",
        "responses": {
          "200": {
            "description": "Check service status for frontend alert messages",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusAlertResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscriptions/namespace/{namespace}": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Get subscription for the payment namespace.",
        "description": "Use this instead of the older endpoints,\n\n - GET /v1/billing/active_subscription (legacy, for FakeYou)\n - GET /v1/app_state (quite a lot of FakeYou state)\n\n",
        "operationId": "get_session_subscription_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetSessionSubscriptionPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionSubscriptionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/bulk_add": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Add the same tag set to many media files at once (pairwise: every\ntag goes on every file). Upsert semantics throughout — existing\ntags and existing links are absorbed. Tags not mentioned are left\nalone. Input tokens the user doesn't own (or that are deleted) are\nsilently skipped; the response lists the accepted tokens.",
        "operationId": "bulk_add_tags_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkAddTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkAddTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/bulk_set": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Replace the tag set on many media files at once (pairwise: every\nfile ends up with exactly the mentioned tags). Mentioned tags are\nupserted and attached like `bulk_add`; previously-attached tags that\nweren't mentioned are unlinked (orphaned tags are not deleted). An\nempty tag set clears every listed file. Input tokens the user\ndoesn't own (or that are deleted) are silently skipped; the\nresponse lists the accepted tokens.",
        "operationId": "bulk_set_tags_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkSetTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkSetTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/list": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Paginated list of the logged-in user's tags, newest first.",
        "operationId": "list_tags_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_file/add/{media_file_token}": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Add tags to a media file. Upsert semantics: tags that don't exist\nare created (reviving soft-deleted ones), tags already on the file\nare absorbed without error. Tags not mentioned are left alone. Only\nthe media file's creator may tag it (404 otherwise).",
        "operationId": "add_media_file_tags_handler",
        "parameters": [
          {
            "name": "media_file_token",
            "in": "path",
            "description": "Media file token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddMediaFileTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddMediaFileTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_file/clear/{media_file_token}": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Remove ALL tags from a media file (hard delete of the links — the\norphaned tags themselves are not deleted, and their use counts are\nrecounted). Only the media file's creator may do this (404\notherwise).",
        "operationId": "clear_media_file_tags_handler",
        "parameters": [
          {
            "name": "media_file_token",
            "in": "path",
            "description": "Media file token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClearMediaFileTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_file/list/{media_file_token}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "All tags on a media file, sorted by tag value. No login required for\npublic and hidden media files (anyone with the URL); PRIVATE files\nonly reveal their tags to their creator — everyone else gets a 404,\nsame as a nonexistent file, so private tag vocabulary doesn't leak.",
        "operationId": "list_media_file_tags_handler",
        "parameters": [
          {
            "name": "media_file_token",
            "in": "path",
            "description": "Media file token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFileTagsSuccessResponse"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_file/set/{media_file_token}": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Replace a media file's tag set. Mentioned tags are upserted and\nattached exactly like `add`; previously-attached tags that weren't\nmentioned are unlinked (hard delete of the link — orphaned tags are\nnot deleted). An empty tag set clears the file. Only the media\nfile's creator may do this (404 otherwise).",
        "operationId": "set_media_file_tags_handler",
        "parameters": [
          {
            "name": "media_file_token",
            "in": "path",
            "description": "Media file token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MediaFileToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetMediaFileTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetMediaFileTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_files/bulk_list_tags": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "All tags on each of the supplied media files, in one round-trip.\nFollows the same visibility rule as the single-file listing: tags on\npublic and hidden files are readable by anyone; a PRIVATE file's\ntags only appear for its creator (other requesters see it with an\nempty tag list, indistinguishable from an untagged file). POST\nbecause the token list belongs in a request body — the operation is\nstill a pure read.",
        "operationId": "bulk_list_media_file_tags_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkListMediaFileTagsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkListMediaFileTagsSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_files/list_tagged": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Paginated list of the logged-in user's media files that carry at\nleast one tag. Newest first.",
        "operationId": "list_tagged_media_files_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTaggedMediaFilesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_files/list_untagged": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Paginated list of the logged-in user's media files that carry no\ntags at all. Newest first.",
        "operationId": "list_untagged_media_files_handler",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUntaggedMediaFilesSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/media_files/with_tag/{tag_token}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Paginated list of the logged-in user's media files carrying the\ngiven tag. The tag must belong to the user (404 otherwise).\nNewest first.",
        "operationId": "list_media_files_with_tag_handler",
        "parameters": [
          {
            "name": "tag_token",
            "in": "path",
            "description": "Tag token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TagToken"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMediaFilesWithTagSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/rename/{tag_token}": {
      "put": {
        "tags": [
          "Tags"
        ],
        "summary": "Rename a tag. Handles both case-only changes (same lowercased value)\nand wholesale renames. If the target name is held by one of the\nuser's SOFT-DELETED tags, the dead row is purged so the rename can\ntake the name over; a LIVE tag with the target name fails with 400.\nOnly the tag's creator may do this (404 otherwise).",
        "operationId": "rename_tag_handler",
        "parameters": [
          {
            "name": "tag_token",
            "in": "path",
            "description": "Tag token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TagToken"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameTagRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenameTagSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tags/{tag_token}": {
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Delete a tag: hard-deletes every media-file link, then soft-deletes\nthe tag record itself (its token can be revived later by re-adding\nthe same tag text). Only the tag's creator may do this (404\notherwise).",
        "operationId": "delete_tag_handler",
        "parameters": [
          {
            "name": "tag_token",
            "in": "path",
            "description": "Tag token",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/TagToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteTagSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/tts/inference": {
      "post": {
        "tags": [
          "TTS"
        ],
        "summary": "[DEPRECATED] Enqueue a legacy TTS inference request.",
        "description": "Legacy TTS inference is shut down. This endpoint unconditionally returns a\ncanned success response with a synthetic job token so old clients don't error.",
        "operationId": "enqueue_infer_tts_handler",
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InferTtsSuccessResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user/change_password": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Change password for the current user.",
        "operationId": "change_password_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ChangePasswordRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangePasswordResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user/edit_email": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Edit email address of the current user.",
        "operationId": "edit_email_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditEmailRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditEmailRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditEmailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user/edit_username": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Edit username of the current user.",
        "operationId": "edit_username_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EditUsernameRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditUsernameRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EditUsernameResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user/{username}/profile": {
      "get": {
        "tags": [
          "Users"
        ],
        "operationId": "get_profile_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetProfilePathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserProfileRecordForResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_bookmarks/batch": {
      "get": {
        "tags": [
          "User Bookmarks"
        ],
        "operationId": "batch_get_user_bookmarks_handler",
        "parameters": [
          {
            "name": "tokens",
            "in": "query",
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List User Bookmarks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetUserBookmarksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetUserBookmarksError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetUserBookmarksError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetUserBookmarksError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_bookmarks/create": {
      "post": {
        "tags": [
          "User Bookmarks"
        ],
        "operationId": "create_user_bookmark_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserBookmarkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateUserBookmarkSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateUserBookmarkError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_bookmarks/delete/{user_bookmark_token}": {
      "delete": {
        "tags": [
          "User Bookmarks"
        ],
        "operationId": "delete_user_bookmark_handler",
        "parameters": [
          {
            "name": "user_bookmark_token",
            "in": "path",
            "description": "UserBookmarkToken",
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteUserBookmarkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Delete User Bookmark",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteUserBookmarkError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteUserBookmarkError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteUserBookmarkError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteUserBookmarkError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_bookmarks/list/user/{username}": {
      "get": {
        "tags": [
          "User Bookmarks"
        ],
        "operationId": "list_user_bookmarks_for_user_handler",
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "description": "The username of the user whose bookmarks to list.",
            "required": true
          },
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "page_index",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "maybe_scoped_entity_type",
            "in": "query",
            "description": "Scope to a particular type of entity (there are lots). Note that some types are deprecated\nand will no longer be valid soon: TtsModel, TtsResult, W2lTemplate, W2lResult,\nVoiceConversionModel. See `maybe_scoped_weight_type`, `maybe_scoped_weight_category`,\nand `maybe_scoped_media_file_type` instead.",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/UserBookmarkEntityType"
                }
              ]
            }
          },
          {
            "name": "maybe_scoped_weight_type",
            "in": "query",
            "description": "If set, we implicitly scope bookmarks to model weights (UserBookmarkEntityType::ModelWeight)",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/WeightsType"
                }
              ]
            }
          },
          {
            "name": "maybe_scoped_weight_category",
            "in": "query",
            "description": "If set, we implicitly scope bookmarks to model weights (UserBookmarkEntityType::ModelWeight)",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/WeightsCategory"
                }
              ]
            }
          },
          {
            "name": "maybe_scoped_media_file_type",
            "in": "query",
            "description": "If set, we implicitly scope bookmarks to media files (UserBookmarkEntityType::MediaFile)",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/MediaFileType"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List User Bookmarks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserBookmarksForUserSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserBookmarksForUserError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_bookmarks/list/{entity_type}/{entity_token}": {
      "get": {
        "tags": [
          "User Bookmarks"
        ],
        "operationId": "list_user_bookmarks_for_entity_handler",
        "parameters": [
          {
            "name": "entity_type",
            "in": "path",
            "description": "The type of entity to list bookmarks for",
            "required": true
          },
          {
            "name": "entity_token",
            "in": "path",
            "description": "The token of the entity to list bookmarks for",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserBookmarksForEntitySuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserBookmarksForEntityError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_rating/batch": {
      "get": {
        "tags": [
          "User Ratings"
        ],
        "operationId": "batch_get_user_rating_handler",
        "parameters": [
          {
            "name": "tokens",
            "in": "query",
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List User Bookmarks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGetUserRatingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_rating/rate": {
      "post": {
        "tags": [
          "User Ratings"
        ],
        "operationId": "set_user_rating_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetUserRatingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Set user rating",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetUserRatingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_rating/view/{entity_type}/{entity_token}": {
      "get": {
        "tags": [
          "User Ratings"
        ],
        "operationId": "get_user_rating_handler",
        "parameters": [
          {
            "name": "entity_type",
            "in": "path",
            "description": "The type of the entity being rated.",
            "required": true
          },
          {
            "name": "entity_token",
            "in": "path",
            "description": "Entity token",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "List User Bookmarks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserRatingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user_referral_codes/code/{token}": {
      "delete": {
        "tags": [
          "User Referral Codes"
        ],
        "summary": "Delete (soft-delete) a referral code owned by the logged-in user.",
        "operationId": "delete_referral_code_handler",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "description": "The referral code token to delete",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UserReferralCodeToken"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteReferralCodeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/user_referral_codes/create": {
      "post": {
        "tags": [
          "User Referral Codes"
        ],
        "summary": "Create a new referral code for the logged-in user.",
        "operationId": "create_referral_code_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReferralCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateReferralCodeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/user_referral_codes/list": {
      "get": {
        "tags": [
          "User Referral Codes"
        ],
        "summary": "List all active referral codes for the logged-in user.",
        "operationId": "list_referral_codes_handler",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListReferralCodesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/video/enqueue_vst": {
      "post": {
        "tags": [
          "Video Style Transfer"
        ],
        "summary": "DEPRECATED. Use /v1/workflows/enqueue_studio or /v1/workflows/enqueue_vst",
        "operationId": "enqueue_video_style_transfer_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EnqueueVideoStyleTransferRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnqueueVideoStyleTransferRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueVideoStyleTransferSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/video_info/notes": {
      "post": {
        "tags": [
          "Video Info"
        ],
        "summary": "Create or update a note about an uploaded video.",
        "operationId": "video_info_notes_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VideoInfoNoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Note created or updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoInfoNoteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/video_info/read_only": {
      "post": {
        "tags": [
          "Video Info"
        ],
        "summary": "Detect the AI-generation provenance of an uploaded video.",
        "operationId": "video_info_read_info_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Multipart form with a single `file` video upload.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/VideoInfoReadOnlyForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Detected provenance (or `unrecognized`)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoInfoReadOnlyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/video_info/upload": {
      "post": {
        "tags": [
          "Video Info"
        ],
        "summary": "Detect a video's AI-generation provenance and persist the result.",
        "operationId": "video_info_upload_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Multipart form with a single `file` video upload.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/VideoInfoUploadForm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Detected provenance + persisted token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VideoInfoUploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/web_referrals/record": {
      "post": {
        "tags": [
          "Web Referrals"
        ],
        "summary": "Record a web referral for analytics tracking.",
        "operationId": "log_web_referral_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogWebReferralRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogWebReferralResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/v1/weights/by_user/{username}": {
      "get": {
        "tags": [
          "Model Weights"
        ],
        "operationId": "list_weights_by_user_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ListWeightsByUserPathInfo"
            }
          },
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "page_index",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "maybe_scoped_weight_type",
            "in": "query",
            "description": "Optional. Scope to only the exact weight type.\nShouldn't be used with weight category scoping",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/WeightsType"
                }
              ]
            }
          },
          {
            "name": "maybe_scoped_weight_category",
            "in": "query",
            "description": "Optional. Scope to only the exact weight category, which may include\nmultiple types of model (eg voice_conversion includes RVC, SVC, etc.)\nShouldn't be used with weight type scoping",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/WeightsCategory"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Weights by user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWeightsByUserSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/weights/list": {
      "get": {
        "tags": [
          "Model Weights"
        ],
        "operationId": "list_available_weights_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ListAvailableWeightsQuery"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Weights",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAvailableWeightsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWeightError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListWeightError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/weights/list_featured": {
      "get": {
        "tags": [
          "Model Weights"
        ],
        "summary": "RETIRED: featured model weights are shut down.",
        "description": "Always returns an empty result list (no database access) for the legacy\nclients that still call this endpoint.",
        "operationId": "list_featured_weights_handler",
        "parameters": [
          {
            "name": "sort_ascending",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "cursor_is_reversed",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "filter_weights_categories",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `WeightsCategory`,\nwhich are the broad classes of model: text_to_speech, voice_conversion,\nimage_generation, etc.\n\nUsage:\n  - `?filter_weights_categories=text_to_speech`\n  - `?filter_weights_categories=text_to_speech,voice_conversion`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "filter_weights_types",
            "in": "query",
            "description": "NB: This can be one (or more comma-separated values) from `WeightsType`,\nwhich are the types of models.\n\nUsage:\n  - `?filter_weights_types=rvc_v2`\n  - `?filter_weights_types=tt2,rvc_v2,vall_e`\n  - etc.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Weights",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFeaturedWeightsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFeaturedWeightsError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListFeaturedWeightsError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/weights/list_pinned": {
      "get": {
        "tags": [
          "Model Weights"
        ],
        "summary": "List weights that were pinned by the moderators.",
        "operationId": "list_pinned_weights_handler",
        "responses": {
          "200": {
            "description": "List Weights",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPinnedWeightsSuccessResponse"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPinnedWeightsError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPinnedWeightsError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/weights/search": {
      "get": {
        "tags": [
          "Model Weights"
        ],
        "summary": "Search model weights (HTTP GET)",
        "operationId": "search_model_weights_http_get_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SearchModelWeightsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful search",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchModelWeightsSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchModelWeightsError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Model Weights"
        ],
        "summary": "DEPRECATED. Use the HTTP GET version of this endpoint instead",
        "operationId": "search_model_weights_http_post_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SearchModelWeightsRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchModelWeightsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful search",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchModelWeightsSuccessResponse"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchModelWeightsError"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/weights/weight/{weight_token}": {
      "get": {
        "tags": [
          "Model Weights"
        ],
        "operationId": "get_weight_handler",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/GetWeightPathInfo"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWeightResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Model Weights"
        ],
        "summary": "Handle updates to model weight metadata (using sparse field updates!)",
        "operationId": "update_weight_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateWeightRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UpdateWeightPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWeightRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Model Weights"
        ],
        "operationId": "delete_weight_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DeleteWeightRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DeleteWeightPathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteWeightRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success Delete",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleGenericJsonSuccess"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/weights/weight/{weight_token}/cover_image": {
      "post": {
        "tags": [
          "Model Weights"
        ],
        "operationId": "set_model_weight_cover_image_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SetModelWeightCoverImageRequest"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "Path for Request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SetModelWeightCoverImagePathInfo"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetModelWeightCoverImageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success Update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetModelWeightCoverImageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflows/enqueue_face_mirror": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Enqueue \"face mirror\" (Live Portrait) video workflows.",
        "description": "We've renamed this as to not give away what we're doing to users.",
        "operationId": "enqueue_live_portrait_workflow_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EnqueueLivePortraitWorkflowRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnqueueLivePortraitWorkflowRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueLivePortraitWorkflowSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflows/enqueue_lipsync": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Enqueue \"lipsync\" (Face Fusion) video workflows.",
        "description": "We've renamed this as to not give away what we're doing to users.",
        "operationId": "enqueue_face_fusion_workflow_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/EnqueueFaceFusionWorkflowRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnqueueFaceFusionWorkflowRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnqueueFaceFusionWorkflowSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonWebError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflows/enqueue_studio": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Enqueue Storyteller Studio video workflows.",
        "operationId": "enqueue_studio_workflow_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/VstRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VstRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflows/enqueue_vst": {
      "post": {
        "tags": [
          "Workflows"
        ],
        "summary": "Enqueue video style transfer video workflows.",
        "operationId": "enqueue_video_style_transfer_workflow_handler",
        "parameters": [
          {
            "name": "request",
            "in": "path",
            "description": "Payload for request",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/VstRequest"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VstRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstSuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          },
          "401": {
            "description": "Not authorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          },
          "500": {
            "description": "Server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VstError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddMediaFileTagsPathInfo": {
        "type": "object",
        "required": [
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "AddMediaFileTagsRequest": {
        "type": "object",
        "description": "Exactly one of `maybe_tags` / `maybe_tags_list` must be set (400 if\nboth or neither). Tag text is trimmed and deduped case-insensitively;\nempty entries are dropped. Must sanitize to at least one tag (400\notherwise).",
        "properties": {
          "maybe_tags": {
            "type": [
              "string",
              "null"
            ],
            "description": "Comma-separated tags, e.g. `\"cats, Sci-Fi, wallpaper\"`."
          },
          "maybe_tags_list": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Tags as a list. Entries are still trimmed."
          }
        }
      },
      "AddMediaFileTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "tags"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            },
            "description": "The tags from this request after upsert, with canonical tokens and\nfresh use counts. Tags already on the file are absorbed (no error)."
          }
        }
      },
      "AllImpersonationRequestResponse": {
        "type": "object",
        "required": [
          "impersonator_user_token",
          "impersonator_username",
          "impersonator_display_name",
          "impersonated_user_token",
          "impersonated_username",
          "impersonated_display_name",
          "is_redeemed",
          "is_expired",
          "expires_at",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "impersonated_display_name": {
            "type": "string"
          },
          "impersonated_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "impersonated_username": {
            "type": "string"
          },
          "impersonator_display_name": {
            "type": "string"
          },
          "impersonator_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "impersonator_username": {
            "type": "string"
          },
          "is_expired": {
            "type": "boolean"
          },
          "is_redeemed": {
            "type": "boolean"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApiKeyInfo": {
        "type": "object",
        "description": "Canonical wire shape for an API key, used by the list rows and the\nsingle-key GET.\n\nNB: the full secret `api_key` is NEVER included here — only\n`truncated_api_key` (its first 20 characters), enough to disambiguate keys\nin a UI. The full value is returned exactly once, at creation time.",
        "required": [
          "token",
          "truncated_api_key",
          "name",
          "owner_user_token",
          "ip_address_creation",
          "ip_address_update",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "ip_address_creation": {
            "type": "string"
          },
          "ip_address_update": {
            "type": "string"
          },
          "maybe_deleted_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Soft-delete timestamp. `None` for live keys."
          },
          "maybe_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "owner_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "token": {
            "$ref": "#/components/schemas/ApiKeyToken"
          },
          "truncated_api_key": {
            "type": "string",
            "description": "First 20 characters of the API key. The full secret is never returned\nafter creation."
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ApiKeyPathInfo": {
        "type": "object",
        "description": "Path info for endpoints addressed by the API key's `token` (NOT the secret\n`api_key` value): `GET` / `DELETE` / `PUT` `/v1/api_keys/{api_key_token}`.",
        "required": [
          "api_key_token"
        ],
        "properties": {
          "api_key_token": {
            "$ref": "#/components/schemas/ApiKeyToken"
          }
        }
      },
      "ApiKeyToken": {
        "type": "string",
        "description": "The primary key for api_keys."
      },
      "AppSessionToken": {
        "type": "string",
        "description": "The primary key for users."
      },
      "AppStateError": {
        "type": "string",
        "enum": [
          "ServerError"
        ]
      },
      "AppStateLegacyPermissionFlags": {
        "type": "object",
        "required": [
          "can_use_tts",
          "can_use_w2l",
          "can_delete_own_tts_results",
          "can_delete_own_w2l_results",
          "can_delete_own_account",
          "can_upload_tts_models",
          "can_upload_w2l_templates",
          "can_delete_own_tts_models",
          "can_delete_own_w2l_templates",
          "can_approve_w2l_templates",
          "can_edit_other_users_profiles",
          "can_edit_other_users_tts_models",
          "can_edit_other_users_w2l_templates",
          "can_delete_other_users_tts_models",
          "can_delete_other_users_tts_results",
          "can_delete_other_users_w2l_templates",
          "can_delete_other_users_w2l_results",
          "can_ban_users",
          "can_delete_users"
        ],
        "properties": {
          "can_approve_w2l_templates": {
            "type": "boolean"
          },
          "can_ban_users": {
            "type": "boolean"
          },
          "can_delete_other_users_tts_models": {
            "type": "boolean"
          },
          "can_delete_other_users_tts_results": {
            "type": "boolean"
          },
          "can_delete_other_users_w2l_results": {
            "type": "boolean"
          },
          "can_delete_other_users_w2l_templates": {
            "type": "boolean"
          },
          "can_delete_own_account": {
            "type": "boolean"
          },
          "can_delete_own_tts_models": {
            "type": "boolean"
          },
          "can_delete_own_tts_results": {
            "type": "boolean"
          },
          "can_delete_own_w2l_results": {
            "type": "boolean"
          },
          "can_delete_own_w2l_templates": {
            "type": "boolean"
          },
          "can_delete_users": {
            "type": "boolean"
          },
          "can_edit_other_users_profiles": {
            "type": "boolean"
          },
          "can_edit_other_users_tts_models": {
            "type": "boolean"
          },
          "can_edit_other_users_w2l_templates": {
            "type": "boolean"
          },
          "can_upload_tts_models": {
            "type": "boolean"
          },
          "can_upload_w2l_templates": {
            "type": "boolean"
          },
          "can_use_tts": {
            "type": "boolean"
          },
          "can_use_w2l": {
            "type": "boolean"
          }
        }
      },
      "AppStatePermissions": {
        "type": "object",
        "required": [
          "is_moderator",
          "feature_flags",
          "legacy_permission_flags"
        ],
        "properties": {
          "feature_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserFeatureFlag"
            },
            "description": "Collection of feature / rollout flags\nThis is the proper place to detect if a user has access to some rollout (non-paywall) feature.\nNB: The BTreeSet maintains order so React doesn't introduce re-render state bugs when order changes",
            "uniqueItems": true
          },
          "is_moderator": {
            "type": "boolean",
            "description": "Moderation flag.\nUse this to determine if an account can act on other accounts."
          },
          "legacy_permission_flags": {
            "$ref": "#/components/schemas/AppStateLegacyPermissionFlags",
            "description": "Legacy feature flags. Do not use."
          }
        }
      },
      "AppStatePremiumInfo": {
        "type": "object",
        "required": [
          "has_premium",
          "has_free_premium",
          "has_paid_premium",
          "active_subscriptions"
        ],
        "properties": {
          "active_subscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppStateSubscriptionProductKey"
            },
            "description": "Information on any subscriptions the user has."
          },
          "has_free_premium": {
            "type": "boolean",
            "description": "If the user has free premium perks.\nThis is from free loyalty program perks."
          },
          "has_paid_premium": {
            "type": "boolean",
            "description": "If the user has paid for a premium subscription, this will\nbe true. Loyalty perks are not considered paid."
          },
          "has_premium": {
            "type": "boolean",
            "description": "If the user has premium perks. This can be the result of\nhaving *either* a loyalty perk or a paid subscription."
          },
          "maybe_loyalty_program": {
            "type": [
              "string",
              "null"
            ],
            "description": "If the user is in a loyalty tier, we'll return something here.\nUsers that contribute models can get extra perks for free."
          }
        }
      },
      "AppStateResponse": {
        "type": "object",
        "required": [
          "success",
          "refresh_interval_millis",
          "server_info",
          "locale",
          "is_logged_in",
          "is_banned",
          "permissions"
        ],
        "properties": {
          "is_banned": {
            "type": "boolean",
            "description": "Whether the user is banned (even logged-out users can be IP banned.)"
          },
          "is_logged_in": {
            "type": "boolean",
            "description": "Whether the user is logged in."
          },
          "locale": {
            "$ref": "#/components/schemas/AppStateUserLocale",
            "description": "Information on user locale (language codes, etc.)"
          },
          "maybe_alert": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AppStateStatusAlertInfo",
                "description": "If there's an alert about the status of the app, this will be set.\nThe sub keys are optional, but at least one of them will be set.\ni.e. we can have an alert with no message or no predefined category."
              }
            ]
          },
          "maybe_premium": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AppStatePremiumInfo",
                "description": "Contains details oof the user's premium subscription status."
              }
            ]
          },
          "maybe_user_info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AppStateUserInfo",
                "description": "If the user is logged into an account with a valid session, this will\ncontain the user's account info."
              }
            ]
          },
          "permissions": {
            "$ref": "#/components/schemas/AppStatePermissions",
            "description": "Information on user permissions."
          },
          "refresh_interval_millis": {
            "type": "integer",
            "description": "Tell the frontend client how fast to refresh their view of this state.\nDuring an attack or outage, we may want this to go extremely slow.\n\nRegardless of this value, the client should preemptively refresh if the\nuser logs in, logs out, creates an account, or subscribes to a premium plan,\nas those changes will impact some of the underlying state returned by this\nendpoint.",
            "minimum": 0
          },
          "server_info": {
            "$ref": "#/components/schemas/AppStateServerInfo",
            "description": "Information about the HTTP app server."
          },
          "success": {
            "type": "boolean",
            "description": "All endpoints return `success = true` on 200."
          }
        }
      },
      "AppStateServerInfo": {
        "type": "object",
        "required": [
          "build_sha",
          "build_sha_short",
          "hostname"
        ],
        "properties": {
          "build_sha": {
            "type": "string",
            "description": "The GIT SHA of the server build."
          },
          "build_sha_short": {
            "type": "string",
            "description": "The GIT SHA of the server build (short)."
          },
          "hostname": {
            "type": "string",
            "description": "The hostname of the server (that returned this response)."
          }
        }
      },
      "AppStateStatusAlertCategory": {
        "type": "string",
        "enum": [
          "down_for_maintenance"
        ]
      },
      "AppStateStatusAlertInfo": {
        "type": "object",
        "properties": {
          "maybe_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AppStateStatusAlertCategory",
                "description": "If an alert is set, this might be a key for a common i18n message to show."
              }
            ]
          },
          "maybe_message": {
            "type": [
              "string",
              "null"
            ],
            "description": "We can set an optional message to show to the frontend.\n\nThis field may or may not be set. If it's set, this is custom text that should\nbe displayed to the user. For example, we might tell the user when we'll be\nback online, etc. Both this field and `maybe_category` are optional.\n\nIf `maybe_category` is present, it should be a key for a predefined and\ninternationalized (i18n) message stored on the frontend.\n\nEither or both of these fields may be set."
          }
        }
      },
      "AppStateSubscriptionProductKey": {
        "type": "object",
        "required": [
          "namespace",
          "product_slug"
        ],
        "properties": {
          "namespace": {
            "type": "string",
            "description": "This should always be \"fakeyou\"."
          },
          "product_slug": {
            "type": "string",
            "description": "Possible values: fakeyou_plus, fakeyou_pro, fakeyou_elite, etc."
          }
        }
      },
      "AppStateUserInfo": {
        "type": "object",
        "description": "Information on the logged-in user's account.\n(This is a copy of the `UserDetailsLight` struct.)",
        "required": [
          "user_token",
          "username",
          "display_name",
          "gravatar_hash",
          "default_avatar"
        ],
        "properties": {
          "default_avatar": {
            "$ref": "#/components/schemas/UserDefaultAvatarInfo",
            "description": "For users without a gravatar, we show one of our own avatars."
          },
          "display_name": {
            "type": "string",
            "description": "As of 2023-08-23, this is the username with capitalization\n(In the future, a display name can be customized by the user.)"
          },
          "gravatar_hash": {
            "type": "string",
            "description": "Email hash for Gravatar\nAlways set for now since login is email/username+password.\nIn the future this will need to become an optional *OR* be filled with a bogus hash."
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken",
            "description": "The token for the user"
          },
          "username": {
            "type": "string",
            "description": "The unique username someone logs in with\nAs of 2023-08-23, this is always lowercase"
          }
        }
      },
      "AppStateUserLocale": {
        "type": "object",
        "required": [
          "full_language_tags",
          "language_codes"
        ],
        "properties": {
          "full_language_tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Full BCP47 language tags"
          },
          "language_codes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Parsed out languages"
          }
        }
      },
      "AutoProductCategory": {
        "type": "string",
        "description": "AutoProductCategory can be used in APIs to auto-expand to multiple product categories,\ndeprecated product categories, etc.\n\nFor example, \"voice\" expands to [\"tts\", \"zs_voice\", \"voice_conversion\"]\n\nThese can also alias bad product names, eg \"live_portrait\" is an alias for \"face_mirror\"",
        "enum": [
          "voice",
          "lipsync",
          "live_portrait",
          "face_animator",
          "face_mirror",
          "vst",
          "studio",
          "tts",
          "voice_conversion",
          "zs_voice",
          "mocap",
          "image_gen",
          "video_filter",
          "workflow"
        ]
      },
      "BatchGeneratedReduxMediaFileInfo": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Created timestamp"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility",
            "description": "File visibility."
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If the file was generated as part of a batch, this is the token for the batch."
              }
            ]
          },
          "maybe_creator_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "User info."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ],
            "description": "The original filename for uploaded files, if they were provided.\nIn the future we'll provide our own internal optional filenames."
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "The foreign key to the prompt used to generate the media, if applicable."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (e.g. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Primary key identifier"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Updated timestamp"
          }
        }
      },
      "BatchGenerationToken": {
        "type": "string",
        "description": "The primary key for Audit Logs."
      },
      "BatchGetInferenceJobStatusQueryParams": {
        "type": "object",
        "required": [
          "tokens"
        ],
        "properties": {
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "uniqueItems": true
          }
        }
      },
      "BatchGetInferenceJobStatusSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "job_states"
        ],
        "properties": {
          "job_states": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchInferenceJobStatusResponsePayload"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchGetMediaFilesModelInfo": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "title"
        ],
        "properties": {
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset."
          },
          "maybe_weight_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "NB: Technically this shouldn't be a nullable field, but since there are so many\njoins we'll relax that this must exist (for now)."
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "BatchGetMediaFilesQueryParams": {
        "type": "object",
        "required": [
          "tokens"
        ],
        "properties": {
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "uniqueItems": true
          }
        }
      },
      "BatchGetMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchMediaFileInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchGetPromptsQuery": {
        "type": "object",
        "required": [
          "tokens"
        ],
        "properties": {
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Prompt tokens to look up.",
            "uniqueItems": true
          }
        }
      },
      "BatchGetPromptsResponse": {
        "type": "object",
        "required": [
          "success",
          "prompts"
        ],
        "properties": {
          "prompts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchPromptInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchGetUserBookmarksError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          }
        ]
      },
      "BatchGetUserBookmarksQueryParams": {
        "type": "object",
        "required": [
          "tokens"
        ],
        "properties": {
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "uniqueItems": true
          }
        }
      },
      "BatchGetUserBookmarksResponse": {
        "type": "object",
        "required": [
          "success",
          "bookmarks"
        ],
        "properties": {
          "bookmarks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BookmarkRow"
            },
            "description": "Ratings on each item passed to us."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchGetUserRatingQueryParams": {
        "type": "object",
        "required": [
          "tokens"
        ],
        "properties": {
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A grab bag of tokens of various types.\nTechnically we should pair with token types, as that's the unique index.\nBut since each token family generally has its own prefix, this should be fine.\n\nNB: We're using actix_web_lab's Query<T>, because the default actix_web Query<T> doesn't support URL\ndecoding sequences yet.\nSee https://github.com/actix/actix-web/issues/1301\n",
            "uniqueItems": true
          }
        }
      },
      "BatchGetUserRatingResponse": {
        "type": "object",
        "required": [
          "success",
          "ratings"
        ],
        "properties": {
          "ratings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RatingRow"
            },
            "description": "Ratings on each item passed to us."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BatchInferenceJobStatusResponsePayload": {
        "type": "object",
        "required": [
          "job_token",
          "request",
          "status",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "maybe_result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchResultDetailsResponse"
              }
            ]
          },
          "request": {
            "$ref": "#/components/schemas/BatchRequestDetailsResponse"
          },
          "status": {
            "$ref": "#/components/schemas/BatchStatusDetailsResponse"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BatchMediaFileInfo": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "is_intermediate_system_file",
          "is_emulated_media_file",
          "stats",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_emulated_media_file": {
            "type": "boolean",
            "description": "We can simulate media files for \"tts_results\" records.\nIf this is set as true, this informs the frontend and API callers not to treat\nthe token as a media file and improperly assume it can be used with the rest of\nthe media file APIs."
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If the file was generated as part of a batch, this is the token for the batch."
              }
            ]
          },
          "maybe_creator_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "User info"
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_engine_extension": {
            "type": [
              "string",
              "null"
            ],
            "description": "Extension for the engine to load over remote:// URLs.",
            "deprecated": true
          },
          "maybe_live_portrait_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileLivePortraitDetails",
                "description": "OPTIONAL. Details on live portrait generated media files,\nif this is a live portrait generated file."
              }
            ]
          },
          "maybe_model_weight_info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGetMediaFilesModelInfo",
                "description": "Possible model info (if generated by inference)"
              }
            ]
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ],
            "description": "The original filename for uploaded files, if they were provided.\nIn the future we'll provide our own internal optional filenames."
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "The foreign key to the prompt used to generate the media, if applicable."
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BatchPromptInfo": {
        "type": "object",
        "required": [
          "token",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "maybe_aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "OPTIONAL. The aspect ratio (eg. square, auto, wide_three_by_two, etc.)"
              }
            ]
          },
          "maybe_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "OPTIONAL. The number of outputs to generate (0-255).",
            "minimum": 0
          },
          "maybe_bitrate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonBitrate",
                "description": "OPTIONAL. The output bitrate (eg. normal, high)."
              }
            ]
          },
          "maybe_context_images": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/GetPromptImageContextItem"
            },
            "description": "Context images (optional)"
          },
          "maybe_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "OPTIONAL. The duration in seconds.",
            "minimum": 0
          },
          "maybe_generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "OPTIONAL. Whether to generate audio."
          },
          "maybe_generation_mode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonGenerationMode",
                "description": "OPTIONAL. The generation mode (eg. keyframe, reference, inpaint, etc.)"
              }
            ]
          },
          "maybe_generation_provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerationProvider",
                "description": "The service provider used"
              }
            ]
          },
          "maybe_model_class": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonModelClass",
                "description": "The class of model used"
              }
            ]
          },
          "maybe_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonModelType",
                "description": "The type of model used"
              }
            ]
          },
          "maybe_negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Negative prompt (optional)"
          },
          "maybe_positive_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Positive prompt (technically optional, but usually present)"
          },
          "maybe_resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "OPTIONAL. The resolution (eg. one_k, two_k, four_k, etc.)"
              }
            ]
          },
          "token": {
            "$ref": "#/components/schemas/PromptToken"
          }
        }
      },
      "BatchRequestDetailsResponse": {
        "type": "object",
        "description": "Details about what the user requested for generation",
        "required": [
          "inference_category"
        ],
        "properties": {
          "inference_category": {
            "$ref": "#/components/schemas/InferenceCategory"
          },
          "maybe_lipsync_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JobDetailsLipsyncRequest",
                "description": "OPTIONAL. For lipsync jobs (face fusion and sad talker), this is additional\ninformation on the request."
              }
            ]
          },
          "maybe_live_portrait_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JobDetailsLivePortraitRequest",
                "description": "OPTIONAL. For Live Portrait jobs, this is additional information on the request."
              }
            ]
          },
          "maybe_model_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. Title of the model, if it has one"
          },
          "maybe_model_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken"
              }
            ]
          },
          "maybe_raw_inference_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. If the result was TTS, this is the raw inference text."
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "OPTIONAL. For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          }
        }
      },
      "BatchResultDetailsResponse": {
        "type": "object",
        "description": "Details about the completed result (if any)",
        "required": [
          "entity_type",
          "entity_token",
          "media_links"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "type": "string"
          },
          "maybe_public_bucket_media_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "maybe_successfully_completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          }
        }
      },
      "BatchStatusDetailsResponse": {
        "type": "object",
        "description": "Details about the ongoing job status",
        "required": [
          "status",
          "attempt_count",
          "requires_keepalive",
          "progress_percentage"
        ],
        "properties": {
          "attempt_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "maybe_assigned_cluster": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_assigned_worker": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_extra_status_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Extra, temporary status from Redis.\nThis can denote inference progress, and the Python code can write to it."
          },
          "maybe_failure_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FrontendFailureCategory",
                "description": "An enum the frontend can use to display localized/I18N error\nmessages. These pertain to both transient and permanent failures."
              }
            ]
          },
          "maybe_first_started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "progress_percentage": {
            "type": "integer",
            "format": "int32",
            "description": "This is an integer number between 0 and 100 (both inclusive) that\nreports the completeness.",
            "minimum": 0
          },
          "requires_keepalive": {
            "type": "boolean",
            "description": "Whether the frontend needs to maintain a keepalive check.\nThis is typically only for non-premium users."
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusPlus",
            "description": "Primary status from the database (a state machine)."
          }
        }
      },
      "BeebleSwitchXEditVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "prompt": {
            "type": [
              "string",
              "null"
            ]
          },
          "reference_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken"
              }
            ]
          },
          "source_video_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string"
          }
        }
      },
      "BeebleSwitchXEditVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BetaKeyItem": {
        "type": "object",
        "required": [
          "token",
          "product",
          "key_value",
          "creator",
          "is_distributed",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "When the key was created."
          },
          "creator": {
            "$ref": "#/components/schemas/UserDetailsLight",
            "description": "The user that created the key."
          },
          "is_distributed": {
            "type": "boolean",
            "description": "Denotes whether we handed this key out. A reminder not to re-share."
          },
          "key_value": {
            "type": "string",
            "description": "The key that the user will input to unlock the product."
          },
          "maybe_note": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional note about the key. Can be used to describe why it was created or who it was given to."
          },
          "maybe_note_html": {
            "type": [
              "string",
              "null"
            ],
            "description": "The note, with markdown parsed to html."
          },
          "maybe_redeemed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the key was redeemed (the key will no longer be usable once redeemed)"
          },
          "maybe_redeemer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "The user that redeemed the key on their account."
              }
            ]
          },
          "maybe_referrer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "The user that will be in charge of distributing the key. (Gamification!)"
              }
            ]
          },
          "product": {
            "$ref": "#/components/schemas/BetaKeyProduct",
            "description": "The product the key unlocks."
          },
          "token": {
            "$ref": "#/components/schemas/BetaKeyToken",
            "description": "The primary key. Internal use."
          }
        }
      },
      "BetaKeyProduct": {
        "type": "string",
        "description": "Used in the `batch_generations` table in a `VARCHAR(32)` field named `entity_type`.",
        "enum": [
          "studio"
        ]
      },
      "BetaKeyToken": {
        "type": "string",
        "description": "The primary key for Audit Logs."
      },
      "BookmarkRow": {
        "type": "object",
        "required": [
          "entity_token",
          "entity_type",
          "is_bookmarked"
        ],
        "properties": {
          "entity_token": {
            "type": "string",
            "description": "The passed token"
          },
          "entity_type": {
            "$ref": "#/components/schemas/UserBookmarkEntityType",
            "description": "The type of entity"
          },
          "is_bookmarked": {
            "type": "boolean",
            "description": "Whether the entity is bookmarked or not"
          },
          "maybe_bookmark_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserBookmarkToken",
                "description": "If the object is bookmarked, this is the bookmark token (used to delete the bookmark).\nSince we soft-delete bookmarks, we go to the extra step of clearing out this field if\nthe bookmark is soft deleted, even though it still has a record with token on the\nbackend."
              }
            ]
          }
        }
      },
      "BrowserSessionLogToken": {
        "type": "string",
        "description": "The primary key for Audit Logs."
      },
      "BulkAddFolderMediaFilesRequest": {
        "type": "object",
        "required": [
          "media_file_tokens"
        ],
        "properties": {
          "media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Media files to add to the folder. Tokens that don't exist or are\nsoft-deleted are silently skipped. Already-added rows are no-ops\n(idempotent via INSERT IGNORE on the composite primary key)."
          }
        }
      },
      "BulkAddFolderMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "accepted_media_file_tokens"
        ],
        "properties": {
          "accepted_media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Tokens that pre-existed (existed + not deleted). Already-added rows\nare included since the operation is idempotent."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkAddSubfoldersRequest": {
        "type": "object",
        "required": [
          "subfolder_tokens"
        ],
        "properties": {
          "subfolder_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderToken"
            },
            "description": "The folders to reparent under the URL `folder_token`. Tokens that\ndon't exist, aren't owned by the caller, are soft-deleted, or are\nthe parent itself are silently skipped (idempotent)."
          }
        }
      },
      "BulkAddSubfoldersSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "accepted_subfolder_tokens"
        ],
        "properties": {
          "accepted_subfolder_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderToken"
            },
            "description": "Tokens that were actually accepted (existed + owned + not deleted +\nnot the parent itself). Already-parented tokens are included here\nsince the operation is idempotent."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkAddTagsRequest": {
        "type": "object",
        "description": "Exactly one of `maybe_tags` / `maybe_tags_list` must be set (400 if\nboth or neither). Tag text is trimmed and deduped case-insensitively;\nempty entries are dropped. Must sanitize to at least one tag (400\notherwise). Media file tokens are deduped; tokens the user doesn't\nown (or that are deleted) are silently skipped.",
        "required": [
          "media_file_tokens"
        ],
        "properties": {
          "maybe_tags": {
            "type": [
              "string",
              "null"
            ],
            "description": "Comma-separated tags, e.g. `\"cats, Sci-Fi, wallpaper\"`."
          },
          "maybe_tags_list": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Tags as a list. Entries are still trimmed."
          },
          "media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Media files to tag."
          }
        }
      },
      "BulkAddTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "accepted_media_file_tokens",
          "tags"
        ],
        "properties": {
          "accepted_media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "The subset of the input tokens that were actually tagged: files\nthat exist, aren't deleted, and are owned by the caller."
          },
          "success": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            },
            "description": "The tags from this request after upsert, with canonical tokens and\nfresh use counts."
          }
        }
      },
      "BulkListMediaFileTagsRequest": {
        "type": "object",
        "required": [
          "media_file_tokens"
        ],
        "properties": {
          "media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Media files to look up. Tokens with no tags come back with an\nempty `tags` list."
          }
        }
      },
      "BulkListMediaFileTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileTagsEntry"
            },
            "description": "One entry per requested media file token (deduped), in request order."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkMoveFolderMediaFilesRequest": {
        "type": "object",
        "description": "Atomically move the listed media files from `source_folder` to the\nURL `folder_token` (destination). Idempotent on both sides: tokens\nthat aren't currently in the source are silently skipped, and tokens\nthat are already in the destination stay there.",
        "required": [
          "source_folder",
          "media_file_tokens"
        ],
        "properties": {
          "media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            }
          },
          "source_folder": {
            "$ref": "#/components/schemas/FolderToken"
          }
        }
      },
      "BulkMoveFolderMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "removed_from_source_count",
          "added_to_destination_count",
          "accepted_media_file_tokens"
        ],
        "properties": {
          "accepted_media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "The media file tokens that ended up resident in the destination\nfolder after the move — i.e. the subset of the input that actually\nreferred to live media files. Includes both newly-inserted rows and\nrows that were already there."
          },
          "added_to_destination_count": {
            "type": "integer",
            "format": "int64",
            "description": "Number of membership rows actually inserted into the destination\nfolder. May be lower than the input length because (a) tokens that\nwere already present in the destination don't insert, and (b)\ntokens whose media file doesn't exist / is soft-deleted are filtered\nout before the insert.",
            "minimum": 0
          },
          "removed_from_source_count": {
            "type": "integer",
            "format": "int64",
            "description": "Number of membership rows actually deleted from the source folder.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkRemoveFolderMediaFilesRequest": {
        "type": "object",
        "required": [
          "media_file_tokens"
        ],
        "properties": {
          "media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            }
          }
        }
      },
      "BulkRemoveFolderMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "removed_count"
        ],
        "properties": {
          "removed_count": {
            "type": "integer",
            "format": "int64",
            "description": "How many membership rows were actually hard-deleted.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkRemoveSubfoldersRequest": {
        "type": "object",
        "required": [
          "subfolder_tokens"
        ],
        "properties": {
          "subfolder_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderToken"
            },
            "description": "Folders to unparent. Only rows currently parented to the URL\n`folder_token` are affected; others are silently skipped."
          }
        }
      },
      "BulkRemoveSubfoldersSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "removed_count"
        ],
        "properties": {
          "removed_count": {
            "type": "integer",
            "format": "int64",
            "description": "How many rows were actually unparented.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BulkSetTagsRequest": {
        "type": "object",
        "description": "Exactly one of `maybe_tags` / `maybe_tags_list` must be set (400 if\nboth or neither). Tag text is trimmed and deduped case-insensitively;\nempty entries are dropped. Unlike `bulk_add`, sanitizing down to zero\ntags is allowed — it clears all tags from the listed media files.\nMedia file tokens are deduped; tokens the user doesn't own (or that\nare deleted) are silently skipped.",
        "required": [
          "media_file_tokens"
        ],
        "properties": {
          "maybe_tags": {
            "type": [
              "string",
              "null"
            ],
            "description": "Comma-separated tags, e.g. `\"cats, Sci-Fi, wallpaper\"`."
          },
          "maybe_tags_list": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Tags as a list. Entries are still trimmed."
          },
          "media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Media files whose tag sets will be replaced."
          }
        }
      },
      "BulkSetTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "accepted_media_file_tokens",
          "tags",
          "removed_count"
        ],
        "properties": {
          "accepted_media_file_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "The subset of the input tokens that were actually updated: files\nthat exist, aren't deleted, and are owned by the caller."
          },
          "removed_count": {
            "type": "integer",
            "format": "int64",
            "description": "How many previously-attached tag links were removed across all the\naccepted media files because they weren't mentioned in the request.\n(Orphaned tags are not deleted.)",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            },
            "description": "The full tag set now on every accepted media file, with canonical\ntokens and fresh use counts."
          }
        }
      },
      "ByQueueStats": {
        "type": "object",
        "required": [
          "pending_tacotron2_jobs",
          "pending_voice_designer",
          "pending_rvc_jobs",
          "pending_svc_jobs",
          "pending_stable_diffusion",
          "pending_face_animation_jobs",
          "pending_storyteller_studio",
          "pending_acting_face"
        ],
        "properties": {
          "pending_acting_face": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_face_animation_jobs": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_rvc_jobs": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_stable_diffusion": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_storyteller_studio": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_svc_jobs": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_tacotron2_jobs": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending_voice_designer": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "BytedanceSeedream5LiteMultiFunctionImageGenImageSize": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "portrait_four_three",
          "portrait_sixteen_nine",
          "landscape_four_three",
          "landscape_sixteen_nine",
          "auto2k",
          "auto3k"
        ]
      },
      "BytedanceSeedream5LiteMultiFunctionImageGenMaxImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "BytedanceSeedream5LiteMultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "BytedanceSeedream5LiteMultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context.\nIf present, we're doing image editing (image-to-image / image-editing)\nIf absent, we're doing image generation (text-to-image)"
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedream5LiteMultiFunctionImageGenImageSize"
              }
            ]
          },
          "max_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedream5LiteMultiFunctionImageGenMaxImages"
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedream5LiteMultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "BytedanceSeedream5LiteMultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BytedanceSeedreamV4MultiFunctionImageGenImageSize": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "portrait_four_three",
          "portrait_sixteen_nine",
          "landscape_four_three",
          "landscape_sixteen_nine",
          "auto",
          "auto2k",
          "auto4k"
        ]
      },
      "BytedanceSeedreamV4MultiFunctionImageGenMaxImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "BytedanceSeedreamV4MultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "BytedanceSeedreamV4MultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context.\nIf present, we're doing image editing (image-to-image / image-editing)\nIf absent, we're doing image generation (text-to-image)"
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedreamV4MultiFunctionImageGenImageSize"
              }
            ]
          },
          "max_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedreamV4MultiFunctionImageGenMaxImages"
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedreamV4MultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "BytedanceSeedreamV4MultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "BytedanceSeedreamV4p5MultiFunctionImageGenImageSize": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "portrait_four_three",
          "portrait_sixteen_nine",
          "landscape_four_three",
          "landscape_sixteen_nine",
          "auto2k",
          "auto4k"
        ]
      },
      "BytedanceSeedreamV4p5MultiFunctionImageGenMaxImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "BytedanceSeedreamV4p5MultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "BytedanceSeedreamV4p5MultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context.\nIf present, we're doing image editing (image-to-image / image-editing)\nIf absent, we're doing image generation (text-to-image)"
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedreamV4p5MultiFunctionImageGenImageSize"
              }
            ]
          },
          "max_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedreamV4p5MultiFunctionImageGenMaxImages"
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BytedanceSeedreamV4p5MultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "BytedanceSeedreamV4p5MultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ChangeMediaFileAnimationTypeRequest": {
        "type": "object",
        "properties": {
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "The new animation type for the media file.\nIt can be cleared to null, but only for characters."
              }
            ]
          }
        }
      },
      "ChangeMediaFileEngineCategoryRequest": {
        "type": "object",
        "required": [
          "engine_category"
        ],
        "properties": {
          "engine_category": {
            "$ref": "#/components/schemas/MediaFileEngineCategory"
          }
        }
      },
      "ChangeMediaFileVisibilityRequest": {
        "type": "object",
        "properties": {
          "creator_set_visibility": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ChangePasswordRequest": {
        "type": "object",
        "required": [
          "password",
          "password_confirmation"
        ],
        "properties": {
          "password": {
            "type": "string"
          },
          "password_confirmation": {
            "type": "string"
          }
        }
      },
      "ChangePasswordResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "CharacterToken": {
        "type": "string",
        "description": "The primary key for Characters"
      },
      "ClearMediaFileTagsPathInfo": {
        "type": "object",
        "required": [
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "ClearMediaFileTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "removed_count"
        ],
        "properties": {
          "removed_count": {
            "type": "integer",
            "format": "int64",
            "description": "How many tag links were removed from the media file. (Orphaned\ntags are not deleted.)",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Comment": {
        "type": "object",
        "required": [
          "token",
          "user",
          "comment_markdown",
          "comment_rendered_html",
          "created_at",
          "updated_at",
          "user_token",
          "username",
          "user_display_name",
          "user_gravatar_hash",
          "default_avatar_index",
          "default_avatar_color_index"
        ],
        "properties": {
          "comment_markdown": {
            "type": "string"
          },
          "comment_rendered_html": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "default_avatar_color_index": {
            "type": "integer",
            "format": "int32",
            "deprecated": true,
            "minimum": 0
          },
          "default_avatar_index": {
            "type": "integer",
            "format": "int32",
            "deprecated": true,
            "minimum": 0
          },
          "maybe_edited_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "token": {
            "$ref": "#/components/schemas/CommentToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "user_display_name": {
            "type": "string",
            "deprecated": true
          },
          "user_gravatar_hash": {
            "type": "string",
            "deprecated": true
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string",
            "deprecated": true
          }
        }
      },
      "CommentEntityType": {
        "type": "string",
        "description": "Used in the `comments` table in a `VARCHAR(32)` field named `entity_type`.",
        "enum": [
          "user",
          "media_file",
          "model_weight",
          "tts_model",
          "tts_result",
          "w2l_template",
          "w2l_result"
        ]
      },
      "CommentToken": {
        "type": "string",
        "description": "The primary key for Audit Logs."
      },
      "CommonAspectRatio": {
        "type": "string",
        "description": "Common aspect ratios for image and video generation.\n\nNB: Keep the max serialized length to 24 characters.",
        "enum": [
          "auto",
          "square",
          "wide_three_by_two",
          "wide_four_by_three",
          "wide_five_by_four",
          "wide_sixteen_by_nine",
          "wide_twenty_one_by_nine",
          "tall_two_by_three",
          "tall_three_by_four",
          "tall_four_by_five",
          "tall_nine_by_sixteen",
          "tall_nine_by_twenty_one",
          "wide",
          "tall",
          "auto_2k",
          "auto_3k",
          "auto_4k",
          "square_hd"
        ]
      },
      "CommonAudioModel": {
        "type": "string",
        "description": "Audio models available for generation.",
        "enum": [
          "suno_music",
          "suno_remix",
          "suno_sounds",
          "suno_sample",
          "seed_audio_1p0"
        ]
      },
      "CommonBitrate": {
        "type": "string",
        "description": "Common output bitrate levels for generation.\n\nMost models default to `Normal`; `High` requests a higher bitrate where the\nmodel supports it. Models that don't support it simply ignore the value.\n\nNB: Keep the max serialized length to 16 characters.",
        "enum": [
          "normal",
          "high"
        ]
      },
      "CommonGenerationMode": {
        "type": "string",
        "description": "The generation mode describes how the user wants to generate content.\n\nStored in the `prompts` table (`maybe_generation_mode` column).\n\nNB: Keep the max serialized length to 24 characters.",
        "enum": [
          "keyframe",
          "reference",
          "edit",
          "inpaint",
          "outpaint",
          "text"
        ]
      },
      "CommonImageModel": {
        "type": "string",
        "description": "Image models available for generation.\nMirrors artcraft_router::api::router_image_model::RouterImageModel.",
        "enum": [
          "flux_1_dev",
          "flux_1_schnell",
          "flux_pro_1p1",
          "flux_pro_1p1_ultra",
          "gpt_image_1",
          "gpt_image_1p5",
          "gpt_image_2",
          "gpt_image_2p5_flare",
          "gpt_image_2p5_sunburst",
          "grok_imagine_image",
          "grok_imagine_image_q",
          "midjourney_7",
          "midjourney_7_niji",
          "midjourney_8",
          "nano_banana",
          "nano_banana_2",
          "nano_banana_pro",
          "seedream_4",
          "seedream_4p5",
          "seedream_5_lite",
          "seedream_5p0_pro",
          "seedream_5p0_pro_u",
          "qwen_edit_2511_angles",
          "flux_2_lora_angles"
        ]
      },
      "CommonMeshModel": {
        "type": "string",
        "description": "Mesh (3D object) models available for generation.",
        "enum": [
          "hunyuan_3d_2p0",
          "hunyuan_3d_2p1",
          "hunyuan_3d_3",
          "hunyuan_3d_3_sketch",
          "hunyuan_3d_3p1_pro",
          "hunyuan_3d_3p1_rapid",
          "hunyuan_3d_3p1_part",
          "hunyuan_3d_3p1_topology",
          "tripo3d_h3p1",
          "meshy_v6",
          "rodin_2p5_fast"
        ]
      },
      "CommonMeshOutputType": {
        "type": "string",
        "description": "Mesh output types for 3D object generation.",
        "enum": [
          "normal",
          "low_poly",
          "geometry"
        ]
      },
      "CommonMeshQuality": {
        "type": "string",
        "description": "Quality level for a mesh generation sub-feature (e.g. texture quality or\ngeometry quality). Some models charge extra for `Detailed`.",
        "enum": [
          "standard",
          "detailed"
        ]
      },
      "CommonModelClass": {
        "type": "string",
        "description": "The broad class of model (image, video, audio, 3D, etc.)\n\nNB: This is not currently stored in the database, so it does not need\n`impl_mysql_enum_coders!` or `impl_mysql_from_row!` macros. If it is\nstored in the future, add those macros and a migration.",
        "enum": [
          "image",
          "video",
          "audio",
          "audio_music",
          "audio_voice",
          "3d",
          "3d_mesh",
          "3d_splat"
        ]
      },
      "CommonModelType": {
        "type": "string",
        "description": "Common model type enum used across image, video, 3D, and splat generation.\nThis forms part of our core data model for generative models.\n\nThis is used in the MySQL database, the HTTP API, and throughout\nArtCraft (the Tauri app).\n\nStored in the `prompts` table (`maybe_model_type` column).\nAlso used by other tables and the sqlite tasks table.\n\nNB: This will be used by a variety of tables (MySQL and sqlite)!\nKeep the max length to 24 characters.",
        "enum": [
          "flux_1_dev",
          "flux_1_schnell",
          "flux_dev_juggernaut",
          "flux_pro_1",
          "flux_pro_1p1",
          "flux_pro_1p1_ultra",
          "flux_pro_kontext_max",
          "flux_2_lora_angles",
          "gpt_image_1",
          "gpt_image_1p5",
          "gpt_image_2",
          "gpt_image_2p5_flare",
          "gpt_image_2p5_sunburst",
          "grok_image",
          "grok_imagine_image",
          "grok_imagine_image_q",
          "recraft_3",
          "seededit_3",
          "qwen",
          "qwen_edit_2511_angles",
          "gemini_25_flash",
          "nano_banana",
          "nano_banana_2",
          "nano_banana_pro",
          "seedream_4",
          "seedream_4p5",
          "seedream_5_lite",
          "seedream_5p0_pro",
          "seedream_5p0_pro_u",
          "midjourney",
          "midjourney_v6",
          "midjourney_v6p1",
          "midjourney_v6p1_raw",
          "midjourney_v7",
          "midjourney_v7_draft",
          "midjourney_v7_draft_raw",
          "midjourney_v7_raw",
          "midjourney_7",
          "midjourney_7_niji",
          "midjourney_8",
          "grok_video",
          "grok_imagine_video",
          "grok_imagine_video_1p5",
          "flux_3",
          "flux_3_draft",
          "kling_1p6_pro",
          "kling_2p1_pro",
          "kling_2p1_master",
          "kling_2p5_turbo_pro",
          "kling_2p6_pro",
          "kling_3p0_standard",
          "kling_3p0_pro",
          "happy_horse_1p0",
          "minimax_h3",
          "minimax_h3_turbo",
          "minimax_h3_ultra",
          "seedance_1p0_lite",
          "seedance_1p0_pro",
          "seedance_1p5_pro",
          "seedance_2p0",
          "seedance_2p0_fast",
          "seedance_2p0_bp",
          "seedance_2p0_bp_fast",
          "seedance_2p0_u",
          "seedance_2p0_u_fast",
          "seedance_2p0_bpu",
          "seedance_2p0_bpu_fast",
          "seedance_2p0_mini",
          "seedance_2p0_bp_mini",
          "seedance_2p0_bpu_mini",
          "seedance_2p5_preview",
          "seedance_2p5",
          "seedance_2p5_u",
          "sora_2",
          "sora_2_pro",
          "veo_2",
          "veo_3",
          "veo_3_fast",
          "veo_3p1",
          "veo_3p1_fast",
          "veo_3p1_lite",
          "vidu_q3",
          "vidu_q3_turbo",
          "suno_music",
          "suno_remix",
          "suno_sounds",
          "suno_sample",
          "seed_audio_1p0",
          "preview_model",
          "preview_model_fast",
          "switch_x",
          "hunyuan_3d_2p0",
          "hunyuan_3d_2p1",
          "hunyuan_3d_3",
          "hunyuan_3d_3p1_pro",
          "hunyuan_3d_3p1_rapid",
          "hunyuan_3d_3p1_part",
          "hunyuan_3d_3p1_topology",
          "tripo3d_h3p1",
          "meshy_v6",
          "rodin_2p5_fast",
          "marble_0p1_mini",
          "marble_0p1_plus",
          "marble_1p0",
          "marble_1p0_draft",
          "marble_1p1",
          "marble_1p1_plus",
          "triposplat"
        ]
      },
      "CommonMusicalKey": {
        "type": "string",
        "description": "Musical keys available for audio generation (eg. Suno Sounds).\n\nNB: There are intentionally no E keys, per product spec.",
        "enum": [
          "auto",
          "c_major",
          "c_minor",
          "d_major",
          "d_minor",
          "f_major",
          "f_minor",
          "g_major",
          "g_minor",
          "a_major",
          "a_minor",
          "b_major",
          "b_minor"
        ]
      },
      "CommonPolygonType": {
        "type": "string",
        "description": "Polygon types for generated meshes.",
        "enum": [
          "triangle",
          "quad"
        ]
      },
      "CommonQuality": {
        "type": "string",
        "description": "Common quality levels for generation.\n\nNB: Keep the max serialized length to 16 characters.",
        "enum": [
          "high",
          "medium",
          "low"
        ]
      },
      "CommonResolution": {
        "type": "string",
        "description": "Common resolutions for generation.\n\nNB: Keep the max serialized length to 16 characters.",
        "enum": [
          "one_k",
          "two_k",
          "three_k",
          "four_k",
          "half_k",
          "four_eighty_p",
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "CommonSplatModel": {
        "type": "string",
        "description": "Splat models available for generation.",
        "enum": [
          "marble_0p1_mini",
          "marble_0p1_plus",
          "marble_1p0",
          "marble_1p0_draft",
          "marble_1p1",
          "marble_1p1_plus",
          "triposplat"
        ]
      },
      "CommonVideoModel": {
        "type": "string",
        "description": "Video models available for generation.\nMirrors artcraft_router::api::router_video_model::RouterVideoModel.",
        "enum": [
          "grok_video",
          "grok_imagine_video",
          "grok_imagine_video_1p5",
          "flux_3",
          "flux_3_draft",
          "kling_1p6_pro",
          "kling_2p1_pro",
          "kling_2p1_master",
          "kling_2p5_turbo_pro",
          "kling_2p6_pro",
          "kling_3p0_standard",
          "kling_3p0_pro",
          "happy_horse_1p0",
          "minimax_h3",
          "minimax_h3_turbo",
          "minimax_h3_ultra",
          "seedance_1p0_lite",
          "seedance_1p5_pro",
          "seedance_2p0",
          "seedance_2p0_fast",
          "seedance_2p0_bp",
          "seedance_2p0_bp_fast",
          "seedance_2p0_u",
          "seedance_2p0_u_fast",
          "seedance_2p0_bpu",
          "seedance_2p0_bpu_fast",
          "seedance_2p0_mini",
          "seedance_2p0_bp_mini",
          "seedance_2p0_bpu_mini",
          "seedance_2p5_preview",
          "seedance_2p5",
          "seedance_2p5_u",
          "sora_2",
          "sora_2_pro",
          "veo_2",
          "veo_3",
          "veo_3_fast",
          "veo_3p1",
          "veo_3p1_fast",
          "veo_3p1_lite",
          "vidu_q3",
          "vidu_q3_turbo",
          "preview_model",
          "preview_model_fast"
        ]
      },
      "CommonWebError": {
        "type": "object",
        "required": [
          "success",
          "error_code"
        ],
        "properties": {
          "error_code": {
            "type": "integer",
            "format": "int32"
          },
          "error_code_str": {
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "User-facing error message (present only for bad input errors)"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CoverImageLinks": {
        "type": "object",
        "description": "Cover image links can only be jpg, png, etc. No videos.",
        "required": [
          "cdn_url",
          "thumbnail_template"
        ],
        "properties": {
          "cdn_url": {
            "type": "string",
            "format": "uri",
            "description": "Primary link to the cover image via the CDN."
          },
          "thumbnail_template": {
            "type": "string",
            "description": "Template to construct thumbnail URLs.\nReplace the string `{WIDTH}` with the desired width.\nOnly relevant for image media files. (Video media files instead have\nvideo previews, which, in turn, have their own thumbnail templates.)"
          }
        }
      },
      "CreateAccountErrorResponse": {
        "type": "object",
        "required": [
          "success",
          "error_type",
          "error_fields"
        ],
        "properties": {
          "error_fields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "error_type": {
            "$ref": "#/components/schemas/CreateAccountErrorType"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateAccountErrorType": {
        "type": "string",
        "enum": [
          "BadRequest",
          "BadInput",
          "EmailTaken",
          "ServerError",
          "UsernameReserved",
          "UsernameTaken"
        ]
      },
      "CreateAccountRequest": {
        "type": "object",
        "required": [
          "username",
          "password",
          "password_confirmation",
          "email_address"
        ],
        "properties": {
          "email_address": {
            "type": "string"
          },
          "maybe_landing_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: The URL where the user landed when they first arrived, prior to navigation and signing up.\nThe browser can send `window.location.href` to the backend so we know how people are finding us."
          },
          "maybe_referral_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: A referral code created by another user. If present, takes priority over\n`maybe_referral_username` for resolving the referring user."
          },
          "maybe_referral_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: The referral URL the user arrived from when first hitting the site, prior to navigation and signing up.\nThe browser can send `document.referrer` to the backend so we know how people are finding us.\nIf the browser doesn't send this parameter, we'll try the `referer` header."
          },
          "maybe_referral_username": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: A referral username or code from a referring user."
          },
          "password": {
            "type": "string"
          },
          "password_confirmation": {
            "type": "string"
          },
          "signup_source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserSignupSource",
                "description": "Optional: Source of the signup, e.g. \"artcraft\", \"fakeyou\", \"storyteller\", etc.\nIf not provided, we try to infer it from the Origin header instead."
              }
            ]
          },
          "username": {
            "type": "string"
          }
        }
      },
      "CreateAccountSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "signed_session"
        ],
        "properties": {
          "signed_session": {
            "type": "string",
            "description": "A signed session that can be sent as a header, bypassing cookies.\nThis is useful for API clients that don't support cookies or Google\nbrowsers killing cross-domain cookies."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateApiKeyRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "maybe_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional description."
          },
          "name": {
            "type": "string",
            "description": "Display name (title) for the key."
          }
        }
      },
      "CreateApiKeySuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "api_key_token",
          "api_key"
        ],
        "properties": {
          "api_key": {
            "type": "string",
            "description": "The full secret API key value. This is the ONLY time it is ever\nreturned — the caller must store it now, as it cannot be retrieved again."
          },
          "api_key_token": {
            "$ref": "#/components/schemas/ApiKeyToken",
            "description": "The key's `token` — used for all subsequent management\n(get / update / delete). Safe to store and display."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateBetaKeysRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "number_of_keys"
        ],
        "properties": {
          "maybe_note": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note that will be assigned to each key, if present. This can be edited later."
          },
          "maybe_referrer_username": {
            "type": [
              "string",
              "null"
            ],
            "description": "The username these keys will be assigned to (as the \"referrer\" that hands out the keys)"
          },
          "number_of_keys": {
            "type": "integer",
            "format": "int32",
            "description": "The number of keys to generate. Between 1 and 100.",
            "minimum": 0
          },
          "uuid_idempotency_token": {
            "type": "string"
          }
        }
      },
      "CreateBetaKeysSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "beta_keys"
        ],
        "properties": {
          "beta_keys": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateCharacterRequest": {
        "type": "object",
        "description": "Request body for creating a character.",
        "required": [
          "uuid_idempotency_token",
          "model",
          "image_media_token",
          "character_name"
        ],
        "properties": {
          "character_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the character."
          },
          "character_name": {
            "type": "string",
            "description": "Name of the character."
          },
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The reference image media file token."
          },
          "model": {
            "$ref": "#/components/schemas/CommonModelType",
            "description": "The model to create the character for."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "CreateCharacterResponse": {
        "type": "object",
        "description": "Response body for creating a character.",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateCheckoutSessionError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadRequest"
            ],
            "properties": {
              "BadRequest": {
                "type": "object",
                "required": [
                  "reason"
                ],
                "properties": {
                  "reason": {
                    "type": "string"
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "InvalidSession"
            ]
          },
          {
            "type": "string",
            "enum": [
              "PlanNotFound"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "StripeError"
            ]
          },
          {
            "type": "string",
            "description": "User already subscribes to a plan. User should hit the Stripe Billing Portal instead.",
            "enum": [
              "UserAlreadyHasPlan"
            ]
          }
        ]
      },
      "CreateCheckoutSessionRequest": {
        "type": "object",
        "properties": {
          "internal_plan_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "The (non-Stripe) internal identifier for the product or subscription.\nThis will be translated into a Stripe identifier."
          },
          "maybe_tolt_referral": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional Tolt referral code\nSee: https://help.tolt.io/en/articles/6843411-how-to-set-up-stripe-with-tolt"
          }
        }
      },
      "CreateCheckoutSessionSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "stripe_checkout_redirect_url"
        ],
        "properties": {
          "stripe_checkout_redirect_url": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateCommentError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          }
        ]
      },
      "CreateCommentRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "entity_token",
          "entity_type",
          "comment_markdown"
        ],
        "properties": {
          "comment_markdown": {
            "type": "string"
          },
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/CommentEntityType"
          },
          "uuid_idempotency_token": {
            "type": "string"
          }
        }
      },
      "CreateCommentSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "comment_token"
        ],
        "properties": {
          "comment_token": {
            "$ref": "#/components/schemas/CommentToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateFeaturedItemRequest": {
        "type": "object",
        "required": [
          "entity_token",
          "entity_type"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/FeaturedItemEntityType"
          }
        }
      },
      "CreateFeaturedItemSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateFolderRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "maybe_color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_parent_folder_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FolderToken"
              }
            ]
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CreateFolderSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "folder"
        ],
        "properties": {
          "folder": {
            "$ref": "#/components/schemas/FolderInfo"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateMcpSessionRequest": {
        "type": "object",
        "properties": {
          "maybe_mcp_client_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the MCP client creating the session, if any."
          },
          "maybe_mcp_client_vendor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Vendor of the MCP client, if any."
          },
          "maybe_mcp_client_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the MCP client, if any."
          }
        }
      },
      "CreateMcpSessionSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "private_session_token",
          "private_refresh_token"
        ],
        "properties": {
          "private_refresh_token": {
            "$ref": "#/components/schemas/McpSessionRefreshToken",
            "description": "The secret credential the MCP client presents on `/v1/mcp/session/refresh` to extend the\nsession. Each successful refresh returns a NEW refresh token and invalidates this one —\nstore whichever value is newest."
          },
          "private_session_token": {
            "$ref": "#/components/schemas/McpSessionPrivateToken",
            "description": "The secret credential the MCP client presents in the `Authorization` header. This is the\nONLY time it is ever returned — the caller must store it now, as it cannot be retrieved\nagain."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreatePromptRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "generation_provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerationProvider",
                "description": "OPTIONAL. The service used."
              }
            ]
          },
          "maybe_aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "OPTIONAL. The aspect ratio (eg. square, auto, wide_three_by_two, etc.)"
              }
            ]
          },
          "maybe_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "OPTIONAL. The number of outputs to generate (0-255).",
            "minimum": 0
          },
          "maybe_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "OPTIONAL. The duration in seconds.",
            "minimum": 0
          },
          "maybe_generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "OPTIONAL. Whether to generate audio."
          },
          "maybe_generation_mode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonGenerationMode",
                "description": "OPTIONAL. The generation mode (eg. keyframe, reference, inpaint, etc.)"
              }
            ]
          },
          "maybe_resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "OPTIONAL. The resolution (eg. one_k, two_k, four_k, etc.)"
              }
            ]
          },
          "model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonModelType",
                "description": "OPTIONAL. The model type."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. The negative prompt."
          },
          "positive_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. The positive prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "CreatePromptResponse": {
        "type": "object",
        "required": [
          "success",
          "prompt_token"
        ],
        "properties": {
          "prompt_token": {
            "$ref": "#/components/schemas/PromptToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "CreateReferralCodeRequest": {
        "type": "object",
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "description": "The referral code string. Alphanumeric plus underscore, period, dash."
          }
        }
      },
      "CreateReferralCodeResponse": {
        "type": "object",
        "required": [
          "success",
          "token",
          "code",
          "code_lowercase"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "code_lowercase": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          },
          "token": {
            "$ref": "#/components/schemas/UserReferralCodeToken"
          }
        }
      },
      "CreateUserBookmarkError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          }
        ]
      },
      "CreateUserBookmarkRequest": {
        "type": "object",
        "required": [
          "entity_token",
          "entity_type"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/UserBookmarkEntityType"
          }
        }
      },
      "CreateUserBookmarkSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "user_bookmark_token",
          "new_bookmark_count_for_entity"
        ],
        "properties": {
          "new_bookmark_count_for_entity": {
            "type": "integer",
            "description": "This is the new bookmark count (across all users) for the entity in question.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "user_bookmark_token": {
            "$ref": "#/components/schemas/UserBookmarkToken"
          }
        }
      },
      "DataboxDashboardEntry": {
        "type": "object",
        "required": [
          "name",
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Databox datawall id."
          },
          "name": {
            "type": "string",
            "description": "Human-readable dashboard name."
          }
        }
      },
      "DebugLogEventToken": {
        "type": "string",
        "description": "A non-unique event token for the `debug_logs` table.\nMultiple log rows can share the same event token."
      },
      "DebugLogLevel": {
        "type": "string",
        "description": "Used in the `debug_logs` table in a `VARCHAR(16)` field (`maybe_log_level`).\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "info",
          "warn",
          "error",
          "debug",
          "trace"
        ]
      },
      "DebugLogType": {
        "type": "string",
        "description": "Used in the `debug_logs` table in a `VARCHAR(24)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "http_request",
          "backend_failure",
          "fal_request",
          "kinovi_request",
          "grok_api_request",
          "fal_webhook",
          "beeble_webhook"
        ]
      },
      "DeleteApiKeySuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteCharacterPathInfo": {
        "type": "object",
        "description": "Path parameters for deleting a character.",
        "required": [
          "character_token"
        ],
        "properties": {
          "character_token": {
            "$ref": "#/components/schemas/CharacterToken"
          }
        }
      },
      "DeleteCharacterResponse": {
        "type": "object",
        "description": "Response body for deleting a character.",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteCommentError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NotFound"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          }
        ]
      },
      "DeleteCommentPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "comment_token"
        ],
        "properties": {
          "comment_token": {
            "$ref": "#/components/schemas/CommentToken"
          }
        }
      },
      "DeleteCommentRequest": {
        "type": "object",
        "properties": {
          "as_mod": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "NB: this is only to disambiguate when a user is both a mod and an author."
          }
        }
      },
      "DeleteFeaturedItemRequest": {
        "type": "object",
        "required": [
          "entity_token",
          "entity_type"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/FeaturedItemEntityType"
          }
        }
      },
      "DeleteFolderSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteMcpSessionSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteMediaFilePathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "DeleteMediaFileRequest": {
        "type": "object",
        "required": [
          "set_delete"
        ],
        "properties": {
          "as_mod": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "NB: this is only to disambiguate when a user is both a mod and an author."
          },
          "set_delete": {
            "type": "boolean"
          }
        }
      },
      "DeleteReferralCodePathInfo": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/UserReferralCodeToken"
          }
        }
      },
      "DeleteReferralCodeResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteTagPathInfo": {
        "type": "object",
        "required": [
          "tag_token"
        ],
        "properties": {
          "tag_token": {
            "$ref": "#/components/schemas/TagToken"
          }
        }
      },
      "DeleteTagSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "removed_link_count"
        ],
        "properties": {
          "removed_link_count": {
            "type": "integer",
            "format": "int64",
            "description": "How many media-file links were hard-deleted along with the tag.\n(The tag record itself is soft-deleted.)",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "DeleteUserBookmarkError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NotFound"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          }
        ]
      },
      "DeleteUserBookmarkPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "user_bookmark_token"
        ],
        "properties": {
          "user_bookmark_token": {
            "$ref": "#/components/schemas/UserBookmarkToken"
          }
        }
      },
      "DeleteUserBookmarkRequest": {
        "type": "object",
        "properties": {
          "as_mod": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "NB: this is only to disambiguate when a user is both a mod and an author."
          }
        }
      },
      "DeleteWeightPathInfo": {
        "type": "object",
        "required": [
          "weight_token"
        ],
        "properties": {
          "weight_token": {
            "type": "string"
          }
        }
      },
      "DeleteWeightRequest": {
        "type": "object",
        "required": [
          "set_delete",
          "as_mod"
        ],
        "properties": {
          "as_mod": {
            "type": "boolean"
          },
          "set_delete": {
            "type": "boolean"
          }
        }
      },
      "DismissFinishedSessionJobsSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "DreaminaVideoInfo": {
        "type": "object",
        "description": "Dreamina (ByteDance/CapCut app) provenance from `ilst` metadata.",
        "required": [
          "product",
          "has_c2pa"
        ],
        "properties": {
          "has_c2pa": {
            "type": "boolean"
          },
          "maybe_aigc_label_type": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "maybe_cert_serial": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_export_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_os": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signer_country": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signer_org_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_source_info": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_video_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "product": {
            "type": "string",
            "description": "The product string, e.g. `\"dreamina\"`."
          }
        }
      },
      "EditBetaKeyDistributedFlagPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/BetaKeyToken"
          }
        }
      },
      "EditBetaKeyDistributedFlagRequest": {
        "type": "object",
        "required": [
          "is_distributed"
        ],
        "properties": {
          "is_distributed": {
            "type": "boolean",
            "description": "Whether to mark the flag as \"distributed\", i.e. we gave the key to someone.\nThis will help us not to give out the same key twice."
          }
        }
      },
      "EditBetaKeyDistributedFlagSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "EditBetaKeyNotePathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/BetaKeyToken"
          }
        }
      },
      "EditBetaKeyNoteRequest": {
        "type": "object",
        "properties": {
          "note": {
            "type": [
              "string",
              "null"
            ],
            "description": "The note.\nIf null or empty string, the note will be cleared."
          }
        }
      },
      "EditBetaKeyNoteSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "EditCharacterRequest": {
        "type": "object",
        "description": "Request body for editing a character.",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/CharacterToken",
            "description": "The character to edit."
          },
          "updated_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Updated description (if changing)."
          },
          "updated_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Updated name (if changing)."
          }
        }
      },
      "EditCharacterResponse": {
        "type": "object",
        "description": "Response body for editing a character.",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "EditEmailRequest": {
        "type": "object",
        "required": [
          "email_address"
        ],
        "properties": {
          "email_address": {
            "type": "string"
          }
        }
      },
      "EditEmailResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "EditUserFeatureFlagPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "username_or_token"
        ],
        "properties": {
          "username_or_token": {
            "type": "string"
          }
        }
      },
      "EditUserFeatureFlagsOption": {
        "oneOf": [
          {
            "type": "object",
            "description": "Add the following flags to the user, keeping any existing flags.",
            "required": [
              "AddFlags"
            ],
            "properties": {
              "AddFlags": {
                "type": "object",
                "description": "Add the following flags to the user, keeping any existing flags.",
                "required": [
                  "flags"
                ],
                "properties": {
                  "flags": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/UserFeatureFlag"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "description": "Remove the following flags from the user, keeping any other existing flags not listed below.",
            "required": [
              "RemoveFlags"
            ],
            "properties": {
              "RemoveFlags": {
                "type": "object",
                "description": "Remove the following flags from the user, keeping any other existing flags not listed below.",
                "required": [
                  "flags"
                ],
                "properties": {
                  "flags": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/UserFeatureFlag"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "description": "Keep only the following flags on the user, but only if they're already present.",
            "required": [
              "KeepFlags"
            ],
            "properties": {
              "KeepFlags": {
                "type": "object",
                "description": "Keep only the following flags on the user, but only if they're already present.",
                "required": [
                  "flags"
                ],
                "properties": {
                  "flags": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/UserFeatureFlag"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "description": "Set the exact set of flags below, discarding any existing state.",
            "required": [
              "SetExactFlags"
            ],
            "properties": {
              "SetExactFlags": {
                "type": "object",
                "description": "Set the exact set of flags below, discarding any existing state.",
                "required": [
                  "flags"
                ],
                "properties": {
                  "flags": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/UserFeatureFlag"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "description": "Clear all flags from the user.",
            "enum": [
              "ClearAllFlags"
            ]
          }
        ]
      },
      "EditUserFeatureFlagsRequest": {
        "type": "object",
        "required": [
          "action"
        ],
        "properties": {
          "action": {
            "$ref": "#/components/schemas/EditUserFeatureFlagsOption"
          }
        }
      },
      "EditUsernameRequest": {
        "type": "object",
        "required": [
          "display_name"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          }
        }
      },
      "EditUsernameResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "EnqueueFaceFusionCropDimensions": {
        "type": "object",
        "required": [
          "x",
          "y",
          "width",
          "height"
        ],
        "properties": {
          "height": {
            "type": "integer",
            "format": "int32",
            "description": "Height in pixels of the cropped area",
            "minimum": 0
          },
          "width": {
            "type": "integer",
            "format": "int32",
            "description": "Width in pixels of the cropped area",
            "minimum": 0
          },
          "x": {
            "type": "integer",
            "format": "int32",
            "description": "X coordinate of the top left corner of the cropped area",
            "minimum": 0
          },
          "y": {
            "type": "integer",
            "format": "int32",
            "description": "Y coordinate of the top left corner of the cropped area",
            "minimum": 0
          }
        }
      },
      "EnqueueFaceFusionWorkflowRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "audio_media_file_token",
          "image_or_video_media_file_token"
        ],
        "properties": {
          "audio_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Audio media token\nThis is the audio to lipsync against."
          },
          "creator_set_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional visibility setting override."
              }
            ]
          },
          "image_or_video_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Image or video media token\nThis is the image or video that will be lipsynced to the audio\nThis video must contain a face."
          },
          "maybe_crop": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EnqueueFaceFusionCropDimensions",
                "description": "Optional crop dimensions from the top left corner."
              }
            ]
          },
          "remove_watermark": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Remove watermark from the output\nOnly for premium accounts"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Entropy for request de-duplication (required)"
          }
        }
      },
      "EnqueueFaceFusionWorkflowSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EnqueueFbxToGltfRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "uuid_idempotency_token": {
            "type": "string"
          }
        }
      },
      "EnqueueFbxToGltfRequestError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "RateLimited"
            ]
          }
        ]
      },
      "EnqueueFbxToGltfRequestSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EnqueueGptSovitsModelDownloadRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "download_url"
        ],
        "properties": {
          "creator_set_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility"
              }
            ]
          },
          "download_url": {
            "type": "string"
          },
          "maybe_cover_image_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken"
              }
            ]
          },
          "maybe_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "uuid_idempotency_token": {
            "type": "string"
          }
        }
      },
      "EnqueueGptSovitsModelDownloadSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "job_token"
        ],
        "properties": {
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken",
            "description": "This is how frontend clients can request the job execution status."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EnqueueLivePortraitCropDimensions": {
        "type": "object",
        "required": [
          "x",
          "y",
          "width",
          "height"
        ],
        "properties": {
          "height": {
            "type": "integer",
            "format": "int32",
            "description": "Height in pixels of the cropped area",
            "minimum": 0
          },
          "width": {
            "type": "integer",
            "format": "int32",
            "description": "Width in pixels of the cropped area",
            "minimum": 0
          },
          "x": {
            "type": "integer",
            "format": "int32",
            "description": "X coordinate of the top left corner of the cropped area",
            "minimum": 0
          },
          "y": {
            "type": "integer",
            "format": "int32",
            "description": "Y coordinate of the top left corner of the cropped area",
            "minimum": 0
          }
        }
      },
      "EnqueueLivePortraitWorkflowRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "source_media_file_token",
          "face_driver_media_file_token"
        ],
        "properties": {
          "creator_set_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional visibility setting override."
              }
            ]
          },
          "face_driver_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Driving media token\nThis must be a video media file token.\nThis drives the animation of the face, but the actor will disappear\nand their facial expressions will be transferred to the source.\nThis video must contain a face."
          },
          "maybe_crop": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EnqueueLivePortraitCropDimensions",
                "description": "Optional crop dimensions from the top left corner."
              }
            ]
          },
          "remove_watermark": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Remove watermark from the output\nOnly for premium accounts"
          },
          "source_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Source media token\nThis can be an image or a video media file token\nThis is what constitutes the \"portrait\" or the overall final video.\nThis video or image must contain a face."
          },
          "used_webcam": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Remove watermark from the output\nOnly for premium accounts"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Entropy for request de-duplication (required)"
          }
        }
      },
      "EnqueueLivePortraitWorkflowSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EnqueueVideoStyleTransferRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "style",
          "input_file"
        ],
        "properties": {
          "creator_set_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional visibility setting override."
              }
            ]
          },
          "disable_lcm": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Disable LCM\nDon't let ordinary users do this.\nNon-LCM workflows take a long time."
          },
          "enable_lipsync": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable lipsyncing in the workflow"
          },
          "frame_skip": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "If you'd like to skip frames.\n\nMeaning:\n * 1 = not skipping frames.\n * 2 = skipping every 2nd, etc.\n\nThe default, if not specified, is 2, which means\nevery 2nd frame is skipped.",
            "minimum": 0
          },
          "global_ipa_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: Global IP-Adapter image.\nThe underlying media file must be an image."
              }
            ]
          },
          "input_depth_file": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: the depth video file\nThe underlying media file must be a video."
              }
            ]
          },
          "input_file": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The input video media file (required)"
          },
          "input_normal_file": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: the normal map video file\nThe underlying media file must be a video."
              }
            ]
          },
          "input_outline_file": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: the outline video file\nThe underlying media file must be a video."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The negative prompt (optional)"
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The positive prompt (optional)"
          },
          "remove_watermark": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Remove watermark from the output\nOnly for premium accounts"
          },
          "style": {
            "$ref": "#/components/schemas/StyleTransferName",
            "description": "The name of the style to invoke (required)"
          },
          "travel_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "To use prompt traveling, enqueue a prompt with this.\n\nAn example of a prompt travel section:\n\n   \"50\": \"(explosion:1.4)\",\n   \"59\": \"(explosion:1.4)\",\n   \"60\": \"fire, smoke, ash\",\n   \"99\": \"fire, smoke, ash\",\n   \"100\": \"\",\n\nOn the interval 50-59 there will be explosion, on\nthe interval 60-99 there will be fire, smoke, ash.\nYou must set\n\nAlternatively, the main `prompt` field can have a\nprompt travel section if you end the main prompt\nwith `---` and then include a prompt travel text."
          },
          "trim_end_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional trim end in milliseconds",
            "minimum": 0
          },
          "trim_start_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional trim start in milliseconds",
            "minimum": 0
          },
          "use_cinematic": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use the cinematic workflow\nDon't let ordinary users do this."
          },
          "use_face_detailer": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use face detailer\nOnly for premium accounts"
          },
          "use_lipsync": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use lipsync in the workflow",
            "deprecated": true
          },
          "use_strength": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "Use Strength of the style transfer\nMust be between 0.0 (match source) and 1.0 (maximum dreaming).\nThe default, if not sent, is 1.0."
          },
          "use_upscaler": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use video upscaler\nOnly for premium accounts"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Entropy for request de-duplication (required)"
          }
        }
      },
      "EnqueueVideoStyleTransferSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EstimateFields": {
        "type": "object",
        "description": "These fields are ignored by generation. They're only used by the frontend\nto aid in cost estimation (e.g. Seedance 2.5 bills reference-video input\nseconds, so the cost quote needs the combined input duration without the\nserver downloading and probing the files on every poll).",
        "properties": {
          "total_input_audio_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Combined duration of all reference audio inputs, in milliseconds.\n(No model bills audio input seconds yet; accepted for future models.)",
            "minimum": 0
          },
          "total_input_video_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Combined duration of all reference video inputs, in milliseconds.",
            "minimum": 0
          }
        }
      },
      "EstimateImageCostError": {
        "type": "object",
        "description": "Error response for the image cost estimate endpoint.",
        "required": [
          "success",
          "error_type",
          "error_message"
        ],
        "properties": {
          "error_message": {
            "type": "string"
          },
          "error_type": {
            "$ref": "#/components/schemas/EstimateImageCostErrorType"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EstimateImageCostErrorType": {
        "type": "string",
        "enum": [
          "invalid_provider_for_model",
          "invalid_input"
        ]
      },
      "EstimateImageCostRequest": {
        "type": "object",
        "description": "Request body for the image cost estimate endpoint.",
        "required": [
          "model",
          "provider",
          "generation_mode"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "Optional aspect ratio."
              }
            ]
          },
          "generation_mode": {
            "$ref": "#/components/schemas/GenerationMode",
            "description": "The type of generation (determines whether input images are involved).\nThis is a tagged enum, so it looks like:\n  \"generation_mode\": {\"type\": \"text_to_image\"}\n  \"generation_mode\": {\"type\": \"image_edit\", \"count\": 2}"
          },
          "image_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of images to generate in parallel.",
            "minimum": 0
          },
          "model": {
            "$ref": "#/components/schemas/CommonImageModel",
            "description": "The image model to estimate costs for."
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider",
            "description": "The provider to route the generation through."
          },
          "quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality"
              }
            ]
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "Optional resolution."
              }
            ]
          }
        }
      },
      "EstimateImageCostResponse": {
        "type": "object",
        "description": "Response body for the image cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EstimateVideoCostError": {
        "type": "object",
        "description": "Error response for the video cost estimate endpoint.",
        "required": [
          "success",
          "error_type",
          "error_message"
        ],
        "properties": {
          "error_message": {
            "type": "string"
          },
          "error_type": {
            "$ref": "#/components/schemas/EstimateVideoCostErrorType"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "EstimateVideoCostErrorType": {
        "type": "string",
        "enum": [
          "invalid_provider_for_model",
          "invalid_input"
        ]
      },
      "EstimateVideoCostRequest": {
        "type": "object",
        "description": "Request body for the video cost estimate endpoint.\n\nEvery model cares about its own set of parameters and not all\nparameters may be relevant for every model.",
        "required": [
          "model",
          "provider",
          "generation_mode"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "Optional aspect ratio."
              }
            ]
          },
          "duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Duration in seconds.",
            "minimum": 0
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate audio for the video."
          },
          "generation_mode": {
            "$ref": "#/components/schemas/GenerationMode",
            "description": "The type of generation (determines how many input images are involved).\nThis is a tagged enum, so it looks like:\n  \"generation_mode\": {\"type\": \"text_to_video\"}\n  \"generation_mode\": {\"type\": \"reference_image_to_video\", \"count\": 1}"
          },
          "model": {
            "$ref": "#/components/schemas/CommonVideoModel",
            "description": "The video model to estimate costs for."
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider",
            "description": "The provider to route the generation through."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "Optional resolution."
              }
            ]
          },
          "video_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of videos to generate in parallel.",
            "minimum": 0
          }
        }
      },
      "EstimateVideoCostResponse": {
        "type": "object",
        "description": "Response body for the video cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FakeYouPlan": {
        "type": "string",
        "enum": [
          "free",
          "basic",
          "standard",
          "pro"
        ]
      },
      "FeatureFlagDescriptor": {
        "type": "object",
        "required": [
          "key",
          "full_name",
          "description"
        ],
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the flag"
          },
          "full_name": {
            "type": "string",
            "description": "Full name of the flag"
          },
          "key": {
            "type": "string",
            "description": "Key the flag is identified by"
          }
        }
      },
      "FeaturedItemEntityType": {
        "type": "string",
        "description": "Used in the `user_bookmarks` table in a `VARCHAR(32)` field named `entity_type`.",
        "enum": [
          "media_file",
          "model_weight",
          "user"
        ]
      },
      "FeaturedMediaFile": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "origin_category",
          "origin_product_category",
          "origin",
          "is_user_upload",
          "is_intermediate_system_file",
          "stats",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight"
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_origin_model_token": {
            "type": [
              "string",
              "null"
            ],
            "deprecated": true
          },
          "maybe_origin_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileOriginModelType"
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "origin": {
            "$ref": "#/components/schemas/MediaFileOriginDetails",
            "description": "Details where the media file came from."
          },
          "origin_category": {
            "$ref": "#/components/schemas/MediaFileOriginCategory"
          },
          "origin_product_category": {
            "$ref": "#/components/schemas/MediaFileOriginProductCategory"
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "FeaturedModelWeightForList": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "title",
          "cover_image",
          "stats",
          "usage_count",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Information about the cover image."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight"
              }
            ]
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset.",
            "deprecated": true
          },
          "maybe_ietf_language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will report it. Example values: \"en\", \"en-US\", \"es-419\", \"ja-JP\", etc."
          },
          "maybe_ietf_primary_language_subtag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will return the primary language subtag, e.g. \"en\", \"es\", etc. This excludes the\nportion after the dash (eg \"en-US\" would be reported as \"en\")."
          },
          "maybe_url_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional SEO-friendly URL slug for the model weight."
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the weights"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "usage_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the model has been used.\n(This isn't in SimpleEntityStats since that also applies to media files, etc.)",
            "minimum": 0
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "Flux2LoraEditImageAngleImageSize": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "portrait_four_three",
          "portrait_sixteen_nine",
          "landscape_four_three",
          "landscape_sixteen_nine"
        ]
      },
      "Flux2LoraEditImageAngleNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "Flux2LoraEditImageAngleRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token"
        ],
        "properties": {
          "horizontal_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Horizontal rotation angle in degrees."
          },
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image to edit with angle adjustment."
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Flux2LoraEditImageAngleImageSize",
                "description": "Output image size. Default is square_hd."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Flux2LoraEditImageAngleNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          },
          "vertical_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Vertical rotation angle in degrees."
          },
          "zoom": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Zoom level."
          }
        }
      },
      "Flux2LoraEditImageAngleResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FluxDevJuggernautInpaintImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "FluxDevJuggernautInpaintImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token",
          "mask_media_token"
        ],
        "properties": {
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image we're editing."
          },
          "mask_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The mask to use against the image."
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FluxDevJuggernautInpaintImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "FluxDevJuggernautInpaintImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FluxPro1InpaintImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "FluxPro1InpaintImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token",
          "mask_media_token"
        ],
        "properties": {
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image we're editing."
          },
          "mask_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The mask to use against the image."
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FluxPro1InpaintImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "FluxPro1InpaintImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FluxProKontextMaxEditImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "FluxProKontextMaxEditImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token"
        ],
        "properties": {
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image we're editing."
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FluxProKontextMaxEditImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "FluxProKontextMaxEditImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FolderInfo": {
        "type": "object",
        "description": "Canonical wire shape for a folder. Used by single-folder GETs, create\nresponses, list rows, and subfolder list rows.",
        "required": [
          "token",
          "name",
          "owner_user_token",
          "last_media_thumbnails",
          "has_star",
          "created_at",
          "updated_at",
          "is_orphaned"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "has_star": {
            "type": "boolean"
          },
          "is_orphaned": {
            "type": "boolean",
            "description": "True when `maybe_parent_folder_token` is set but the referenced\nparent row is missing or soft-deleted."
          },
          "last_media_thumbnails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderThumbnail"
            },
            "description": "The four most-recent media files added to the folder, in slot order\n(the schema stores them as `maybe_last_media_file_token_1..4`).\nSlots whose media file has been deleted are skipped, so the vec\nmay contain 0-4 entries."
          },
          "maybe_color_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_custom_cover_thumbnail": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FolderThumbnail",
                "description": "User-chosen cover image. When present, the frontend should use this\nas the folder's primary thumbnail instead of the\n`last_media_thumbnails` grid."
              }
            ]
          },
          "maybe_parent_folder_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FolderToken"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "owner_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "token": {
            "$ref": "#/components/schemas/FolderToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "FolderMediaFileListItem": {
        "type": "object",
        "description": "One media file as it appears inside a folder. Lean version of the\n\"by batch\" / \"by user\" list-item shape — keeps the fields that matter\nfor folder browsing and drops the bucket-path noise.",
        "required": [
          "token",
          "media_class",
          "media_type",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "is_intermediate_system_file",
          "created_at",
          "updated_at",
          "added_to_folder_at"
        ],
        "properties": {
          "added_to_folder_at": {
            "type": "string",
            "format": "date-time",
            "description": "When the media file was added to the folder."
          },
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Cover image details. For files that don't carry their own cover\nimage, this still gives the deterministic default-cover spec\n(image_index + color_index) the frontend uses for placeholders."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_intermediate_system_file": {
            "type": "boolean"
          },
          "is_user_upload": {
            "type": "boolean"
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If this file was generated as part of a batch, the batch token —\nuseful for showing \"siblings\" in the UI."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available. Milliseconds.",
            "minimum": 0
          },
          "maybe_frame_height": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "maybe_frame_width": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Original pixel width / height for image and video files when known."
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "Link to the prompt"
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "Coarse-grained class (image / video / audio / dimensional)."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media itself (full URL, thumbnail template,\nvideo previews when applicable)."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Specific format (jpg, png, mp4, etc.) — closer to a MIME type."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "FolderMediaFilesPathInfo": {
        "type": "object",
        "required": [
          "folder_token"
        ],
        "properties": {
          "folder_token": {
            "$ref": "#/components/schemas/FolderToken"
          }
        }
      },
      "FolderPathInfo": {
        "type": "object",
        "required": [
          "folder_token"
        ],
        "properties": {
          "folder_token": {
            "$ref": "#/components/schemas/FolderToken"
          }
        }
      },
      "FolderThumbnail": {
        "type": "object",
        "description": "A compact thumbnail descriptor for a media file referenced by a\nfolder (either one of the `last_media_*` slots or the custom cover).\n\nIntentionally narrower than `MediaLinks` / `CoverImageLinks` — folders\nonly need the bare minimum to render a thumbnail card. The CDN URL is\nthe direct asset link; `maybe_thumbnail_template` carries the resizing\ntemplate URL (with `{{width}}` / `{{height}}` placeholders) when the\nmedia class supports it.",
        "required": [
          "token",
          "media_class",
          "media_type",
          "cdn_url"
        ],
        "properties": {
          "cdn_url": {
            "type": "string",
            "format": "uri",
            "description": "Direct CDN URL to the underlying media asset."
          },
          "maybe_thumbnail_template": {
            "type": [
              "string",
              "null"
            ],
            "description": "Resizing template URL (with `{{width}}` / `{{height}}` placeholders)\nwhen the media class supports it. `None` for media classes without\na thumbnail variant. (Video media files instead have video previews,\nwhich, in turn, have their own thumbnail templates.)"
          },
          "maybe_video_previews": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FolderThumbnailVideoPreviews",
                "description": "Video preview images (still and animated gif) for mp4 video files.\nThese are only set for video media files."
              }
            ]
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass"
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "FolderThumbnailVideoPreviews": {
        "type": "object",
        "description": "Video preview images for a video media file referenced by a folder.\nMirrors the shape of `MediaLinks`' video previews, but is its own type\nso the folder wire shape can evolve independently.",
        "required": [
          "still",
          "animated",
          "still_thumbnail_template",
          "animated_thumbnail_template"
        ],
        "properties": {
          "animated": {
            "type": "string",
            "format": "uri",
            "description": "An animated gif preview of the video."
          },
          "animated_thumbnail_template": {
            "type": "string",
            "description": "A template used to construct the animated thumbnail URL.\nReplace the string `{WIDTH}` with the desired width."
          },
          "still": {
            "type": "string",
            "format": "uri",
            "description": "A static single frame preview image of the video."
          },
          "still_thumbnail_template": {
            "type": "string",
            "description": "A template used to construct the still thumbnail URL.\nReplace the string `{WIDTH}` with the desired width."
          }
        }
      },
      "FolderToken": {
        "type": "string",
        "description": "The primary key for folders."
      },
      "FrontendFailureCategory": {
        "type": "string",
        "description": "Used in the `generic_inference_jobs` table in `VARCHAR(32)` field `frontend_failure_category`.\n\nWhen jobs fail (permanently or transiently), we need to inform the frontend of the reason,\nbecause perhaps there's something the user can do to change their input.\n\nThe previous \"VARCHAR(32) failure_reason\" column was a text-based message that could not be\nlocalized or made user friendly. This `frontend_failure_category` exists to provide well-defined\nfailure categories to the frontend that can easily be localized and indicated consistently in\nthe UI.\n\nAnother benefit is that we'll surface all of the various types of failure and perhaps eventually\ncome to handle some in a cross-cutting way.\n\nYOU CAN ADD NEW VALUES, BUT DO NOT CHANGE EXISTING VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "face_not_detected",
          "no_foreground_subject_detected",
          "format_not_supported",
          "keep_alive_elapsed",
          "not_yet_implemented",
          "retryable_worker_error",
          "model_rules_violation",
          "rule_bans_user_image",
          "rule_bans_user_image_with_faces",
          "rule_bans_user_text_prompt",
          "rule_bans_user_content",
          "rule_bans_generated_video",
          "rule_bans_generated_audio",
          "rule_bans_generated_content",
          "filesize_too_large",
          "image_dimensions_too_small",
          "image_dimensions_too_large",
          "generation_failed"
        ]
      },
      "FrontendFailureCategoryForApiClients": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "face_not_detected"
            ]
          },
          {
            "type": "string",
            "enum": [
              "no_foreground_subject_detected"
            ]
          },
          {
            "type": "string",
            "enum": [
              "format_not_supported"
            ]
          },
          {
            "type": "string",
            "enum": [
              "keep_alive_elapsed"
            ]
          },
          {
            "type": "string",
            "enum": [
              "not_yet_implemented"
            ]
          },
          {
            "type": "string",
            "enum": [
              "retryable_worker_error"
            ]
          },
          {
            "type": "string",
            "enum": [
              "model_rules_violation"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_user_image"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_user_image_with_faces"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_user_text_prompt"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_user_content"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_generated_video"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_generated_audio"
            ]
          },
          {
            "type": "string",
            "enum": [
              "rule_bans_generated_content"
            ]
          },
          {
            "type": "string",
            "enum": [
              "filesize_too_large"
            ]
          },
          {
            "type": "string",
            "enum": [
              "image_dimensions_too_small"
            ]
          },
          {
            "type": "string",
            "enum": [
              "image_dimensions_too_large"
            ]
          },
          {
            "type": "string",
            "enum": [
              "generation_failed"
            ]
          },
          {
            "type": "object",
            "description": "Catch-all for values the client doesn't yet know about.\nThe contained string is the raw serialized value from the server.",
            "required": [
              "unknown"
            ],
            "properties": {
              "unknown": {
                "type": "string",
                "description": "Catch-all for values the client doesn't yet know about.\nThe contained string is the raw serialized value from the server."
              }
            }
          }
        ],
        "description": "A forward-compatible version of `FrontendFailureCategory` for API clients.\n\nContains all known variants plus an `Unknown(String)` catch-all so that\nnewer server-side values never cause deserialization failures on the client."
      },
      "FrontendFailureCategoryForOldClients": {
        "type": "string",
        "description": "A restricted subset of `FrontendFailureCategory` that only includes values\nknown to old deployed clients. New failure categories are omitted so that\nold clients never receive an enum value they cannot deserialize.",
        "enum": [
          "face_not_detected",
          "keep_alive_elapsed",
          "not_yet_implemented",
          "retryable_worker_error"
        ]
      },
      "Gemini25FlashEditImageImageQuality": {
        "type": "string",
        "enum": [
          "auto",
          "low",
          "medium",
          "high"
        ]
      },
      "Gemini25FlashEditImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "Gemini25FlashEditImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context."
          },
          "image_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Gemini25FlashEditImageImageQuality",
                "description": "Quality of the image to generate. Default is High."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Gemini25FlashEditImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Gemini25FlashEditImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateFlux1DevTextToImageAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "landscape_four_by_three",
          "landscape_sixteen_by_nine",
          "portrait_three_by_four",
          "portrait_nine_by_sixteen"
        ]
      },
      "GenerateFlux1DevTextToImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GenerateFlux1DevTextToImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFlux1DevTextToImageAspectRatio",
                "description": "Aspect ratio of the output images."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFlux1DevTextToImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateFlux1DevTextToImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateFlux1SchnellTextToImageAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "landscape_four_by_three",
          "landscape_sixteen_by_nine",
          "portrait_three_by_four",
          "portrait_nine_by_sixteen"
        ]
      },
      "GenerateFlux1SchnellTextToImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GenerateFlux1SchnellTextToImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFlux1SchnellTextToImageAspectRatio",
                "description": "Aspect ratio of the output images."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFlux1SchnellTextToImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateFlux1SchnellTextToImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateFluxPro11TextToImageAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "landscape_four_by_three",
          "landscape_sixteen_by_nine",
          "portrait_three_by_four",
          "portrait_nine_by_sixteen"
        ]
      },
      "GenerateFluxPro11TextToImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GenerateFluxPro11TextToImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFluxPro11TextToImageAspectRatio",
                "description": "Aspect ratio of the output images."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFluxPro11TextToImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateFluxPro11TextToImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateFluxPro11UltraTextToImageAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "landscape_three_by_two",
          "landscape_four_by_three",
          "landscape_sixteen_by_nine",
          "landscape_twenty_one_by_nine",
          "portrait_two_by_three",
          "portrait_three_by_four",
          "portrait_nine_by_sixteen",
          "portrait_nine_by_twenty_one"
        ]
      },
      "GenerateFluxPro11UltraTextToImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GenerateFluxPro11UltraTextToImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFluxPro11UltraTextToImageAspectRatio",
                "description": "Aspect ratio of the output images."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateFluxPro11UltraTextToImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateFluxPro11UltraTextToImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateGptImage1TextToImageImageQuality": {
        "type": "string",
        "enum": [
          "auto",
          "low",
          "medium",
          "high"
        ]
      },
      "GenerateGptImage1TextToImageImageSize": {
        "type": "string",
        "enum": [
          "square",
          "horizontal",
          "vertical"
        ]
      },
      "GenerateGptImage1TextToImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GenerateGptImage1TextToImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateGptImage1TextToImageImageQuality",
                "description": "Quality of the image to generate. Default is High."
              }
            ]
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateGptImage1TextToImageImageSize",
                "description": "Size of the image to generate. Default is Square."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateGptImage1TextToImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateGptImage1TextToImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateHunyuan20ImageTo3dRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the file to convert to 3D\nIt must be an image."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateHunyuan20ImageTo3dResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateHunyuan21ImageTo3dRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the file to convert to 3D\nIt must be an image."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateHunyuan21ImageTo3dResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateKling16ProAspectRatio": {
        "type": "string",
        "enum": [
          "wide_sixteen_nine",
          "tall_nine_sixteen",
          "square"
        ]
      },
      "GenerateKling16ProDuration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "ten_seconds"
        ]
      },
      "GenerateKling16ProImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateKling16ProAspectRatio",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateKling16ProDuration",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nImage media file; the image to remove the background from."
              }
            ]
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateKling16ProImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateKling21MasterAspectRatio": {
        "type": "string",
        "enum": [
          "wide_sixteen_nine",
          "tall_nine_sixteen",
          "square"
        ]
      },
      "GenerateKling21MasterDuration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "ten_seconds"
        ]
      },
      "GenerateKling21MasterImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateKling21MasterAspectRatio",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateKling21MasterDuration",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateKling21MasterImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateKling21ProAspectRatio": {
        "type": "string",
        "enum": [
          "wide_sixteen_nine",
          "tall_nine_sixteen",
          "square"
        ]
      },
      "GenerateKling21ProDuration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "ten_seconds"
        ]
      },
      "GenerateKling21ProImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateKling21ProAspectRatio",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateKling21ProDuration",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nImage media file; the image to remove the background from."
              }
            ]
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateKling21ProImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateSeedance10LiteAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "twenty_one_by_nine",
          "sixteen_by_nine",
          "four_by_three",
          "square",
          "three_by_four",
          "nine_by_sixteen"
        ]
      },
      "GenerateSeedance10LiteDuration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "ten_seconds"
        ]
      },
      "GenerateSeedance10LiteImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateSeedance10LiteAspectRatio",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateSeedance10LiteDuration",
                "description": "Optional: duration of the generated video."
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nImage media file; the image to remove the background from."
              }
            ]
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateSeedance10LiteResolution",
                "description": "Optional: resolution of the generated video."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateSeedance10LiteImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateSeedance10LiteResolution": {
        "type": "string",
        "enum": [
          "four_eighty_p",
          "seven_twenty_p"
        ]
      },
      "GenerateSeedance10ProDuration": {
        "type": "string",
        "enum": [
          "three_seconds",
          "four_seconds",
          "five_seconds",
          "six_seconds",
          "seven_seconds",
          "eight_seconds",
          "nine_seconds",
          "ten_seconds",
          "eleven_seconds",
          "twelve_seconds"
        ]
      },
      "GenerateSeedance10ProImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateSeedance10ProDuration",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateSeedance10ProResolution",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateSeedance10ProImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateSeedance10ProResolution": {
        "type": "string",
        "enum": [
          "four_eighty_p",
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "GenerateVeo2AspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "auto_prefer_portrait",
          "wide_sixteen_nine",
          "tall_nine_sixteen"
        ]
      },
      "GenerateVeo2Duration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "six_seconds",
          "seven_seconds",
          "eight_seconds"
        ]
      },
      "GenerateVeo2ImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo2AspectRatio",
                "description": "**NB(bt): ASPECT RATIO IS ACTUALLY NOT USED IN VEO 2 IMAGE-TO-VIDEO**\nOptional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo2Duration",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateVeo2ImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateVeo3AspectRatio": {
        "type": "string",
        "enum": [
          "wide_sixteen_nine",
          "tall_nine_sixteen",
          "square"
        ]
      },
      "GenerateVeo3Duration": {
        "type": "string",
        "enum": [
          "eight_seconds"
        ]
      },
      "GenerateVeo3FastAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "GenerateVeo3FastDuration": {
        "type": "string",
        "enum": [
          "eight_seconds"
        ]
      },
      "GenerateVeo3FastImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo3FastAspectRatio",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo3FastDuration",
                "description": "Optional: duration of the generated video."
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional: Generate an audio track along with the video"
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo3FastResolution",
                "description": "Optional: resolution of the generated video."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateVeo3FastImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateVeo3FastResolution": {
        "type": "string",
        "enum": [
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "GenerateVeo3ImageToVideoRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo3AspectRatio",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo3Duration",
                "description": "Optional: aspect ratio of the generated video."
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional: Generate an audio track along with the video"
          },
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the image file to convert to video.\nIt must be an image."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerateVeo3Resolution",
                "description": "Optional: resolution of the generated video."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateVeo3ImageToVideoResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateVeo3Resolution": {
        "type": "string",
        "enum": [
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "GenerateWorldlabsMarble0p1MiniSplatRequest": {
        "type": "object",
        "description": "World Labs Marble 0.1-mini Splat Generation",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional image to use as input for world generation."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt for world generation."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateWorldlabsMarble0p1MiniSplatResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerateWorldlabsMarble0p1PlusSplatRequest": {
        "type": "object",
        "description": "World Labs Marble 0.1-plus Splat Generation",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional image to use as input for world generation."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional text prompt for world generation."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GenerateWorldlabsMarble0p1PlusSplatResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GenerationMode": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "text_to_video"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "start_frame_to_video"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "start_and_end_frame_to_video"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "count",
              "type"
            ],
            "properties": {
              "count": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "reference_image_to_video"
                ]
              }
            }
          }
        ],
        "description": "Describes the type of video generation being requested."
      },
      "GenerationProvider": {
        "type": "string",
        "description": "NB: This will be used by a variety of tables (MySQL and sqlite)!\nKeep the max length to 16 characters.",
        "enum": [
          "artcraft",
          "fal",
          "grok",
          "midjourney",
          "sora",
          "world_labs",
          "higgsfield",
          "krea",
          "leonardo",
          "magnific",
          "openart",
          "picsart",
          "pixverse",
          "runway"
        ]
      },
      "GetApiKeySuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "api_key"
        ],
        "properties": {
          "api_key": {
            "$ref": "#/components/schemas/ApiKeyInfo"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetCharacterDetails": {
        "type": "object",
        "description": "Full character details returned by the get endpoint.",
        "required": [
          "token",
          "models",
          "name"
        ],
        "properties": {
          "maybe_avatar": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaLinks"
              }
            ]
          },
          "maybe_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_full_image": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaLinks"
              }
            ]
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonModelType"
            },
            "description": "Which models this character can be used with."
          },
          "name": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/CharacterToken"
          }
        }
      },
      "GetCharacterPathInfo": {
        "type": "object",
        "description": "Path parameters for getting a character.",
        "required": [
          "character_token"
        ],
        "properties": {
          "character_token": {
            "$ref": "#/components/schemas/CharacterToken"
          }
        }
      },
      "GetCharacterResponse": {
        "type": "object",
        "description": "Response body for getting a character.",
        "required": [
          "success",
          "character"
        ],
        "properties": {
          "character": {
            "$ref": "#/components/schemas/GetCharacterDetails"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetFolderSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "folder"
        ],
        "properties": {
          "folder": {
            "$ref": "#/components/schemas/FolderInfo"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetInferenceJobStatusPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          }
        }
      },
      "GetInferenceJobStatusSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "state"
        ],
        "properties": {
          "state": {
            "$ref": "#/components/schemas/InferenceJobStatusResponsePayload"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetIsFeaturedItemPathInfo": {
        "type": "object",
        "required": [
          "entity_token",
          "entity_type"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/FeaturedItemEntityType"
          }
        }
      },
      "GetIsFeaturedItemSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "is_featured"
        ],
        "properties": {
          "is_featured": {
            "type": "boolean"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetJobByTokenPathInfo": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          }
        }
      },
      "GetJobByTokenSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "job"
        ],
        "properties": {
          "job": {
            "$ref": "#/components/schemas/ModerationJobResponse"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetMediaFileModelInfo": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "title"
        ],
        "properties": {
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset."
          },
          "maybe_weight_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "NB: Technically this shouldn't be a nullable field, but since there are so many\njoins we'll relax that this must exist (for now)."
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "GetMediaFileModeratorFields": {
        "type": "object",
        "properties": {
          "maybe_style_transfer_source_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "This may become public in the future."
              }
            ]
          }
        }
      },
      "GetMediaFilePathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "GetMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file"
        ],
        "properties": {
          "media_file": {
            "$ref": "#/components/schemas/MediaFileInfo"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetProfilePathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          }
        }
      },
      "GetPromptImageContextItem": {
        "type": "object",
        "required": [
          "media_token",
          "semantic",
          "media_links"
        ],
        "properties": {
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks"
          },
          "media_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "semantic": {
            "$ref": "#/components/schemas/PromptContextSemanticType"
          }
        }
      },
      "GetPromptPathInfo": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/PromptToken"
          }
        }
      },
      "GetPromptSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "prompt"
        ],
        "properties": {
          "prompt": {
            "$ref": "#/components/schemas/PromptInfo"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetSessionCreditsPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "namespace"
        ],
        "properties": {
          "namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace"
          }
        }
      },
      "GetSessionCreditsResponse": {
        "type": "object",
        "required": [
          "success",
          "free_credits",
          "monthly_credits",
          "banked_credits",
          "sum_total_credits"
        ],
        "properties": {
          "banked_credits": {
            "type": "integer",
            "format": "int64",
            "description": "Any banked credits the user might have.",
            "minimum": 0
          },
          "free_credits": {
            "type": "integer",
            "format": "int64",
            "description": "Any free credits the user might have\nWe might support daily free credits.",
            "minimum": 0
          },
          "monthly_credits": {
            "type": "integer",
            "format": "int64",
            "description": "Any monthly refilling credits the user might have",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "sum_total_credits": {
            "type": "integer",
            "format": "int64",
            "description": "All the credit amounts added together.",
            "minimum": 0
          }
        }
      },
      "GetSessionSubscriptionPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "namespace"
        ],
        "properties": {
          "namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace"
          }
        }
      },
      "GetSessionSubscriptionResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "active_subscription": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SubscriptionInfo",
                "description": "Information about the user's subscription, if any."
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetUnifiedQueueStatsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "cache_time",
          "refresh_interval_millis",
          "inference",
          "legacy_tts"
        ],
        "properties": {
          "cache_time": {
            "type": "string",
            "format": "date-time"
          },
          "inference": {
            "$ref": "#/components/schemas/ModernInferenceQueueStats"
          },
          "legacy_tts": {
            "$ref": "#/components/schemas/LegacyQueueDetails"
          },
          "refresh_interval_millis": {
            "type": "integer",
            "format": "int64",
            "description": "Tell the frontend client how fast to refresh their view of this list.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetUserRatingResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_rating_value": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserRatingValue",
                "description": "None if not yet rated.\nIf the user later removes their rating, it will be Some(UserRatingValue::Neutral)."
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GetWeightPathInfo": {
        "type": "object",
        "required": [
          "weight_token"
        ],
        "properties": {
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          }
        }
      },
      "GetWeightResponse": {
        "type": "object",
        "required": [
          "success",
          "weight_token",
          "title",
          "weight_type",
          "weight_category",
          "description_markdown",
          "description_rendered_html",
          "creator",
          "creator_set_visibility",
          "file_size_bytes",
          "file_checksum_sha2",
          "cover_image",
          "is_featured",
          "stats",
          "usage_count",
          "version",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Information about the cover image."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "description_markdown": {
            "type": "string"
          },
          "description_rendered_html": {
            "type": "string"
          },
          "file_checksum_sha2": {
            "type": "string"
          },
          "file_size_bytes": {
            "type": "integer",
            "format": "int64"
          },
          "is_featured": {
            "type": "boolean",
            "description": "Whether the weight is featured by staff (the featured_items API) or not."
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset.",
            "deprecated": true
          },
          "maybe_ietf_language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will report it. Example values: \"en\", \"en-US\", \"es-419\", \"ja-JP\", etc."
          },
          "maybe_ietf_primary_language_subtag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will return the primary language subtag, e.g. \"en\", \"es\", etc. This excludes the\nportion after the dash (eg \"en-US\" would be reported as \"en\")."
          },
          "maybe_url_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional SEO-friendly URL slug for the model weight."
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the weights"
          },
          "success": {
            "type": "boolean"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "usage_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the model has been used.\n(This isn't in SimpleEntityStats since that also applies to media files, etc.)",
            "minimum": 0
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "GoogleCreateAccountRequest": {
        "type": "object",
        "required": [
          "google_credential"
        ],
        "properties": {
          "google_credential": {
            "type": "string"
          },
          "maybe_landing_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: The URL where the user landed when they first arrived.\nThe browser can send `window.location.href`."
          },
          "maybe_referral_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: A referral code created by another user. If present, takes priority over\n`maybe_referral_username` for resolving the referring user."
          },
          "maybe_referral_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: The referral URL the user arrived from when first hitting the site.\nThe browser can send `document.referrer` to the backend.\nIf not provided, we'll try the `referer` header."
          },
          "maybe_referral_username": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: A referral username or code from a referring user."
          }
        }
      },
      "GoogleCreateAccountSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "signed_session",
          "username_not_yet_customized"
        ],
        "properties": {
          "maybe_user_display_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The user's display username. If we want to present a username\ncustomization flow, we can use this to prevent another round trip."
          },
          "signed_session": {
            "type": "string",
            "description": "A signed session that can be sent as a header, bypassing cookies.\nThis is useful for API clients that don't support cookies or Google\nbrowsers killing cross-domain cookies."
          },
          "success": {
            "type": "boolean"
          },
          "username_not_yet_customized": {
            "type": "boolean",
            "description": "If the username was automatically generated and not yet customized,\nthis will report true. We should show the user a dialogue to change\ntheir username."
          }
        }
      },
      "GptImage1EditImageImageQuality": {
        "type": "string",
        "enum": [
          "auto",
          "low",
          "medium",
          "high"
        ]
      },
      "GptImage1EditImageImageSize": {
        "type": "string",
        "enum": [
          "square",
          "horizontal",
          "vertical"
        ]
      },
      "GptImage1EditImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GptImage1EditImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context."
          },
          "image_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1EditImageImageQuality",
                "description": "Quality of the image to generate. Default is High."
              }
            ]
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1EditImageImageSize",
                "description": "Size of the image to generate. Default is Square."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1EditImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GptImage1EditImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GptImage1p5MultiFunctionImageGenBackground": {
        "type": "string",
        "enum": [
          "auto",
          "transparent",
          "opaque"
        ]
      },
      "GptImage1p5MultiFunctionImageGenInputFidelity": {
        "type": "string",
        "enum": [
          "low",
          "high"
        ]
      },
      "GptImage1p5MultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "GptImage1p5MultiFunctionImageGenOutputFormat": {
        "type": "string",
        "enum": [
          "jpeg",
          "png",
          "webp"
        ]
      },
      "GptImage1p5MultiFunctionImageGenQuality": {
        "type": "string",
        "enum": [
          "low",
          "medium",
          "high"
        ]
      },
      "GptImage1p5MultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "background": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenBackground"
              }
            ]
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context (**OR INPAINTING CONTEXT!**).\nIf present, we're doing image editing (image-to-image / image-editing / image-inpainting)\nIf absent, we're doing image generation (text-to-image)"
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenSize"
              }
            ]
          },
          "input_fidelity": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenInputFidelity",
                "description": "Only for image editing."
              }
            ]
          },
          "mask_image_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Only for image editing, which turns this into an inpainting task.\nText to image should not set this."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "output_format": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenOutputFormat"
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GptImage1p5MultiFunctionImageGenQuality"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "GptImage1p5MultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "GptImage1p5MultiFunctionImageGenSize": {
        "type": "string",
        "enum": [
          "square",
          "wide",
          "tall"
        ]
      },
      "Hunyuan3dV3GenerateType": {
        "type": "string",
        "enum": [
          "normal",
          "low_poly",
          "geometry"
        ]
      },
      "Hunyuan3dV3MultiFunctionObjectGenRequest": {
        "type": "object",
        "description": "Hunyuan 3D v3 Multi-Function Request\n\nThis endpoint combines three modes:\n- Text-to-3D: Provide only a prompt (no image_media_token)\n- Image-to-3D: Provide an image_media_token (no prompt or empty prompt)\n- Sketch-to-3D: Provide both a prompt AND an image_media_token",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "back_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Back view image for multi-view image-to-3d mode.\nOnly applicable when image_media_token is provided without a prompt."
              }
            ]
          },
          "enable_pbr": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to enable PBR (Physically Based Rendering) materials.\nDefault is false."
          },
          "face_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Target face count for the generated mesh.\nOptional - if not provided, the model will use its default.",
            "minimum": 0
          },
          "generate_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Hunyuan3dV3GenerateType",
                "description": "Type of generation to perform.\nDefault is Normal."
              }
            ]
          },
          "image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Primary image media token.\n- Required for image-to-3d mode\n- Required for sketch-to-3d mode\n- Not used for text-to-3d mode"
              }
            ]
          },
          "left_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Left view image for multi-view image-to-3d mode.\nOnly applicable when image_media_token is provided without a prompt."
              }
            ]
          },
          "polygon_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Hunyuan3dV3PolygonType",
                "description": "Type of polygon to use in the generated mesh.\nDefault is Triangle."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt for generation.\n- Required for text-to-3d mode\n- Required for sketch-to-3d mode\n- Ignored for image-to-3d mode"
          },
          "right_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Right view image for multi-view image-to-3d mode.\nOnly applicable when image_media_token is provided without a prompt."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Hunyuan3dV3MultiFunctionObjectGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Hunyuan3dV3PolygonType": {
        "type": "string",
        "enum": [
          "triangle",
          "quadrilateral"
        ]
      },
      "InferTtsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token",
          "inference_job_token_type"
        ],
        "properties": {
          "inference_job_token": {
            "type": "string"
          },
          "inference_job_token_type": {
            "$ref": "#/components/schemas/InferenceJobTokenType"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "InferenceCategory": {
        "type": "string",
        "description": "Used in the `generic_inference_jobs` table in `VARCHAR(32)` field `inference_category`.\n\nOur \"generic inference\" pipeline supports a wide variety of ML models and other media.\nEach \"category\" of inference is identified by the following enum variants.\nThese types are present in the HTTP API and database columns as serialized here.\n\nYOU CAN ADD NEW VALUES, BUT DO NOT CHANGE EXISTING VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "deprecated_field",
          "lipsync_animation",
          "text_to_speech",
          "voice_conversion",
          "image_generation",
          "video_generation",
          "audio_generation",
          "object_generation",
          "splat_generation",
          "character_generation",
          "background_removal",
          "mocap",
          "workflow",
          "format_conversion",
          "live_portrait",
          "seed_vc",
          "video_filter",
          "convert_bvh_to_workflow",
          "f5_tts"
        ]
      },
      "InferenceJobExternalThirdParty": {
        "type": "string",
        "description": "Used in the `generic_inference_jobs` table in `VARCHAR(16)` field `maybe_external_third_party`.\n\nYOU CAN ADD NEW VALUES, BUT DO NOT CHANGE EXISTING VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "beeble",
          "fal",
          "gmicloud",
          "grok_api",
          "seedance2pro",
          "seedance2pro_alt",
          "seedance2pro_bpu",
          "worldlabs"
        ]
      },
      "InferenceJobStatusResponsePayload": {
        "type": "object",
        "required": [
          "job_token",
          "request",
          "status",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "maybe_result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResultDetailsResponse"
              }
            ]
          },
          "request": {
            "$ref": "#/components/schemas/RequestDetailsResponse"
          },
          "status": {
            "$ref": "#/components/schemas/StatusDetailsResponse"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "InferenceJobToken": {
        "type": "string",
        "description": "The primary key for \"generic\" inference jobs."
      },
      "InferenceJobTokenType": {
        "type": "string",
        "description": "Tell the frontend how to deal with the tts queue.",
        "enum": [
          "legacy_tts",
          "generic"
        ]
      },
      "InvitedUserDetails": {
        "type": "object",
        "required": [
          "token",
          "username",
          "display_name",
          "email_address"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "email_address": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "JobDetailsLipsyncRequest": {
        "type": "object",
        "description": "Details about submitted lipsync jobs (request arguments only)",
        "required": [
          "audio_source_token",
          "image_or_video_source_token"
        ],
        "properties": {
          "audio_source_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Media file token for the source audio.\nThis is probably an audio file, but in the future we might pull audio from video."
          },
          "image_or_video_source_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Media file token for the source visuals.\nThis is either an image or video."
          }
        }
      },
      "JobDetailsLivePortraitRequest": {
        "type": "object",
        "description": "Details about submitted live portrait jobs (request arguments only)",
        "required": [
          "source_media_file_token",
          "face_driver_media_file_token"
        ],
        "properties": {
          "face_driver_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Driving media token\nThis must be a video media file token.\nThis drives the animation of the face, but the actor will disappear\nand their facial expressions will be transferred to the source.\nThis video must contain a face."
          },
          "source_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Source media token\nThis can be an image or a video media file token\nThis is what constitutes the \"portrait\" or the overall final video.\nThis video or image must contain a face."
          }
        }
      },
      "JobMediaFileInfo": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "media_links",
          "cover_image",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If the file was generated as part of a batch, this is the token for the batch."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ],
            "description": "The original filename for uploaded files, if they were provided.\nIn the future we'll provide our own internal optional filenames."
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "The foreign key to the prompt used to generate the media, if applicable."
              }
            ]
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "JobStatusPlus": {
        "type": "string",
        "description": "This is used in newer jobs (that add additional enum states)\n\n - generic_inference_job\n - (no other jobs yet)\n\nSee the documentation on the table for usage.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "pending",
          "started",
          "complete_success",
          "complete_failure",
          "attempt_failed",
          "dead",
          "cancelled_by_user",
          "cancelled_by_system"
        ]
      },
      "Kling2p5TurboProMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "Kling2p5TurboProMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "ten_seconds"
        ]
      },
      "Kling2p5TurboProMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling2p5TurboProMultiFunctionVideoGenAspectRatio",
                "description": "Optional.\nOnly for text-to-video"
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling2p5TurboProMultiFunctionVideoGenDuration",
                "description": "Optional\nDuration of the video"
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the ending frame (if desired)"
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional.\nOnly for text-to-video."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the starting frame\nIf present, we're doing image-to-video\nIf absent, we're doing text-to-video"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Kling2p5TurboProMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Kling2p6ProMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "Kling2p6ProMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "five_seconds",
          "ten_seconds"
        ]
      },
      "Kling2p6ProMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling2p6ProMultiFunctionVideoGenAspectRatio",
                "description": "Optional.\nOnly for text-to-video"
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling2p6ProMultiFunctionVideoGenDuration",
                "description": "Optional\nDuration of the video"
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nWhether to generate audio."
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional.\nOnly for text-to-video."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the starting frame\nIf present, we're doing image-to-video\nIf absent, we're doing text-to-video"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Kling2p6ProMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Kling3p0ProMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "Kling3p0ProMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "three_seconds",
          "four_seconds",
          "five_seconds",
          "six_seconds",
          "seven_seconds",
          "eight_seconds",
          "nine_seconds",
          "ten_seconds",
          "eleven_seconds",
          "twelve_seconds",
          "thirteen_seconds",
          "fourteen_seconds",
          "fifteen_seconds"
        ]
      },
      "Kling3p0ProMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling3p0ProMultiFunctionVideoGenAspectRatio",
                "description": "Aspect ratio (only for text-to-video)."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling3p0ProMultiFunctionVideoGenDuration",
                "description": "Duration of the video (3-15 seconds)."
              }
            ]
          },
          "end_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional end frame image."
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate audio."
          },
          "image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "If present, we're doing image-to-video. If absent, text-to-video."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional negative prompt."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Kling3p0ProMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Kling3p0StandardMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "square",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "Kling3p0StandardMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "three_seconds",
          "four_seconds",
          "five_seconds",
          "six_seconds",
          "seven_seconds",
          "eight_seconds",
          "nine_seconds",
          "ten_seconds",
          "eleven_seconds",
          "twelve_seconds",
          "thirteen_seconds",
          "fourteen_seconds",
          "fifteen_seconds"
        ]
      },
      "Kling3p0StandardMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling3p0StandardMultiFunctionVideoGenAspectRatio",
                "description": "Aspect ratio (only for text-to-video)."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Kling3p0StandardMultiFunctionVideoGenDuration",
                "description": "Duration of the video (3-15 seconds)."
              }
            ]
          },
          "end_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional end frame image."
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate audio."
          },
          "image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "If present, we're doing image-to-video. If absent, text-to-video."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional negative prompt."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Kling3p0StandardMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "KlingVideoInfo": {
        "type": "object",
        "description": "Kling (Kuaishou) provenance from the AIGC label and/or in-stream watermark.",
        "required": [
          "is_ai_generated",
          "has_stream_watermark"
        ],
        "properties": {
          "has_stream_watermark": {
            "type": "boolean",
            "description": "Whether the in-stream `kling-ai` SEI watermark is present."
          },
          "is_ai_generated": {
            "type": "boolean",
            "description": "Whether labeled AI-generated (`Label == \"1\"`, per China GB 45438)."
          },
          "maybe_content_producer": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_content_propagator": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Model version when a clean export embeds it (e.g. `\"2.5-pro\"`); usually `null`."
          },
          "maybe_produce_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_propagate_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_reserved_code_1": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_reserved_code_2": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_watermark_uuid": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "LegacyQueueDetails": {
        "type": "object",
        "required": [
          "pending_job_count"
        ],
        "properties": {
          "pending_job_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "ListActiveUserSubscriptionsResponse": {
        "type": "object",
        "required": [
          "success",
          "active_subscriptions"
        ],
        "properties": {
          "active_subscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionProductKey"
            }
          },
          "maybe_loyalty_program": {
            "type": [
              "string",
              "null"
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListAllImpersonationRequestsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListAllImpersonationRequestsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "impersonation_requests"
        ],
        "properties": {
          "impersonation_requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllImpersonationRequestResponse"
            }
          },
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListApiKeysQueryParams": {
        "type": "object",
        "properties": {
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Page size. Defaults server-side if omitted.",
            "minimum": 0
          },
          "offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of rows to skip. Defaults to 0.",
            "minimum": 0
          }
        }
      },
      "ListApiKeysSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "api_keys"
        ],
        "properties": {
          "api_keys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiKeyInfo"
            },
            "description": "The user's API keys (including soft-deleted ones), newest first. Each\nentry's key value is truncated — the full secret is never listed."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListAvailableWeightsQuery": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "cursor_is_reversed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "page_size": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "sort_ascending": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "weight_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WeightsCategory"
              }
            ]
          },
          "weight_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WeightsType"
              }
            ]
          }
        }
      },
      "ListAvailableWeightsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationCursors"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelWeightForList"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListBatchGeneratedReduxMediaFilesPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/BatchGenerationToken"
          }
        }
      },
      "ListBatchGeneratedReduxMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchGeneratedReduxMediaFileInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListBetaKeysFilterOption": {
        "type": "string",
        "enum": [
          "all",
          "redeemed",
          "unredeemed"
        ]
      },
      "ListBetaKeysQueryParams": {
        "type": "object",
        "properties": {
          "filter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ListBetaKeysFilterOption",
                "description": "How to filter the keys.\nIf not specified, \"all\" is the default."
              }
            ]
          },
          "maybe_referrer_username": {
            "type": [
              "string",
              "null"
            ],
            "description": "Scope the beta keys to a referrer user."
          },
          "only_list_remaining": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "DEPRECATED: use `list_keys` instead.\nOnly return un-redeemed, un-expired keys.",
            "deprecated": true
          },
          "page_index": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "page_size": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "sort_ascending": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ListBetaKeysSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "beta_keys",
          "pagination"
        ],
        "properties": {
          "beta_keys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BetaKeyItem"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationPage"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListCharactersEntry": {
        "type": "object",
        "description": "A character entry in the list response.",
        "required": [
          "token",
          "models",
          "name"
        ],
        "properties": {
          "maybe_avatar": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaLinks"
              }
            ]
          },
          "maybe_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_full_image": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaLinks"
              }
            ]
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonModelType"
            },
            "description": "Which models this character can be used with."
          },
          "name": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/CharacterToken"
          }
        }
      },
      "ListCharactersResponse": {
        "type": "object",
        "description": "Response body for listing characters in the current session.",
        "required": [
          "success",
          "characters"
        ],
        "properties": {
          "characters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListCharactersEntry"
            }
          },
          "next_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListCommentsError": {
        "type": "string",
        "enum": [
          "ServerError"
        ]
      },
      "ListCommentsPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "entity_type",
          "entity_token"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/CommentEntityType"
          }
        }
      },
      "ListCommentsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "comments"
        ],
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Comment"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListDataboxDashboardsResponse": {
        "type": "object",
        "required": [
          "success",
          "databoards"
        ],
        "properties": {
          "databoards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataboxDashboardEntry"
            },
            "description": "Configured Databox datawalls, in display order."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListFeaturedMediaFilesQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "cursor_is_reversed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "filter_engine_categories": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc."
          },
          "filter_media_classes": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - `?filter_media_classes=dimensional`\n  - etc."
          },
          "filter_media_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, jpg, png, mp4, wav, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf,fbx`\n  - `?filter_media_type=pmd,vmd,pmx`\n  - `?filter_media_type=jpg,png,gif`\n  - `?filter_media_type=wav,mp3`\n  - `?filter_media_type=mp4`\n  - etc."
          },
          "filter_products": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `AutoProductCategory`.\nAutoProductCategory is not a db enum directly and can expand to multiple categories for some values.\n\nUsage:\n  - `?filter_products=voice`\n  - `?filter_products=tts,voice_conversion,zs_voice`\n  - `?filter_products=live_portrait`\n  - `?filter_products=lipsync`\n  - `?filter_products=vst`\n  - `?filter_products=studio`\n  - etc."
          },
          "page_size": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "sort_ascending": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ListFeaturedMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationCursors"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeaturedMediaFile"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListFeaturedWeightsError": {
        "type": "string",
        "enum": [
          "NotAuthorized",
          "ServerError"
        ]
      },
      "ListFeaturedWeightsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "cursor_is_reversed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "filter_weights_categories": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `WeightsCategory`,\nwhich are the broad classes of model: text_to_speech, voice_conversion,\nimage_generation, etc.\n\nUsage:\n  - `?filter_weights_categories=text_to_speech`\n  - `?filter_weights_categories=text_to_speech,voice_conversion`\n  - etc."
          },
          "filter_weights_types": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `WeightsType`,\nwhich are the types of models.\n\nUsage:\n  - `?filter_weights_types=rvc_v2`\n  - `?filter_weights_types=tt2,rvc_v2,vall_e`\n  - etc."
          },
          "page_size": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "sort_ascending": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ListFeaturedWeightsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeaturedModelWeightForList"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListFolderMediaFilesQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListFolderMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListFoldersQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListFoldersSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "folders"
        ],
        "properties": {
          "folders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderInfo"
            }
          },
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListGlobalUserReferralsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListGlobalUserReferralsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "referrals"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "referrals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserReferralResponse"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListImpersonationRequestsPathInfo": {
        "type": "object",
        "required": [
          "user_token"
        ],
        "properties": {
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "ListImpersonationRequestsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListMcpSessionsQueryParams": {
        "type": "object",
        "properties": {
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Page size. Defaults server-side if omitted.",
            "minimum": 0
          },
          "offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of rows to skip. Defaults to 0.",
            "minimum": 0
          }
        }
      },
      "ListMcpSessionsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "mcp_sessions"
        ],
        "properties": {
          "mcp_sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpSessionInfo"
            },
            "description": "The user's MCP sessions (including terminated ones), newest first. The secret\n`private_session_token` is never listed."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListMediaFileTagsPathInfo": {
        "type": "object",
        "required": [
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "ListMediaFileTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "tags"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            },
            "description": "All (live) tags on the media file, sorted by tag value."
          }
        }
      },
      "ListMediaFilesByBatchPathInfo": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/BatchGenerationToken"
          }
        }
      },
      "ListMediaFilesByBatchSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationPage"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFilesByBatchListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListMediaFilesByJobSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobMediaFileInfo"
            },
            "description": "The job's output files, oldest first."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListMediaFilesForUserPathInfo": {
        "type": "object",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          }
        }
      },
      "ListMediaFilesForUserQueryParams": {
        "type": "object",
        "properties": {
          "filter_engine_categories": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc."
          },
          "filter_media_classes": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - `?filter_media_classes=dimensional`\n  - etc."
          },
          "filter_media_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, jpg, png, mp4, wav, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf,fbx`\n  - `?filter_media_type=pmd,vmd,pmx`\n  - `?filter_media_type=jpg,png,gif`\n  - `?filter_media_type=wav,mp3`\n  - `?filter_media_type=mp4`\n  - etc."
          },
          "include_user_uploads": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Include user uploaded files in the results.\nBy default, we do not return them unless this flag is set to true."
          },
          "page_index": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "page_size": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "sort_ascending": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ListMediaFilesForUserSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationPage"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileForUserListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListMediaFilesQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "cursor_is_reversed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "filter_engine_categories": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc."
          },
          "filter_media_classes": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - `?filter_media_classes=dimensional`\n  - etc."
          },
          "filter_media_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, jpg, png, mp4, wav, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf,fbx`\n  - `?filter_media_type=pmd,vmd,pmx`\n  - `?filter_media_type=jpg,png,gif`\n  - `?filter_media_type=wav,mp3`\n  - `?filter_media_type=mp4`\n  - etc."
          },
          "include_user_uploads": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Include user uploaded files in the results.\nBy default, we do not return them unless this flag is set to true."
          },
          "page_size": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "sort_ascending": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ListMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationCursors"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListMediaFilesWithTagPathInfo": {
        "type": "object",
        "required": [
          "tag_token"
        ],
        "properties": {
          "tag_token": {
            "$ref": "#/components/schemas/TagToken"
          }
        }
      },
      "ListMediaFilesWithTagQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListMediaFilesWithTagSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListMediaFilesWithoutFolderQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "filter_media_class": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileClass",
                "description": "Optional filter on the coarse media class.\n\nUsage:\n  - `?filter_media_class=image`\n  - `?filter_media_class=video`\n  - `?filter_media_class=mesh`\n  - `?filter_media_class=splat`"
              }
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListMediaFilesWithoutFolderSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cursor for the next page. Only present when this page was full —\na short page means the list is exhausted."
          },
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnfolderedMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListPinnedMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PinnedMediaFile"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListPinnedWeightsError": {
        "type": "string",
        "enum": [
          "NotAuthorized",
          "ServerError"
        ]
      },
      "ListPinnedWeightsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PinnedModelWeightForList"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListReferralCodesResponse": {
        "type": "object",
        "required": [
          "success",
          "referral_codes"
        ],
        "properties": {
          "referral_codes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferralCodeEntry"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListSessionJobsItem": {
        "type": "object",
        "required": [
          "job_token",
          "request",
          "status",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "maybe_result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ListSessionResultDetailsResponse"
              }
            ]
          },
          "request": {
            "$ref": "#/components/schemas/ListSessionRequestDetailsResponse"
          },
          "status": {
            "$ref": "#/components/schemas/ListSessionStatusDetailsResponse"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ListSessionJobsQueryParams": {
        "type": "object",
        "properties": {
          "exclude_states": {
            "type": [
              "string",
              "null"
            ],
            "description": "The opposite of include_states, this filters out states from view."
          },
          "include_states": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `JobStatusPlus`.\n?include_states=pending or ?include_states=pending,started,complete_success (etc.)"
          }
        }
      },
      "ListSessionJobsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "jobs"
        ],
        "properties": {
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListSessionJobsItem"
            },
            "description": "This is not paginated and is limited to showing 100 jobs."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListSessionMeshMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationCursors"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionMediaFileInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListSessionProjectMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationCursors"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectMediaFileInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListSessionRequestDetailsResponse": {
        "type": "object",
        "description": "Details about what the user requested for generation",
        "required": [
          "inference_category"
        ],
        "properties": {
          "inference_category": {
            "$ref": "#/components/schemas/InferenceCategory"
          },
          "maybe_lipsync_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JobDetailsLipsyncRequest",
                "description": "OPTIONAL. For lipsync jobs (face fusion and sad talker), this is additional\ninformation on the request."
              }
            ]
          },
          "maybe_live_portrait_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JobDetailsLivePortraitRequest",
                "description": "OPTIONAL. For Live Portrait jobs, this is additional information on the request."
              }
            ]
          },
          "maybe_model_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. Title of the model, if it has one"
          },
          "maybe_model_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken"
              }
            ]
          },
          "maybe_raw_inference_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. If the result was TTS, this is the raw inference text."
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "OPTIONAL. For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          }
        }
      },
      "ListSessionResultDetailsResponse": {
        "type": "object",
        "description": "Details about the completed result (if any)",
        "required": [
          "entity_type",
          "entity_token",
          "media_links"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "type": "string"
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If generated as part of a batch, the batch token."
              }
            ]
          },
          "maybe_public_bucket_media_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "maybe_successfully_completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          }
        }
      },
      "ListSessionSplatMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationCursors"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionMediaFileInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListSessionStatusDetailsResponse": {
        "type": "object",
        "description": "Details about the ongoing job status",
        "required": [
          "status",
          "attempt_count",
          "requires_keepalive",
          "progress_percentage"
        ],
        "properties": {
          "attempt_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "maybe_assigned_cluster": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_assigned_worker": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_current_execution_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "If the job is currently running, this is how long it has been running in seconds.\nThis is heuristic estimate since we don't record the precise start time across runs.",
            "minimum": 0
          },
          "maybe_extra_status_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Extra, temporary status from Redis.\nThis can denote inference progress, and the Python code can write to it."
          },
          "maybe_failure_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FrontendFailureCategoryForOldClients",
                "description": "NB: DO NOT CHANGE: Old clients can't read the new enum payload values as they are introduced.\n\nAn enum the frontend can use to display localized/I18N error\nmessages. These pertain to both transient and permanent failures."
              }
            ]
          },
          "maybe_failure_category_updated": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FrontendFailureCategoryForApiClients",
                "description": "An enum the frontend can use to display localized/I18N error\nmessages. These pertain to both transient and permanent failures."
              }
            ]
          },
          "maybe_failure_message": {
            "type": [
              "string",
              "null"
            ],
            "description": "User-facing failure messages"
          },
          "maybe_first_started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "progress_percentage": {
            "type": "integer",
            "format": "int32",
            "description": "This is an integer number between 0 and 100 (both inclusive) that\nreports the completeness.",
            "minimum": 0
          },
          "requires_keepalive": {
            "type": "boolean",
            "description": "Whether the frontend needs to maintain a keepalive check.\nThis is typically only for non-premium users."
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusPlus",
            "description": "Primary status from the database (a state machine)."
          }
        }
      },
      "ListStaffAuditLogsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListStaffAuditLogsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "audit_logs"
        ],
        "properties": {
          "audit_logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffAuditLogResponse"
            }
          },
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListSubfoldersQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListSubfoldersSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "subfolders"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "subfolders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderInfo"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListTaggedMediaFilesQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListTaggedMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListTagsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "tags"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Present when there may be more results; pass back as `cursor`."
          },
          "success": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            },
            "description": "The logged-in user's (live) tags, newest first."
          }
        }
      },
      "ListUntaggedMediaFilesQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListUntaggedMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_files"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListUserBookmarksForEntityError": {
        "type": "string",
        "enum": [
          "ServerError"
        ]
      },
      "ListUserBookmarksForEntityPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "entity_type",
          "entity_token"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/UserBookmarkEntityType"
          }
        }
      },
      "ListUserBookmarksForEntitySuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "user_bookmarks"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "user_bookmarks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserBookmarkForEntityListItem"
            }
          }
        }
      },
      "ListUserBookmarksForUserError": {
        "type": "string",
        "enum": [
          "ServerError"
        ]
      },
      "ListUserBookmarksForUserSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationPage"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserBookmarkListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListUserBookmarksPathInfo": {
        "type": "object",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          }
        }
      },
      "ListUserImpersonationRequestsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "impersonation_requests"
        ],
        "properties": {
          "impersonation_requests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserImpersonationRequestResponse"
            }
          },
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListUserJobsEntry": {
        "type": "object",
        "required": [
          "job_status",
          "job_token",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "credits_delta": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "job_failure_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "job_status": {
            "$ref": "#/components/schemas/JobStatusPlus"
          },
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "maybe_external_third_party": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/InferenceJobExternalThirdParty"
              }
            ]
          },
          "maybe_external_third_party_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_linked_refund_ledger_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WalletLedgerEntryToken"
              }
            ]
          },
          "on_success_result_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken"
              }
            ]
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "wallet_ledger_entry_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WalletLedgerEntryToken"
              }
            ]
          },
          "wallet_ledger_entry_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WalletLedgerEntryType"
              }
            ]
          }
        }
      },
      "ListUserJobsPathInfo": {
        "type": "object",
        "required": [
          "user_token"
        ],
        "properties": {
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "ListUserJobsResponse": {
        "type": "object",
        "required": [
          "success",
          "jobs"
        ],
        "properties": {
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListUserJobsEntry"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListUserReferralsForUserPathInfo": {
        "type": "object",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          }
        }
      },
      "ListUserReferralsForUserQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ListUserReferralsForUserSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "referrals"
        ],
        "properties": {
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "referrals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserReferralResponse"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListUserWalletsEntry": {
        "type": "object",
        "required": [
          "token",
          "wallet_namespace",
          "banked_credits",
          "monthly_credits",
          "version",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "banked_credits": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "monthly_credits": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "token": {
            "$ref": "#/components/schemas/WalletToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "wallet_namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace"
          }
        }
      },
      "ListUserWalletsPathInfo": {
        "type": "object",
        "required": [
          "user_token"
        ],
        "properties": {
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "ListUserWalletsResponse": {
        "type": "object",
        "required": [
          "success",
          "wallets"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "wallets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListUserWalletsEntry"
            }
          }
        }
      },
      "ListWalletLedgerEntriesByWalletEntry": {
        "type": "object",
        "required": [
          "token",
          "wallet_token",
          "entry_type",
          "credits_delta",
          "banked_credits_before",
          "banked_credits_after",
          "monthly_credits_before",
          "monthly_credits_after",
          "created_at",
          "is_refunded"
        ],
        "properties": {
          "banked_credits_after": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "banked_credits_before": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "credits_delta": {
            "type": "integer",
            "format": "int32"
          },
          "entry_type": {
            "$ref": "#/components/schemas/WalletLedgerEntryType"
          },
          "is_refunded": {
            "type": "boolean"
          },
          "maybe_entity_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_linked_refund_ledger_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WalletLedgerEntryToken"
              }
            ]
          },
          "monthly_credits_after": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "monthly_credits_before": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "token": {
            "$ref": "#/components/schemas/WalletLedgerEntryToken"
          },
          "wallet_token": {
            "$ref": "#/components/schemas/WalletToken"
          }
        }
      },
      "ListWalletLedgerEntriesByWalletPathInfo": {
        "type": "object",
        "required": [
          "wallet_token"
        ],
        "properties": {
          "wallet_token": {
            "$ref": "#/components/schemas/WalletToken"
          }
        }
      },
      "ListWalletLedgerEntriesByWalletResponse": {
        "type": "object",
        "required": [
          "success",
          "entries"
        ],
        "properties": {
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListWalletLedgerEntriesByWalletEntry"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ListWeightError": {
        "type": "string",
        "enum": [
          "BadInput",
          "NotAuthorized",
          "ServerError"
        ]
      },
      "ListWeightsByUserPathInfo": {
        "type": "object",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          }
        }
      },
      "ListWeightsByUserSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results",
          "pagination"
        ],
        "properties": {
          "pagination": {
            "$ref": "#/components/schemas/PaginationPage"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Weight"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "LogAppActiveUserRequest": {
        "type": "object",
        "properties": {
          "edit_page_prompt_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of prompts from the edit page.",
            "minimum": 0
          },
          "image_generation_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of images generated.",
            "minimum": 0
          },
          "image_page_prompt_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of prompts from the image page.",
            "minimum": 0
          },
          "image_to_image_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of images generated with image to image (image edits).",
            "minimum": 0
          },
          "image_to_object_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of objects generated with image to object.",
            "minimum": 0
          },
          "image_to_video_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of videos generated with image to video.",
            "minimum": 0
          },
          "maybe_app_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "An override for the application name.\nIf set together with `maybe_app_version`, the two will be\nconcatenated as `{maybe_app_name}/{maybe_app_version}`."
          },
          "maybe_app_session_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AppSessionToken",
                "description": "Clientside-generated session token.\nIf present, it'll be validated against an expected format."
              }
            ]
          },
          "maybe_app_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "An override for the application version.\nIf set together with `maybe_app_name`, the two will be\nconcatenated as `{maybe_app_name}/{maybe_app_version}`."
          },
          "maybe_os_platform": {
            "type": [
              "string",
              "null"
            ],
            "description": "An override for the application platform/OS (windows, mac, linux)."
          },
          "maybe_os_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "An override for the version of the OS (e.g. 10.15.7, 11, 22.04)."
          },
          "maybe_session_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "How long the user has been active in the app, in seconds.",
            "minimum": 0
          },
          "object_generation_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of objects generated (meshes, etc.).",
            "minimum": 0
          },
          "object_page_prompt_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of prompts from the object page.",
            "minimum": 0
          },
          "other_page_prompt_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of prompts from other pages.",
            "minimum": 0
          },
          "stage_page_prompt_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of prompts from the stage page.",
            "minimum": 0
          },
          "text_to_image_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of images generated with text to image.",
            "minimum": 0
          },
          "text_to_object_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of objects generated with text to object.",
            "minimum": 0
          },
          "text_to_video_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of videos generated with text to video.",
            "minimum": 0
          },
          "total_generation_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of items generated across all types.",
            "minimum": 0
          },
          "video_generation_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of videos generated.",
            "minimum": 0
          },
          "video_page_prompt_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Number of prompts from the video page.",
            "minimum": 0
          }
        }
      },
      "LogAppActiveUserResponse": {
        "type": "object",
        "required": [
          "success",
          "wait_for_retry_millis"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "wait_for_retry_millis": {
            "type": "integer",
            "format": "int64",
            "description": "How long to wait until the next analytics event, in milliseconds.\nThe client should honor this and is free to add jitter.",
            "minimum": 0
          }
        }
      },
      "LogBrowserSessionError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          }
        ]
      },
      "LogBrowserSessionRequest": {
        "type": "object",
        "properties": {
          "maybe_last_action": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL: Optionally include an up to 32-character identifier of what\naction the user was last performing."
          },
          "maybe_log_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BrowserSessionLogToken",
                "description": "Make the first request to this endpoint without a token.\nThe server will give you a token to use for every subsequent call.\nUsing this, we can calculate how sticky product usage is."
              }
            ]
          }
        }
      },
      "LogBrowserSessionSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "log_token"
        ],
        "properties": {
          "log_token": {
            "$ref": "#/components/schemas/BrowserSessionLogToken",
            "description": "Store and use this token in subsequent requests.\nIf the user closes the browser, do not save it in session storage.\nYou can get a new token with each browser session."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "LogWebReferralRequest": {
        "type": "object",
        "properties": {
          "maybe_referral_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional: The referral URL the user arrived from when signing up.\nThe browser can send `document.referrer` to the backend so we know how people are finding us.\nIf the browser doesn't send this parameter, we'll try the `referer` header."
          }
        }
      },
      "LogWebReferralResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "LoginErrorResponse": {
        "type": "object",
        "required": [
          "success",
          "error_type",
          "error_message"
        ],
        "properties": {
          "error_message": {
            "type": "string"
          },
          "error_type": {
            "$ref": "#/components/schemas/LoginErrorType"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "LoginErrorType": {
        "type": "string",
        "enum": [
          "AccountNeedsPassword",
          "InvalidCredentials",
          "ServerError"
        ]
      },
      "LoginRequest": {
        "type": "object",
        "required": [
          "username_or_email",
          "password"
        ],
        "properties": {
          "password": {
            "type": "string"
          },
          "username_or_email": {
            "type": "string"
          }
        }
      },
      "LoginSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "signed_session"
        ],
        "properties": {
          "signed_session": {
            "type": "string",
            "description": "A signed session that can be sent as a header, bypassing cookies.\nThis is useful for API clients that don't support cookies or Google\nbrowsers killing cross-domain cookies."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "LogoutSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "MarkMinimaxJobFailureRequest": {
        "type": "object",
        "description": "Request body for `POST /v1/internal/minimax_jobs/job/{job_token}/failure`.",
        "properties": {
          "execution_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional total wall-clock runtime of the failed attempt, in milliseconds.",
            "minimum": 0
          },
          "inference_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional inference-only runtime of the failed attempt, in milliseconds.",
            "minimum": 0
          },
          "maybe_frontend_failure_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FrontendFailureCategory",
                "description": "Optional failure class the frontend can localize and present."
              }
            ]
          },
          "maybe_internal_debugging_failure_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional internal-only stack trace or error (512 characters max)."
          },
          "maybe_user_failure_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional failure reason we can show the user (512 characters max)."
          }
        }
      },
      "MarkMinimaxJobFailureResponse": {
        "type": "object",
        "description": "Response body for `POST /v1/internal/minimax_jobs/job/{job_token}/failure`.",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "MarkMinimaxJobSuccessResponse": {
        "type": "object",
        "description": "Response body for `POST /v1/internal/minimax_jobs/job/{job_token}/success`.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Video duration stored on the media file record, in milliseconds\n(worker-supplied, or probed from the file when not supplied).",
            "minimum": 0
          },
          "maybe_height": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Frame height stored on the media file record, in pixels\n(worker-supplied, or probed from the file when not supplied).",
            "minimum": 0
          },
          "maybe_width": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Frame width stored on the media file record, in pixels\n(worker-supplied, or probed from the file when not supplied).",
            "minimum": 0
          },
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The media file created from the uploaded video."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "McpSessionInfo": {
        "type": "object",
        "description": "Canonical wire shape for an MCP session, used by the dashboard list.\n\nNB: the secret `private_session_token` is NEVER included here — it is returned exactly once,\nat creation time. The `token` is the non-private management handle.",
        "required": [
          "token",
          "ip_address_creation",
          "ip_address_update",
          "created_at",
          "updated_at",
          "expires_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "When the session expires, if not refreshed."
          },
          "ip_address_creation": {
            "type": "string"
          },
          "ip_address_update": {
            "type": "string"
          },
          "maybe_deleted_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Termination timestamp. `None` for live (though possibly expired) sessions."
          },
          "maybe_mcp_client_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Trimmed name of the MCP client that created the session, if any."
          },
          "maybe_mcp_client_vendor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Trimmed vendor of the MCP client, if any."
          },
          "maybe_mcp_client_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Trimmed version of the MCP client, if any."
          },
          "token": {
            "$ref": "#/components/schemas/McpSessionToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "McpSessionPathInfo": {
        "type": "object",
        "description": "Path info for endpoints addressed by the session's management `token` (NOT the secret\n`private_session_token`): `POST /v1/mcp/session/{token}/delete`.",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/McpSessionToken"
          }
        }
      },
      "McpSessionPrivateToken": {
        "type": "string",
        "description": "The private credential for an `mcp_sessions` row (the `private_session_token` column).\n\nThis is the secret an MCP client presents in the `Authorization` header to authenticate as a\nlive session, so it carries more entropy than an ordinary token. Never list or display it\nafter creation. The non-private management handle is `McpSessionToken` (see\n`mcp_sessions.rs`)."
      },
      "McpSessionRefreshToken": {
        "type": "string",
        "description": "The rotating refresh credential for an `mcp_sessions` row (the `private_refresh_token`\ncolumn).\n\nAn MCP client presents this on the session-refresh endpoint to extend its session; each\nsuccessful refresh ROTATES the value, invalidating the previous one. Like the session\ncredential, it is a secret with extra entropy — never list or display it after it is handed\nout. The session's other credentials are `McpSessionToken` (management handle) and\n`McpSessionPrivateToken` (the session secret)."
      },
      "McpSessionToken": {
        "type": "string",
        "description": "The primary key for `mcp_sessions`.\n\nThis is the NON-PRIVATE handle for a session — safe to list and display, and used to\ndelete/manage sessions in the dashboard. It never authenticates anything; that is the job of\n`McpSessionPrivateToken` (see `mcp_session_private.rs`)."
      },
      "MediaFileAnimationType": {
        "type": "string",
        "description": "Used in the `media_files` table in a `VARCHAR` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "ar_kit",
          "miku_miku_dance",
          "miku_miku_dance_ar_kit",
          "mixamo",
          "mixamo_ar_kit",
          "mocap_net",
          "mocap_net_ar_kit",
          "move_ai",
          "move_ai_ar_kit",
          "rigify",
          "rigify_ar_kit",
          "rokoko",
          "rokoko_ar_kit"
        ]
      },
      "MediaFileClass": {
        "type": "string",
        "description": "Used in the `media_files` table in a `VARCHAR(16)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "unknown",
          "audio",
          "image",
          "video",
          "dimensional",
          "mesh",
          "splat",
          "project"
        ]
      },
      "MediaFileCoverImageDetails": {
        "type": "object",
        "description": "Everything we need to create a cover image.\nCover images are small descriptive images that can be set for any media file.\nIf a cover image is set, this is the path to the asset.",
        "required": [
          "default_cover"
        ],
        "properties": {
          "default_cover": {
            "$ref": "#/components/schemas/MediaFileDefaultCover",
            "description": "For items without a cover image, we can use one of our own."
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "maybe_cover_image_public_bucket_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "maybe_links": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CoverImageLinks",
                "description": "Links to the cover image (CDN direct link, thumbnail template)\nIf a cover image is set, this is the path to the asset.\nIf a cover image is not set, use the information in `default_cover` instead.\nRich CDN links to the media, including thumbnails, previews, and more."
              }
            ]
          }
        }
      },
      "MediaFileData": {
        "type": "object",
        "required": [
          "media_type",
          "public_bucket_path",
          "media_links",
          "cover"
        ],
        "properties": {
          "cover": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Details on the cover: defaults, possible custom image, etc.\nDon't use the cover if `media_links` has suitable thumbnails."
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "Creator of the media file"
              }
            ]
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType"
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          }
        }
      },
      "MediaFileDefaultCover": {
        "type": "object",
        "description": "The default cover is composed of an image and color pair that are\npredefined by the frontend.",
        "required": [
          "image_index",
          "color_index"
        ],
        "properties": {
          "color_index": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "image_index": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "MediaFileEngineCategory": {
        "type": "string",
        "description": "Used in the `media_files` table in a `VARCHAR` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "scene",
          "character",
          "creature",
          "animation",
          "expression",
          "location",
          "set_dressing",
          "object",
          "skybox",
          "image_plane",
          "video_plane"
        ]
      },
      "MediaFileForUserListItem": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "origin",
          "origin_category",
          "origin_product_category",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "is_intermediate_system_file",
          "stats",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_origin_model_token": {
            "type": [
              "string",
              "null"
            ],
            "deprecated": true
          },
          "maybe_origin_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileOriginModelType"
              }
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "The foreign key to the prompt used to generate the media, if applicable."
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "origin": {
            "$ref": "#/components/schemas/MediaFileOriginDetails",
            "description": "Details where the media file came from."
          },
          "origin_category": {
            "$ref": "#/components/schemas/MediaFileOriginCategory"
          },
          "origin_product_category": {
            "$ref": "#/components/schemas/MediaFileOriginProductCategory"
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MediaFileInfo": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "is_intermediate_system_file",
          "used_face_detailer",
          "used_upscaler",
          "is_emulated_media_file",
          "is_featured",
          "stats",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_emulated_media_file": {
            "type": "boolean",
            "description": "We can simulate media files for \"tts_results\" records.\nIf this is set as true, this informs the frontend and API callers not to treat\nthe token as a media file and improperly assume it can be used with the rest of\nthe media file APIs."
          },
          "is_featured": {
            "type": "boolean",
            "description": "Whether the media file is featured by staff (the featured_items API) or not."
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If the file was generated as part of a batch, this is the token for the batch."
              }
            ]
          },
          "maybe_creator_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "User info"
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_engine_extension": {
            "type": [
              "string",
              "null"
            ],
            "description": "Extension for the engine to load over remote:// URLs.",
            "deprecated": true
          },
          "maybe_live_portrait_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileLivePortraitDetails",
                "description": "OPTIONAL. Details on live portrait generated media files,\nif this is a live portrait generated file."
              }
            ]
          },
          "maybe_model_weight_info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GetMediaFileModelInfo",
                "description": "Possible model info (if generated by inference)"
              }
            ]
          },
          "maybe_moderator_fields": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GetMediaFileModeratorFields"
              }
            ]
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ],
            "description": "The original filename for uploaded files, if they were provided.\nIn the future we'll provide our own internal optional filenames."
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "The foreign key to the prompt used to generate the media, if applicable."
              }
            ]
          },
          "maybe_scene_source_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "If this media file was generated by a scene from the engine, this is a\nlink to that file."
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "format": "uri",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "used_face_detailer": {
            "type": "boolean",
            "description": "For Comfy / Video Style Transfer jobs, this indicates use of face detailer."
          },
          "used_upscaler": {
            "type": "boolean",
            "description": "For Comfy / Video Style Transfer jobs, this indicates use of upscaling."
          }
        }
      },
      "MediaFileListItem": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "origin_category",
          "origin_product_category",
          "origin",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "stats",
          "creator_set_visibility",
          "is_user_upload",
          "is_intermediate_system_file",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight"
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_origin_model_token": {
            "type": [
              "string",
              "null"
            ],
            "deprecated": true
          },
          "maybe_origin_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileOriginModelType"
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "origin": {
            "$ref": "#/components/schemas/MediaFileOriginDetails",
            "description": "Details where the media file came from."
          },
          "origin_category": {
            "$ref": "#/components/schemas/MediaFileOriginCategory"
          },
          "origin_product_category": {
            "$ref": "#/components/schemas/MediaFileOriginProductCategory"
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MediaFileLivePortraitDetails": {
        "type": "object",
        "description": "Details about submitted live portrait jobs (request arguments only)",
        "required": [
          "source_media_file_token",
          "face_driver_media_file_token"
        ],
        "properties": {
          "face_driver_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Driving media token\nThis must be a video media file token.\nThis drives the animation of the face, but the actor will disappear\nand their facial expressions will be transferred to the source.\nThis video must contain a face."
          },
          "source_media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Source media token\nThis can be an image or a video media file token\nThis is what constitutes the \"portrait\" or the overall final video.\nThis video or image must contain a face."
          }
        }
      },
      "MediaFileModelDetails": {
        "oneOf": [
          {
            "type": "object",
            "description": "A system model is one that we maintain and update,\neg. SadTalker, Wav2Lip, MocapNet, etc.",
            "required": [
              "model_type"
            ],
            "properties": {
              "model_type": {
                "$ref": "#/components/schemas/MediaFileOriginModelType",
                "description": "The type of model weight"
              }
            }
          },
          {
            "type": "object",
            "description": "A model weight is typically a user-submitted model.\nWe store lots of these.",
            "required": [
              "model_type",
              "token",
              "title"
            ],
            "properties": {
              "model_type": {
                "$ref": "#/components/schemas/MediaFileOriginModelType",
                "description": "The type of model weight"
              },
              "title": {
                "type": "string",
                "description": "The model title (typically only populated for `model_weights` models, not legacy tables such as `tts_models`.)"
              },
              "token": {
                "$ref": "#/components/schemas/ModelWeightToken",
                "description": "The model token"
              }
            }
          }
        ],
        "description": "Information about the model weights\nhttps://serde.rs/enum-representations.html#untagged"
      },
      "MediaFileOriginCategory": {
        "type": "string",
        "description": "Used in the `media_files` table in a `VARCHAR` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "inference",
          "inference3rd",
          "processed",
          "upload",
          "device_api",
          "studio",
          "story_engine"
        ]
      },
      "MediaFileOriginDetails": {
        "type": "object",
        "description": "Fields useful for enriching media file listings",
        "required": [
          "origin_category",
          "product_category"
        ],
        "properties": {
          "maybe_model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileModelDetails",
                "description": "If the file was produced by a model, the details."
              }
            ]
          },
          "origin_category": {
            "$ref": "#/components/schemas/MediaFileOriginCategory",
            "description": "Where the file came from (broadly)"
          },
          "product_category": {
            "$ref": "#/components/schemas/MediaFileOriginProductCategory",
            "description": "Where the file came from (specifically, a product area, eg. \"face_animator\")"
          }
        }
      },
      "MediaFileOriginModelType": {
        "type": "string",
        "description": "Used in the `media_files` table in a `VARCHAR` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "face_fusion",
          "f5_tts",
          "live_portrait",
          "rvc_v2",
          "sad_talker",
          "so_vits_svc",
          "tacotron2",
          "mocap_net",
          "seed_vc",
          "styletts2",
          "stable_diffusion_1_5",
          "gpt_sovits",
          "studio",
          "studio_ig",
          "vst",
          "comfy_ui",
          "vall_e_x",
          "rerender"
        ]
      },
      "MediaFileOriginProductCategory": {
        "type": "string",
        "description": "Used in the `media_files` table in `VARCHAR(16)` field `origin_product_category`.\n\nThis value indicates what product originally created the media file. (Not the ML model or\nuser upload process.) This will let us scope media files to the product that generated them\nand filter them out of unrelated products if necessary (eg. a user probably doesn't want\n\"Voice Designer\" dataset samples in a video generation flow.)\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "unknown",
          "face_animator",
          "face_fusion",
          "face_mirror",
          "vst",
          "image_studio",
          "studio",
          "tts",
          "voice_conversion",
          "zs_voice",
          "mocap",
          "image_gen",
          "video_gen",
          "video_edit",
          "world_gen",
          "video_filter",
          "workflow"
        ]
      },
      "MediaFileProjectType": {
        "type": "string",
        "description": "Used in the `media_files` table in the nullable `maybe_project_type`\nVARCHAR(32) field.\n\nIdentifies which kind of internal Artcraft project document a media file is.\nOnly set when `media_class = 'project'`. The file format lives in\n`media_type` (`json` / legacy `scene_json`); the JSON payload carries its\nown schema version.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "scene_3d",
          "mood_board",
          "workflow",
          "video_timeline",
          "editor_2d"
        ]
      },
      "MediaFileSocialMetaLight": {
        "type": "object",
        "description": "Fields useful for enriching media file listings",
        "required": [
          "favorites_count",
          "comments_count"
        ],
        "properties": {
          "comments_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "favorites_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "MediaFileTagsEntry": {
        "type": "object",
        "required": [
          "media_file_token",
          "tags"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            }
          }
        }
      },
      "MediaFileToken": {
        "type": "string",
        "description": "The primary key for Media Files"
      },
      "MediaFileTokenPathInfo": {
        "type": "object",
        "description": "Media File Token in URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "MediaFileType": {
        "type": "string",
        "description": "Used in the `media_files` table in a `VARCHAR(16)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "audio",
          "image",
          "video",
          "bvh",
          "fbx",
          "obj",
          "ply",
          "glb",
          "gltf",
          "spz",
          "scene_ron",
          "scene_json",
          "mood_json",
          "timeline_json",
          "editor_json",
          "pmd",
          "vmd",
          "pmx",
          "csv",
          "jpg",
          "png",
          "gif",
          "mp4",
          "wav",
          "mp3",
          "webp",
          "webm",
          "mov",
          "opus",
          "ogg",
          "aac",
          "m4a",
          "flac",
          "json"
        ]
      },
      "MediaFileUploadError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "object",
            "required": [
              "NotAuthorizedVerbose"
            ],
            "properties": {
              "NotAuthorizedVerbose": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "NotFoundVerbose"
            ],
            "properties": {
              "NotFoundVerbose": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "MustBeLoggedIn"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          },
          {
            "type": "object",
            "required": [
              "ServerErrorVerbose"
            ],
            "properties": {
              "ServerErrorVerbose": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "RateLimited"
            ]
          }
        ]
      },
      "MediaFilesByBatchListItem": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "origin",
          "origin_category",
          "origin_product_category",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "is_intermediate_system_file",
          "stats",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_origin_model_token": {
            "type": [
              "string",
              "null"
            ],
            "deprecated": true
          },
          "maybe_origin_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileOriginModelType"
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "origin": {
            "$ref": "#/components/schemas/MediaFileOriginDetails",
            "description": "Details where the media file came from."
          },
          "origin_category": {
            "$ref": "#/components/schemas/MediaFileOriginCategory"
          },
          "origin_product_category": {
            "$ref": "#/components/schemas/MediaFileOriginProductCategory"
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MediaLinks": {
        "type": "object",
        "description": "Links to media file locations (bucket, CDN, etc.)",
        "required": [
          "cdn_url"
        ],
        "properties": {
          "cdn_url": {
            "type": "string",
            "format": "uri",
            "description": "Primary link to the asset via the CDN."
          },
          "maybe_thumbnail_template": {
            "type": [
              "string",
              "null"
            ],
            "description": "Template to construct thumbnail URLs.\nReplace the string `{WIDTH}` with the desired width.\nOnly relevant for image media files. (Video media files instead have\nvideo previews, which, in turn, have their own thumbnail templates.)"
          },
          "maybe_video_previews": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/VideoPreviews",
                "description": "Video preview images (still and animated gif) for mp4 video files.\nThese are only set for video media files.\nThese are not set for \"cover images\" that are gif or webms, but rather video files."
              }
            ]
          }
        }
      },
      "MinimaxJobMediaReference": {
        "type": "object",
        "description": "One media input attached to the prompt (start frame, end frame, or an\nimage / video / audio reference), with full CDN links.",
        "required": [
          "media_file_token",
          "semantic_type",
          "media_links"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Full CDN links to the media file."
          },
          "semantic_type": {
            "$ref": "#/components/schemas/PromptContextSemanticType",
            "description": "The role the media plays (start frame, end frame, image / video / audio\nreference, etc.)."
          }
        }
      },
      "MinimaxJobPromptDetails": {
        "type": "object",
        "description": "The prompt (text + generation settings) and its attached media references.",
        "required": [
          "prompt_token",
          "media_references"
        ],
        "properties": {
          "maybe_aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio"
              }
            ]
          },
          "maybe_bitrate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonBitrate"
              }
            ]
          },
          "maybe_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "maybe_generate_audio": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "maybe_generation_mode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonGenerationMode"
              }
            ]
          },
          "maybe_negative_prompt": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_positive_prompt": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution"
              }
            ]
          },
          "media_references": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MinimaxJobMediaReference"
            },
            "description": "Image / video / audio references attached to the prompt, with full CDN\nlinks, in their original order."
          },
          "prompt_token": {
            "$ref": "#/components/schemas/PromptToken"
          }
        }
      },
      "MinimaxWorkerModel": {
        "type": "string",
        "description": "The first-party Minimax models a worker can request jobs for.\n\nThis is deliberately its own enum (not `CommonVideoModel`) so the internal\nworker API surface stays small and stable.",
        "enum": [
          "minimax_h3_turbo",
          "minimax_h3_ultra"
        ]
      },
      "ModelCreator": {
        "type": "string",
        "description": "The company or organization that created a model.",
        "enum": [
          "alibaba",
          "artcraft",
          "black_forest_labs",
          "bytedance",
          "deemos",
          "fal",
          "google",
          "grok",
          "hailuo",
          "higgsfield",
          "kling",
          "krea",
          "meshy",
          "midjourney",
          "open_ai",
          "open_art",
          "recraft",
          "replicate",
          "runway",
          "stability",
          "suno",
          "tencent",
          "tensor_art",
          "tripo",
          "vidu",
          "world_labs"
        ]
      },
      "ModelWeightForList": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "title",
          "cover_image",
          "creator",
          "creator_set_visibility",
          "file_size_bytes",
          "file_checksum_sha2",
          "creator_username",
          "creator_display_name",
          "creator_email_gravatar_hash",
          "stats",
          "usage_count",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Information about the cover image."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "creator_display_name": {
            "type": "string",
            "deprecated": true
          },
          "creator_email_gravatar_hash": {
            "type": "string",
            "deprecated": true
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "creator_username": {
            "type": "string",
            "deprecated": true
          },
          "file_checksum_sha2": {
            "type": "string"
          },
          "file_size_bytes": {
            "type": "integer",
            "format": "int32"
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset.",
            "deprecated": true
          },
          "maybe_ietf_language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will report it. Example values: \"en\", \"en-US\", \"es-419\", \"ja-JP\", etc."
          },
          "maybe_ietf_primary_language_subtag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will return the primary language subtag, e.g. \"en\", \"es\", etc. This excludes the\nportion after the dash (eg \"en-US\" would be reported as \"en\")."
          },
          "maybe_url_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional SEO-friendly URL slug for the model weight."
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the weights"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "usage_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the model has been used.\n(This isn't in SimpleEntityStats since that also applies to media files, etc.)",
            "minimum": 0
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "ModelWeightSearchResult": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "creator_set_visibility",
          "title",
          "creator",
          "cover_image",
          "is_featured",
          "stats",
          "usage_count",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Information about the cover image."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_featured": {
            "type": "boolean"
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "deprecated": true
          },
          "maybe_ietf_language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will report it. Example values: \"en\", \"en-US\", \"es-419\", \"ja-JP\", etc."
          },
          "maybe_ietf_primary_language_subtag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will return the primary language subtag, e.g. \"en\", \"es\", etc. This excludes the\nportion after the dash (eg \"en-US\" would be reported as \"en\")."
          },
          "maybe_url_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional SEO-friendly URL slug for the model weight."
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the weights"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "usage_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the model has been used.\n(This isn't in SimpleEntityStats since that also applies to media files, etc.)",
            "minimum": 0
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "ModelWeightToken": {
        "type": "string",
        "description": "The primary key for the  \"model_weights\" table."
      },
      "ModerationBanUserRequest": {
        "type": "object",
        "required": [
          "username",
          "mod_notes",
          "is_banned"
        ],
        "properties": {
          "is_banned": {
            "type": "boolean"
          },
          "mod_notes": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "ModerationBanUserSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModerationDebugLogEntry": {
        "type": "object",
        "description": "A single debug log row.\nShared by the moderation debug-log list endpoints.",
        "required": [
          "id",
          "event_token",
          "debug_log_type",
          "message",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "debug_log_type": {
            "$ref": "#/components/schemas/DebugLogType"
          },
          "event_token": {
            "$ref": "#/components/schemas/DebugLogEventToken"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "maybe_creator_user_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserToken"
              }
            ]
          },
          "maybe_ip_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "The client IP address of the request (if recorded)."
          },
          "maybe_log_level": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DebugLogLevel"
              }
            ]
          },
          "maybe_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "The request URL (if recorded; truncated to 255 chars)."
          },
          "maybe_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModerationDebugLogUser",
                "description": "The creator user, joined in when the row has a user token."
              }
            ]
          },
          "message": {
            "type": "string"
          }
        }
      },
      "ModerationDebugLogUser": {
        "type": "object",
        "description": "The creator user of a debug log row.",
        "required": [
          "user_token",
          "display_name",
          "username",
          "gravatar_hash"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "gravatar_hash": {
            "type": "string"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "ModerationImpersonateRequest": {
        "type": "object",
        "properties": {
          "email_address": {
            "type": [
              "string",
              "null"
            ]
          },
          "user_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "username_email_or_token": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ModerationImpersonateSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "password_token"
        ],
        "properties": {
          "password_token": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModerationJobResponse": {
        "type": "object",
        "required": [
          "token",
          "uuid_idempotency_token",
          "inference_category",
          "creator_ip_address",
          "creator_set_visibility",
          "status",
          "attempt_count",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "assigned_cluster": {
            "type": [
              "string",
              "null"
            ]
          },
          "assigned_worker": {
            "type": [
              "string",
              "null"
            ]
          },
          "attempt_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_ip_address": {
            "type": "string"
          },
          "creator_set_visibility": {
            "type": "string"
          },
          "failure_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "frontend_failure_category": {
            "type": [
              "string",
              "null"
            ]
          },
          "inference_category": {
            "type": "string"
          },
          "internal_debugging_failure_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_creator_anonymous_visitor_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_creator_user_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserToken"
              }
            ]
          },
          "maybe_debug_log_event_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DebugLogEventToken"
              }
            ]
          },
          "maybe_download_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_external_third_party": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_external_third_party_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_inference_args": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_job_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_product_category": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken"
              }
            ]
          },
          "maybe_routing_tag": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_wallet_ledger_entry_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "on_success_result_batch_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "on_success_result_entity_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "on_success_result_entity_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "uuid_idempotency_token": {
            "type": "string"
          }
        }
      },
      "ModerationListAllDebugLogsEntry": {
        "type": "object",
        "description": "A debug log row with the creator user joined in (when one exists).",
        "required": [
          "id",
          "event_token",
          "debug_log_type",
          "message",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "debug_log_type": {
            "$ref": "#/components/schemas/DebugLogType"
          },
          "event_token": {
            "$ref": "#/components/schemas/DebugLogEventToken"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "maybe_creator_user_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserToken"
              }
            ]
          },
          "maybe_ip_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "The client IP address of the request (if recorded)."
          },
          "maybe_log_level": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DebugLogLevel"
              }
            ]
          },
          "maybe_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "The request URL (if recorded; truncated to 255 chars)."
          },
          "maybe_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModerationDebugLogUser"
              }
            ]
          },
          "message": {
            "type": "string"
          }
        }
      },
      "ModerationListAllDebugLogsQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Cursor for pagination. Pass the `next_cursor` from a previous response.",
            "minimum": 0
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Max rows per page (default 50, max 200).",
            "minimum": 0
          },
          "severities": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional comma-separated list of severity levels to include,\neg. `severities=error,warn`. Omit to include all rows."
          }
        }
      },
      "ModerationListAllDebugLogsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "debug_logs"
        ],
        "properties": {
          "debug_logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModerationListAllDebugLogsEntry"
            },
            "description": "Most recent first."
          },
          "next_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Cursor for the next page. `None` if there are no more results.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModerationListDebugLogsForTokenPathInfo": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/DebugLogEventToken"
          }
        }
      },
      "ModerationListDebugLogsForTokenQueryParams": {
        "type": "object",
        "properties": {
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ModerationListDebugLogsForTokenSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "debug_logs"
        ],
        "properties": {
          "debug_logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModerationDebugLogEntry"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModerationListDebugLogsForUserPathInfo": {
        "type": "object",
        "required": [
          "user_token"
        ],
        "properties": {
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "ModerationListDebugLogsForUserQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Cursor for pagination. Pass the `next_cursor` from a previous response.",
            "minimum": 0
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Max rows per page (default 50, max 200).",
            "minimum": 0
          }
        }
      },
      "ModerationListDebugLogsForUserSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "debug_logs"
        ],
        "properties": {
          "debug_logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModerationDebugLogEntry"
            },
            "description": "Most recent first."
          },
          "next_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Cursor for the next page. `None` if there are no more results.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModerationSendAlertRequest": {
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional description for the alert. Defaults to \"This is a test moderation alert.\""
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional title for the alert. Defaults to \"Test Moderation Alert\"."
          },
          "urgency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModerationSendAlertUrgency",
                "description": "Optional urgency of the page."
              }
            ]
          }
        }
      },
      "ModerationSendAlertResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModerationSendAlertUrgency": {
        "type": "string",
        "enum": [
          "high",
          "medium",
          "low"
        ]
      },
      "ModeratorAddBankedBalanceToWalletPathInfo": {
        "type": "object",
        "required": [
          "wallet_token"
        ],
        "properties": {
          "wallet_token": {
            "$ref": "#/components/schemas/WalletToken"
          }
        }
      },
      "ModeratorAddBankedBalanceToWalletRequest": {
        "type": "object",
        "required": [
          "credits"
        ],
        "properties": {
          "credits": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "ModeratorAddBankedBalanceToWalletResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorChangeUserEmailRequest": {
        "type": "object",
        "required": [
          "user_token",
          "new_email"
        ],
        "properties": {
          "new_email": {
            "type": "string",
            "description": "The new email address. Will be trimmed and lowercased before use."
          },
          "user_token": {
            "type": "string",
            "description": "The user whose email should be changed."
          }
        }
      },
      "ModeratorChangeUserEmailSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorCreateWalletForUserRequest": {
        "type": "object",
        "properties": {
          "payments_namespace": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaymentsNamespace"
              }
            ]
          },
          "user_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserToken"
              }
            ]
          }
        }
      },
      "ModeratorCreateWalletForUserResponse": {
        "type": "object",
        "required": [
          "success",
          "wallet_token"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "wallet_token": {
            "$ref": "#/components/schemas/WalletToken"
          }
        }
      },
      "ModeratorGetUserSpendSummaryResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_summary": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserSpendSummaryView",
                "description": "`None` if the user has no spend summary row."
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorGetUserStripeCustomerIdsPathInfo": {
        "type": "object",
        "required": [
          "user_token"
        ],
        "properties": {
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "ModeratorGetUserStripeCustomerIdsResponse": {
        "type": "object",
        "required": [
          "success",
          "customer_ids"
        ],
        "properties": {
          "customer_ids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModeratorUserStripeCustomerIdEntry"
            },
            "description": "All stripe customer ids we have on file for the user, across payments\nnamespaces. A user may have zero or several: a customer link and/or\nsubscriptions per namespace (eg. artcraft), plus legacy fakeyou\nsubscriptions. The same customer id can appear once per source."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorGetWalletDetails": {
        "type": "object",
        "required": [
          "token",
          "wallet_namespace",
          "owner_user_token",
          "banked_credits",
          "monthly_credits",
          "version",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "banked_credits": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "monthly_credits": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "owner_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "token": {
            "$ref": "#/components/schemas/WalletToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "wallet_namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace"
          }
        }
      },
      "ModeratorGetWalletLedgerEntryDetails": {
        "type": "object",
        "required": [
          "token",
          "entry_type",
          "credits_delta",
          "banked_credits_before",
          "banked_credits_after",
          "monthly_credits_before",
          "monthly_credits_after",
          "is_refunded",
          "created_at"
        ],
        "properties": {
          "banked_credits_after": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "banked_credits_before": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "credits_delta": {
            "type": "integer",
            "format": "int32"
          },
          "entry_type": {
            "$ref": "#/components/schemas/WalletLedgerEntryType"
          },
          "is_refunded": {
            "type": "boolean"
          },
          "maybe_entity_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_linked_refund_ledger_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WalletLedgerEntryToken"
              }
            ]
          },
          "monthly_credits_after": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "monthly_credits_before": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "token": {
            "$ref": "#/components/schemas/WalletLedgerEntryToken"
          }
        }
      },
      "ModeratorGetWalletLedgerEntryPathInfo": {
        "type": "object",
        "required": [
          "wallet_ledger_entry_token"
        ],
        "properties": {
          "wallet_ledger_entry_token": {
            "$ref": "#/components/schemas/WalletLedgerEntryToken"
          }
        }
      },
      "ModeratorGetWalletLedgerEntryResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_entry": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModeratorGetWalletLedgerEntryDetails"
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorGetWalletPathInfo": {
        "type": "object",
        "required": [
          "wallet_token"
        ],
        "properties": {
          "wallet_token": {
            "$ref": "#/components/schemas/WalletToken"
          }
        }
      },
      "ModeratorGetWalletResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_wallet": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModeratorGetWalletDetails"
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorListSubscribingUsersBySignupDateEntry": {
        "type": "object",
        "required": [
          "id",
          "token",
          "username",
          "display_name",
          "username_is_not_customized",
          "email_address",
          "email_confirmed",
          "is_without_password",
          "ip_address_creation",
          "created_at",
          "is_temporary",
          "subscription_namespace",
          "subscription_product_slug"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "display_name": {
            "type": "string"
          },
          "email_address": {
            "type": "string"
          },
          "email_confirmed": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "ip_address_creation": {
            "type": "string"
          },
          "is_temporary": {
            "type": "boolean"
          },
          "is_without_password": {
            "type": "boolean"
          },
          "maybe_cancel_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "maybe_canceled_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "maybe_referral_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signup_method": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserSignupMethod"
              }
            ]
          },
          "maybe_source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserSignupSource"
              }
            ]
          },
          "maybe_stripe_customer_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_invoice_is_paid": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "maybe_stripe_price_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_product_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_recurring_interval": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_subscription_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_subscription_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "subscription_namespace": {
            "type": "string"
          },
          "subscription_product_slug": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          },
          "username_is_not_customized": {
            "type": "boolean"
          }
        }
      },
      "ModeratorListSubscribingUsersBySignupDateRequest": {
        "type": "object",
        "properties": {
          "id_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional cursor for pagination. Pass the `next_cursor` from a previous response.",
            "minimum": 0
          }
        }
      },
      "ModeratorListSubscribingUsersBySignupDateResponse": {
        "type": "object",
        "required": [
          "success",
          "users"
        ],
        "properties": {
          "next_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "The cursor for the next page. `None` if there are no more results.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModeratorListSubscribingUsersBySignupDateEntry"
            }
          }
        }
      },
      "ModeratorListTopSpendersResponse": {
        "type": "object",
        "required": [
          "success",
          "window",
          "spenders"
        ],
        "properties": {
          "maybe_next_offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Offset for the next page, or `None` if this was the last page.",
            "minimum": 0
          },
          "spenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopSpenderEntry"
            }
          },
          "success": {
            "type": "boolean"
          },
          "window": {
            "$ref": "#/components/schemas/TopSpendersWindow",
            "description": "The window the results were aggregated over (echoed back, post-default)."
          }
        }
      },
      "ModeratorListUserEmailChangesQueryParams": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opaque cursor from a previous page's `maybe_cursor`. Omit for the\nfirst page."
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Page size. Defaults to 100, capped at 1000.",
            "minimum": 0
          }
        }
      },
      "ModeratorListUserEmailChangesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "changes"
        ],
        "properties": {
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModeratorUserEmailChangeItem"
            }
          },
          "maybe_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Opaque cursor for the next page. `None` means there are no more rows."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorListUserFeatureFlagsResponse": {
        "type": "object",
        "required": [
          "success",
          "user_token",
          "username",
          "display_name",
          "feature_flags"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "feature_flags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "success": {
            "type": "boolean"
          },
          "user_token": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "ModeratorListUserSpendEventsResponse": {
        "type": "object",
        "required": [
          "success",
          "events"
        ],
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserSpendEventListEntry"
            }
          },
          "maybe_next_offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Offset for the next page, or `None` if this was the last page.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorListUsersBySignupDateEntry": {
        "type": "object",
        "required": [
          "id",
          "token",
          "username",
          "display_name",
          "username_is_not_customized",
          "email_address",
          "email_confirmed",
          "is_without_password",
          "ip_address_creation",
          "created_at",
          "is_temporary"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "display_name": {
            "type": "string"
          },
          "email_address": {
            "type": "string"
          },
          "email_confirmed": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "ip_address_creation": {
            "type": "string"
          },
          "is_temporary": {
            "type": "boolean"
          },
          "is_without_password": {
            "type": "boolean"
          },
          "maybe_referral_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signup_method": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserSignupMethod"
              }
            ]
          },
          "maybe_source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserSignupSource"
              }
            ]
          },
          "token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          },
          "username_is_not_customized": {
            "type": "boolean"
          }
        }
      },
      "ModeratorListUsersBySignupDateRequest": {
        "type": "object",
        "properties": {
          "id_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional cursor for pagination. Pass the `next_cursor` from a previous response.",
            "minimum": 0
          }
        }
      },
      "ModeratorListUsersBySignupDateResponse": {
        "type": "object",
        "required": [
          "success",
          "users"
        ],
        "properties": {
          "next_cursor": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "The cursor for the next page. `None` if there are no more results.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModeratorListUsersBySignupDateEntry"
            }
          }
        }
      },
      "ModeratorReengagementListResponse": {
        "type": "object",
        "required": [
          "success",
          "candidates"
        ],
        "properties": {
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReengagementCandidateEntry"
            }
          },
          "maybe_next_offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Offset for the next page, or `None` if this was the last page.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorStripeCustomerIdSource": {
        "type": "string",
        "description": "Which table the customer id was found in.",
        "enum": [
          "customer_link",
          "subscription"
        ]
      },
      "ModeratorTokenInfoResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_payload": {
            "type": [
              "string",
              "null"
            ],
            "description": "Json-encoded payload"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorTopUsersListResponse": {
        "type": "object",
        "required": [
          "success",
          "window",
          "users"
        ],
        "properties": {
          "maybe_next_offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Offset for the next page, or `None` if this was the last page.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopUserEntry"
            }
          },
          "window": {
            "type": "string",
            "description": "The window that was sorted by (echo of the request)."
          }
        }
      },
      "ModeratorUserDailySpendsResponse": {
        "type": "object",
        "required": [
          "success",
          "user_token",
          "records"
        ],
        "properties": {
          "maybe_next_offset": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Offset for the next page, or `None` if this was the last page.",
            "minimum": 0
          },
          "records": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserDailySpendEntry"
            }
          },
          "success": {
            "type": "boolean"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "ModeratorUserEmailChangeItem": {
        "type": "object",
        "required": [
          "id",
          "user",
          "old_email",
          "new_email",
          "ip_address",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "ip_address": {
            "type": "string"
          },
          "maybe_changed_by_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModeratorUserEmailChangeUserSummary",
                "description": "The user that performed the change. `None` for self-service changes\nor when the actor's `users` row has been hard-deleted."
              }
            ]
          },
          "new_email": {
            "type": "string"
          },
          "old_email": {
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/ModeratorUserEmailChangeUserSummary"
          }
        }
      },
      "ModeratorUserEmailChangeUserSummary": {
        "type": "object",
        "required": [
          "user_token",
          "username",
          "display_name",
          "gravatar_hash"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "gravatar_hash": {
            "type": "string"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "ModeratorUserLookupByStripeCustomerIdEntry": {
        "type": "object",
        "required": [
          "subscription_namespace",
          "token",
          "email_address",
          "username",
          "display_name"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "email_address": {
            "type": "string"
          },
          "maybe_stripe_subscription_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "subscription_namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace"
          },
          "token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "ModeratorUserLookupByStripeCustomerIdRequest": {
        "type": "object",
        "required": [
          "stripe_customer_id"
        ],
        "properties": {
          "stripe_customer_id": {
            "type": "string"
          }
        }
      },
      "ModeratorUserLookupByStripeCustomerIdResponse": {
        "type": "object",
        "required": [
          "success",
          "users"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModeratorUserLookupByStripeCustomerIdEntry"
            }
          }
        }
      },
      "ModeratorUserLookupRequest": {
        "type": "object",
        "required": [
          "search"
        ],
        "properties": {
          "search": {
            "type": "string"
          }
        }
      },
      "ModeratorUserLookupSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModeratorUserLookupUserDetails"
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ModeratorUserLookupUserDetails": {
        "type": "object",
        "required": [
          "token",
          "username",
          "display_name",
          "username_is_generated",
          "is_temporary",
          "username_is_not_customized",
          "email_address",
          "email_confirmed",
          "email_is_synthetic",
          "is_without_password",
          "ip_address_creation",
          "ip_address_last_login",
          "email_gravatar_hash",
          "is_banned",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "display_name": {
            "type": "string"
          },
          "email_address": {
            "type": "string"
          },
          "email_confirmed": {
            "type": "boolean"
          },
          "email_gravatar_hash": {
            "type": "string"
          },
          "email_is_synthetic": {
            "type": "boolean"
          },
          "ip_address_creation": {
            "type": "string"
          },
          "ip_address_last_login": {
            "type": "string"
          },
          "is_banned": {
            "type": "boolean"
          },
          "is_temporary": {
            "type": "boolean"
          },
          "is_without_password": {
            "type": "boolean"
          },
          "maybe_avatar_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken"
              }
            ]
          },
          "token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "username": {
            "type": "string"
          },
          "username_is_generated": {
            "type": "boolean"
          },
          "username_is_not_customized": {
            "type": "boolean"
          }
        }
      },
      "ModeratorUserStripeCustomerIdEntry": {
        "type": "object",
        "required": [
          "stripe_customer_id",
          "payments_namespace",
          "source",
          "stripe_dashboard_url"
        ],
        "properties": {
          "payments_namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace"
          },
          "source": {
            "$ref": "#/components/schemas/ModeratorStripeCustomerIdSource"
          },
          "stripe_customer_id": {
            "type": "string"
          },
          "stripe_dashboard_url": {
            "type": "string",
            "description": "Link to the customer in the Stripe dashboard for the namespace's account."
          }
        }
      },
      "ModernInferenceQueueStats": {
        "type": "object",
        "required": [
          "total_pending_job_count",
          "pending_job_count",
          "by_queue"
        ],
        "properties": {
          "by_queue": {
            "$ref": "#/components/schemas/ByQueueStats"
          },
          "pending_job_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "total_pending_job_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "NanaBanana2MultiFunctionImageGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "one_by_one",
          "five_by_four",
          "four_by_three",
          "three_by_two",
          "sixteen_by_nine",
          "twenty_one_by_nine",
          "four_by_five",
          "three_by_four",
          "two_by_three",
          "nine_by_sixteen"
        ]
      },
      "NanaBanana2MultiFunctionImageGenImageResolution": {
        "type": "string",
        "enum": [
          "half_k",
          "one_k",
          "two_k",
          "four_k"
        ]
      },
      "NanaBanana2MultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "NanaBanana2MultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanaBanana2MultiFunctionImageGenAspectRatio",
                "description": "Aspect ratio of the images to generate. Default is \"1:1\""
              }
            ]
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context.\nIf present, we're doing image editing (image-to-image / image-editing)\nIf absent, we're doing image generation (text-to-image)"
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanaBanana2MultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanaBanana2MultiFunctionImageGenImageResolution",
                "description": "Resolution of the image to generate. Default is OneK (1K)."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "NanaBanana2MultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "NanoBananaMultiFunctionImageGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "one_by_one",
          "five_by_four",
          "four_by_three",
          "three_by_two",
          "sixteen_by_nine",
          "twenty_one_by_nine",
          "four_by_five",
          "three_by_four",
          "two_by_three",
          "nine_by_sixteen"
        ]
      },
      "NanoBananaMultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "NanoBananaMultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanoBananaMultiFunctionImageGenAspectRatio",
                "description": "Aspect ratio of the images to generate. Default is \"1:1\""
              }
            ]
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context.\nIf present, we're doing image editing (image-to-image / image-editing)\nIf absent, we're doing image generation (text-to-image)"
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanoBananaMultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "NanoBananaMultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "NanoBananaProMultiFunctionImageGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "one_by_one",
          "five_by_four",
          "four_by_three",
          "three_by_two",
          "sixteen_by_nine",
          "twenty_one_by_nine",
          "four_by_five",
          "three_by_four",
          "two_by_three",
          "nine_by_sixteen"
        ]
      },
      "NanoBananaProMultiFunctionImageGenImageResolution": {
        "type": "string",
        "enum": [
          "one_k",
          "two_k",
          "four_k"
        ]
      },
      "NanoBananaProMultiFunctionImageGenNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "NanoBananaProMultiFunctionImageGenRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanoBananaProMultiFunctionImageGenAspectRatio",
                "description": "Aspect ratio of the images to generate. Default is \"1:1\""
              }
            ]
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Image media tokens to include in the editing context.\nIf present, we're doing image editing (image-to-image / image-editing)\nIf absent, we're doing image generation (text-to-image)"
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanoBananaProMultiFunctionImageGenNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/NanoBananaProMultiFunctionImageGenImageResolution",
                "description": "Resolution of the image to generate. Default is OneK (1K)."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "NanoBananaProMultiFunctionImageGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "NewProjectMultipartForm": {
        "type": "object",
        "description": "Form-multipart request fields for saving a new project.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `NewProjectMultipartForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The project JSON document"
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the project"
          },
          "maybe_visibility": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Visibility of the project"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "ObtainMinimaxJobRequest": {
        "type": "object",
        "description": "Request body for `POST /v1/internal/minimax_jobs/obtain_job`.",
        "required": [
          "model"
        ],
        "properties": {
          "cluster_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The cluster the worker runs in (e.g. \"runpod\", \"lambdalabs\"), if reported."
          },
          "model": {
            "$ref": "#/components/schemas/MinimaxWorkerModel",
            "description": "Which model the worker wants a job for."
          },
          "worker_hostname": {
            "type": [
              "string",
              "null"
            ],
            "description": "The worker's hostname (linux hostname, k8s pod name), if reported."
          }
        }
      },
      "ObtainMinimaxJobResponse": {
        "type": "object",
        "description": "Response body for `POST /v1/internal/minimax_jobs/obtain_job`.",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_job": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ObtainedMinimaxJob",
                "description": "The obtained job, or `None` when no pending job is available."
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ObtainedMinimaxJob": {
        "type": "object",
        "description": "A job the worker now holds a lock on (status was moved to `started`).",
        "required": [
          "job_token",
          "model"
        ],
        "properties": {
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "maybe_prompt": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MinimaxJobPromptDetails",
                "description": "The prompt and inputs the worker needs to run inference. Only `None`\nwhen the job was somehow enqueued without a prompt record (or the\nprompt lookup failed) — workers should fail such jobs via the failure\nendpoint."
              }
            ]
          },
          "model": {
            "$ref": "#/components/schemas/MinimaxWorkerModel",
            "description": "Echo of the requested model."
          }
        }
      },
      "OmniApiBatchGetJobStatusSuccessResponse": {
        "type": "object",
        "description": "Success body for `GET /v1/omni_api/job_status/batch`.",
        "required": [
          "success",
          "job_states"
        ],
        "properties": {
          "job_states": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniApiJobStatusPayload"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniApiGetJobStatusSuccessResponse": {
        "type": "object",
        "description": "Success body for `GET /v1/omni_api/job_status/job/{token}`.",
        "required": [
          "success",
          "state"
        ],
        "properties": {
          "state": {
            "$ref": "#/components/schemas/OmniApiJobStatusPayload"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniApiImageGenerateRequest": {
        "type": "object",
        "description": "Request body for the Omni API image generation endpoint.\n\nForked from `OmniGenImageCostAndGenerateRequest` so the Omni API's request\nshape can evolve independently without affecting the product-critical Omni\nGen endpoints.",
        "properties": {
          "adjust_horizontal_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Only for angle manipulation models."
          },
          "adjust_vertical_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Only for angle manipulation models."
          },
          "adjust_zoom": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Only for angle manipulation models."
          },
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "The aspect ratio to use."
              }
            ]
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests.\nIf not supplied, we'll generate one for the required providers."
          },
          "image_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "How many images to generate.",
            "minimum": 0
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Input images for image editing.\nIf present, we're doing image editing (image-to-image).\nIf absent, we're doing text-to-image."
          },
          "image_urls": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "URL alternative to `image_media_tokens`. Mutually exclusive with it.\nEach URL is downloaded and stored as a media file before generation."
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonImageModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The prompt for the image generation."
          },
          "quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality",
                "description": "The quality to use."
              }
            ]
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "The resolution to use."
              }
            ]
          }
        }
      },
      "OmniApiJobRequestDetails": {
        "type": "object",
        "description": "Details about what the user requested for generation.",
        "required": [
          "inference_category"
        ],
        "properties": {
          "inference_category": {
            "$ref": "#/components/schemas/InferenceCategory"
          },
          "maybe_model_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken"
              }
            ]
          }
        }
      },
      "OmniApiJobResultDetails": {
        "type": "object",
        "description": "Details about the completed result (if any).",
        "required": [
          "entity_type",
          "entity_token",
          "media_links"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "type": "string"
          },
          "maybe_successfully_completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          }
        }
      },
      "OmniApiJobStatusDetails": {
        "type": "object",
        "description": "Details about the ongoing job status.",
        "required": [
          "status",
          "progress_percentage"
        ],
        "properties": {
          "maybe_failure_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FrontendFailureCategory",
                "description": "An enum the frontend can use to display localized/I18N error\nmessages. These pertain to both transient and permanent failures."
              }
            ]
          },
          "maybe_first_started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "progress_percentage": {
            "type": "integer",
            "format": "int32",
            "description": "This is an integer number between 0 and 100 (both inclusive) that\nreports the completeness.",
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusPlus",
            "description": "Primary status from the database (a state machine)."
          }
        }
      },
      "OmniApiJobStatusPayload": {
        "type": "object",
        "description": "Full status payload for a single inference job.\n\nShared by both the single (`/v1/omni_api/job_status/job/{token}`) and batch\n(`/v1/omni_api/job_status/batch`) Omni API status endpoints. Forked from the\ncookie-authenticated `/v1/jobs/*` response types so the Omni API surface can\nevolve independently.",
        "required": [
          "job_token",
          "request",
          "status",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "maybe_result": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniApiJobResultDetails"
              }
            ]
          },
          "request": {
            "$ref": "#/components/schemas/OmniApiJobRequestDetails"
          },
          "status": {
            "$ref": "#/components/schemas/OmniApiJobStatusDetails"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "OmniApiVideoGenerateRequest": {
        "type": "object",
        "description": "Request body for the Omni API video generation endpoint.\n\nForked from `OmniGenVideoCostAndGenerateRequest` so the Omni API's request\nshape can evolve independently without affecting the product-critical Omni\nGen endpoints.",
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "The aspect ratio to use."
              }
            ]
          },
          "bitrate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonBitrate",
                "description": "The output bitrate to use.\nNot all models support this; models that don't simply ignore it."
              }
            ]
          },
          "duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "How many seconds to generate.",
            "minimum": 0
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Ending keyframe (optional)."
              }
            ]
          },
          "end_frame_image_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL alternative to `end_frame_image_media_token`. Mutually exclusive with it.\nDownloaded and stored as a media file before generation."
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to turn on/off audio.\nNot all models support audio, not all models have a choice.\nSome models will default this to true, others will default it to false,\nso it's best to be explicit."
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests."
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonVideoModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Some models support negative text prompts."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The text prompt for the video generation."
          },
          "quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality",
                "description": "The quality to use."
              }
            ]
          },
          "reference_audio_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference audio (optional)."
          },
          "reference_audio_urls": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "URL alternative to `reference_audio_media_tokens`. Mutually exclusive with it.\nEach URL is downloaded and stored as a media file before generation."
          },
          "reference_character_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CharacterToken"
            },
            "description": "Optional character tokens to reference in the prompt.\nCharacters are referenced in prompts as @CharacterName."
          },
          "reference_image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference images (optional)."
          },
          "reference_image_urls": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "URL alternative to `reference_image_media_tokens`. Mutually exclusive with it.\nEach URL is downloaded and stored as a media file before generation."
          },
          "reference_video_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference videos (optional)."
          },
          "reference_video_urls": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "URL alternative to `reference_video_media_tokens`. Mutually exclusive with it.\nEach URL is downloaded and stored as a media file before generation."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "The resolution to use."
              }
            ]
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Starting keyframe (optional)."
              }
            ]
          },
          "start_frame_image_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL alternative to `start_frame_image_media_token`. Mutually exclusive with it.\nDownloaded and stored as a media file before generation."
          },
          "video_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "How many videos to generate.",
            "minimum": 0
          }
        }
      },
      "OmniGenAudioCostAndGenerateRequest": {
        "type": "object",
        "description": "Shared request body for both the audio cost estimate and audio generation endpoints.",
        "properties": {
          "audio_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference audio (optional).\nThe remix/sample source, or Seed Audio @Audio references (up to 3)."
          },
          "bpm": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Beats per minute (Suno Sounds).",
            "minimum": 0
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests."
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference image (optional).\nSeed Audio supports a single reference image; cannot be combined with audio references."
          },
          "is_instrumental": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate instrumental-only audio (Suno Music / Sample)."
          },
          "is_loopable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the sound should loop vs a single hit (Suno Sounds)."
          },
          "keep_lyrics": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to keep the original lyrics (Suno Remix)."
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAudioModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "musical_key": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonMusicalKey",
                "description": "The musical key to use (Suno Sounds)."
              }
            ]
          },
          "pitch": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Pitch shift in semitones (Seed Audio: -12..=12)."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The text prompt for the audio generation."
          },
          "sample_rate_hz": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Output sample rate in Hz (Seed Audio: 8000/16000/24000/32000/44100/48000).",
            "minimum": 0
          },
          "speed": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Playback speed multiplier (Seed Audio: 0.5–2.0)."
          },
          "style_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Style/genre direction (Suno's \"tags\")."
          },
          "volume": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Volume multiplier (Seed Audio: 0.5–2.0)."
          }
        }
      },
      "OmniGenAudioCostResponse": {
        "type": "object",
        "description": "Response body for the omni-gen audio cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "failures_are_refunded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether failures are refunded.\nTrue: 100% yes\nFalse: 100% no\nNone: Unknown or variable"
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate-limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenAudioGenerateResponse": {
        "type": "object",
        "description": "Response body for the omni-gen audio generation endpoint.",
        "required": [
          "success",
          "inference_job_token",
          "all_job_tokens"
        ],
        "properties": {
          "all_job_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InferenceJobToken"
            },
            "description": "All job tokens created by this request (including the primary).\nFor single-job requests this will contain just one element matching\n`inference_job_token`. For batch requests this will contain all of them."
          },
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenAudioModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "audio_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "audio_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "bpm_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "extra_info": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model."
          },
          "extra_info_short": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model. (Brief; only a few words.)"
          },
          "full_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "image_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "instrumental_toggle_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the instrumental-only toggle is supported (Suno Music / Sample)."
          },
          "is_disabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "keep_lyrics_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the \"keep lyrics\" toggle is supported (Suno Remix)."
          },
          "loopable_toggle_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the loop vs single-hit toggle is supported (Suno Sounds)."
          },
          "model": {
            "$ref": "#/components/schemas/CommonAudioModel"
          },
          "model_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModelCreator"
              }
            ]
          },
          "musical_key_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "pitch_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "sample_rate_hz_default": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "sample_rate_hz_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "int32",
              "minimum": 0
            }
          },
          "speed_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "style_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a style/genre prompt (Suno's \"tags\") is supported."
          },
          "text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "volume_supported": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "OmniGenAudioModelProviderDetails": {
        "type": "object",
        "required": [
          "provider",
          "models"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenAudioProviderModelDetails"
            }
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider"
          }
        }
      },
      "OmniGenAudioModelsResponse": {
        "type": "object",
        "description": "Response body for the audio models endpoint.",
        "required": [
          "success",
          "models",
          "providers"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenAudioModelDetails"
            },
            "description": "A list of all models: details, features, and capabilities"
          },
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenAudioModelProviderDetails"
            },
            "description": "Provider-by-provider model offering and capability list,\nwith possible capability overrides (future)"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenAudioProviderModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "model": {
            "$ref": "#/components/schemas/CommonAudioModel"
          },
          "overrides": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenAudioModelDetails"
              }
            ]
          }
        }
      },
      "OmniGenImageCostAndGenerateRequest": {
        "type": "object",
        "description": "Shared request body for both the image cost estimate and image generation endpoints.",
        "properties": {
          "adjust_horizontal_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Only for angle manipulation models."
          },
          "adjust_vertical_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Only for angle manipulation models."
          },
          "adjust_zoom": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Only for angle manipulation models."
          },
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "The aspect ratio to use."
              }
            ]
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests.\nIf not supplied, we'll generate one for the required providers."
          },
          "image_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "How many images to generate.",
            "minimum": 0
          },
          "image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Input images for image editing.\nIf present, we're doing image editing (image-to-image).\nIf absent, we're doing text-to-image."
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonImageModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The prompt for the image generation."
          },
          "quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality",
                "description": "The quality to use."
              }
            ]
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "The resolution to use."
              }
            ]
          }
        }
      },
      "OmniGenImageCostResponse": {
        "type": "object",
        "description": "Response body for the omni-gen image cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "failures_are_refunded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether failures are refunded.\nTrue: 100% yes\nFalse: 100% no\nNone: Unknown or variable"
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenImageGenerateResponse": {
        "type": "object",
        "description": "Response body for the omni-gen image generation endpoint.",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenImageModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "aspect_ratio_default": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio"
              }
            ]
          },
          "aspect_ratio_default_when_editing": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio"
              }
            ]
          },
          "aspect_ratio_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonAspectRatio"
            }
          },
          "batch_size_default": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "batch_size_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "batch_size_min": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "batch_size_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "int32",
              "minimum": 0
            }
          },
          "default_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality"
              }
            ]
          },
          "full_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_fixed_editing_aspect_ratio": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "image_refs_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "image_refs_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "is_disabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "model": {
            "$ref": "#/components/schemas/CommonImageModel"
          },
          "model_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModelCreator"
              }
            ]
          },
          "negative_text_prompt_max_length": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "negative_text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "quality_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonQuality"
            }
          },
          "resolution_default": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution"
              }
            ]
          },
          "resolution_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonResolution"
            }
          },
          "text_prompt_max_length": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "OmniGenImageModelProviderDetails": {
        "type": "object",
        "required": [
          "provider",
          "models"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenImageProviderModelDetails"
            }
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider"
          }
        }
      },
      "OmniGenImageModelsProvider": {
        "type": "string",
        "description": "The provider filter for the models endpoint.",
        "enum": [
          "artcraft",
          "all"
        ]
      },
      "OmniGenImageModelsQuery": {
        "type": "object",
        "description": "Query string parameters for the image models endpoint.",
        "properties": {
          "provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenImageModelsProvider",
                "description": "Which provider's models to list. Defaults to \"artcraft\" if absent."
              }
            ]
          }
        }
      },
      "OmniGenImageModelsResponse": {
        "type": "object",
        "description": "Response body for the image models endpoint.\nTBD — fields will be added later.",
        "required": [
          "success",
          "models",
          "providers"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenImageModelDetails"
            }
          },
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenImageModelProviderDetails"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenImageProviderModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "model": {
            "$ref": "#/components/schemas/CommonImageModel"
          },
          "overrides": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenImageModelDetails"
              }
            ]
          }
        }
      },
      "OmniGenMeshCostAndGenerateRequest": {
        "type": "object",
        "description": "Shared request body for both the mesh cost estimate and mesh generation endpoints.",
        "properties": {
          "back_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Back view image (optional; multi-view input)."
              }
            ]
          },
          "enable_pbr": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate PBR (physically based rendering) materials."
          },
          "enable_texture": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate textures. Some models (Tripo3D) can skip texturing\nfor a cheaper, faster generation."
          },
          "face_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Target face count for the generated mesh.",
            "minimum": 0
          },
          "front_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Front view image (optional; multi-view input).\nCan be used instead of `reference_image_media_tokens[0]` when the other\nside views are supplied."
              }
            ]
          },
          "geometry_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonMeshQuality",
                "description": "Geometry quality. `Detailed` costs extra on some models (Tripo3D)."
              }
            ]
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests."
          },
          "input_mesh_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Input mesh file for mesh-to-mesh models (part splitting, retopology).\nRequired by `hunyuan_3d_3p1_part` (FBX) and\n`hunyuan_3d_3p1_topology` (GLB/OBJ)."
              }
            ]
          },
          "left_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Left view image (optional; multi-view input)."
              }
            ]
          },
          "mesh_output_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonMeshOutputType",
                "description": "The mesh output type to generate (normal, low-poly, or geometry-only)."
              }
            ]
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonMeshModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "polygon_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonPolygonType",
                "description": "The polygon type to use for the generated mesh (triangle or quad)."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The text prompt for the mesh generation (text-to-3D)."
          },
          "reference_image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference images (optional).\nThe primary/front input image, or the sketch image for sketch-to-3D."
          },
          "right_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Right view image (optional; multi-view input)."
              }
            ]
          },
          "texture_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonMeshQuality",
                "description": "Texture quality. `Detailed` costs extra on some models (Tripo3D's HD\ntexture tier)."
              }
            ]
          }
        }
      },
      "OmniGenMeshCostResponse": {
        "type": "object",
        "description": "Response body for the omni-gen mesh cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "failures_are_refunded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether failures are refunded.\nTrue: 100% yes\nFalse: 100% no\nNone: Unknown or variable"
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate-limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenMeshGenerateResponse": {
        "type": "object",
        "description": "Response body for the omni-gen mesh generation endpoint.",
        "required": [
          "success",
          "inference_job_token",
          "all_job_tokens"
        ],
        "properties": {
          "all_job_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InferenceJobToken"
            },
            "description": "All job tokens created by this request (including the primary).\nFor single-job requests this will contain just one element matching\n`inference_job_token`. For batch requests this will contain all of them."
          },
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenMeshModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "extra_info": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model."
          },
          "extra_info_short": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model. (Brief; only a few words.)"
          },
          "face_count_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a target face count can be specified."
          },
          "full_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "geometry_quality_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a geometry quality level (standard/detailed) can be selected."
          },
          "image_input_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether image-to-3D input is supported."
          },
          "is_disabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "mesh_input_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the model takes an existing mesh file as input\n(mesh-to-mesh models like part splitting and retopology)."
          },
          "mesh_output_types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonMeshOutputType"
            },
            "description": "The mesh output types the model supports."
          },
          "model": {
            "$ref": "#/components/schemas/CommonMeshModel"
          },
          "model_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModelCreator"
              }
            ]
          },
          "multi_view_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether multi-view (front/back/left/right) image input is supported."
          },
          "pbr_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether PBR (physically based rendering) material generation is supported."
          },
          "polygon_types": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonPolygonType"
            },
            "description": "The polygon types the model supports."
          },
          "sketch_input_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether sketch-to-3D input is supported."
          },
          "text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether text-to-3D prompting is supported."
          },
          "texture_quality_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a texture quality level (standard/detailed) can be selected."
          },
          "texture_toggle_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether texture generation can be toggled off (untextured output)."
          }
        }
      },
      "OmniGenMeshModelProviderDetails": {
        "type": "object",
        "required": [
          "provider",
          "models"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenMeshProviderModelDetails"
            }
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider"
          }
        }
      },
      "OmniGenMeshModelsResponse": {
        "type": "object",
        "description": "Response body for the mesh models endpoint.",
        "required": [
          "success",
          "models",
          "providers"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenMeshModelDetails"
            },
            "description": "A list of all models: details, features, and capabilities"
          },
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenMeshModelProviderDetails"
            },
            "description": "Provider-by-provider model offering and capability list,\nwith possible capability overrides (future)"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenMeshProviderModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "model": {
            "$ref": "#/components/schemas/CommonMeshModel"
          },
          "overrides": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenMeshModelDetails"
              }
            ]
          }
        }
      },
      "OmniGenSplatCostAndGenerateRequest": {
        "type": "object",
        "description": "Shared request body for both the splat cost estimate and splat generation endpoints.",
        "properties": {
          "disable_recaption": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to disable prompt recaptioning."
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests."
          },
          "is_panoramic": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the single reference image is a 360-degree panorama."
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonSplatModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The text prompt for the splat generation."
          },
          "reference_image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference images (optional).\nNOTE: Spherical/panorama coordinates are not yet supported per-image;\nmultiple images are treated as multi-view input of the same world."
          },
          "reference_video_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Reference video (optional)."
              }
            ]
          }
        }
      },
      "OmniGenSplatCostResponse": {
        "type": "object",
        "description": "Response body for the omni-gen splat cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "failures_are_refunded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether failures are refunded.\nTrue: 100% yes\nFalse: 100% no\nNone: Unknown or variable"
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate-limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenSplatGenerateResponse": {
        "type": "object",
        "description": "Response body for the omni-gen splat generation endpoint.",
        "required": [
          "success",
          "inference_job_token",
          "all_job_tokens"
        ],
        "properties": {
          "all_job_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InferenceJobToken"
            },
            "description": "All job tokens created by this request (including the primary).\nFor single-job requests this will contain just one element matching\n`inference_job_token`. For batch requests this will contain all of them."
          },
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenSplatModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "disable_recaption_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the \"disable recaption\" toggle is supported."
          },
          "extra_info": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model."
          },
          "extra_info_short": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model. (Brief; only a few words.)"
          },
          "full_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "image_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "is_disabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "model": {
            "$ref": "#/components/schemas/CommonSplatModel"
          },
          "model_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModelCreator"
              }
            ]
          },
          "panorama_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a 360-degree panorama reference image is supported."
          },
          "text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "video_reference_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a reference video input is supported."
          }
        }
      },
      "OmniGenSplatModelProviderDetails": {
        "type": "object",
        "required": [
          "provider",
          "models"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenSplatProviderModelDetails"
            }
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider"
          }
        }
      },
      "OmniGenSplatModelsResponse": {
        "type": "object",
        "description": "Response body for the splat models endpoint.",
        "required": [
          "success",
          "models",
          "providers"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenSplatModelDetails"
            },
            "description": "A list of all models: details, features, and capabilities"
          },
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenSplatModelProviderDetails"
            },
            "description": "Provider-by-provider model offering and capability list,\nwith possible capability overrides (future)"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenSplatProviderModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "model": {
            "$ref": "#/components/schemas/CommonSplatModel"
          },
          "overrides": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenSplatModelDetails"
              }
            ]
          }
        }
      },
      "OmniGenVideoCostAndGenerateRequest": {
        "type": "object",
        "description": "Shared request body for both the video cost estimate and video generation endpoints.",
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "The aspect ratio to use."
              }
            ]
          },
          "bitrate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonBitrate",
                "description": "The output bitrate to use.\nNot all models support this; models that don't simply ignore it."
              }
            ]
          },
          "duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "How many seconds to generate.",
            "minimum": 0
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Ending keyframe (optional)."
              }
            ]
          },
          "estimate_only": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EstimateFields",
                "description": "Frontend-supplied hints for cost estimation only. IGNORED by\ngeneration — the generate endpoints measure inputs themselves (e.g.\nffprobing reference videos) and bill from those measurements."
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to turn on/off audio.\nNot all models support audio, not all models have a choice.\nSome models will default this to true, others will default it to false,\nso it's best to be explicit."
          },
          "idempotency_token": {
            "type": [
              "string",
              "null"
            ],
            "description": "REQUIRED (even if marked optional)\nIdempotency token to prevent duplicate requests."
          },
          "model": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonVideoModel",
                "description": "REQUIRED (even if marked optional)\nWhich model to use."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Some models support negative text prompts."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The text prompt for the video generation."
          },
          "quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality",
                "description": "The quality to use."
              }
            ]
          },
          "reference_audio_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference audio (optional)."
          },
          "reference_character_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CharacterToken"
            },
            "description": "Optional character tokens to reference in the prompt.\nCharacters are referenced in prompts as @CharacterName."
          },
          "reference_image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference images (optional)."
          },
          "reference_video_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Reference videos (optional)."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "The resolution to use."
              }
            ]
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Starting keyframe (optional)."
              }
            ]
          },
          "video_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "How many videos to generate.",
            "minimum": 0
          }
        }
      },
      "OmniGenVideoCostResponse": {
        "type": "object",
        "description": "Response body for the omni-gen video cost estimate endpoint.",
        "required": [
          "success",
          "is_free",
          "is_unlimited",
          "is_rate_limited",
          "has_watermark"
        ],
        "properties": {
          "cost_in_credits": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in credits.",
            "minimum": 0
          },
          "cost_in_usd_cents": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Estimated cost in USD cents.",
            "minimum": 0
          },
          "failures_are_refunded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether failures are refunded.\nTrue: 100% yes\nFalse: 100% no\nNone: Unknown or variable"
          },
          "has_watermark": {
            "type": "boolean",
            "description": "Whether the output will have a watermark."
          },
          "is_free": {
            "type": "boolean",
            "description": "Whether the generation is free for this user/plan."
          },
          "is_rate_limited": {
            "type": "boolean",
            "description": "Whether the user is rate-limited."
          },
          "is_unlimited": {
            "type": "boolean",
            "description": "Whether the user has unlimited generations."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenVideoGenerateResponse": {
        "type": "object",
        "description": "Response body for the omni-gen video generation endpoint.",
        "required": [
          "success",
          "inference_job_token",
          "all_job_tokens"
        ],
        "properties": {
          "all_job_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InferenceJobToken"
            },
            "description": "All job tokens created by this request (including the primary).\nFor single-job requests this will contain just one element matching\n`inference_job_token`. For batch requests (eg. KinoviWeb with\nmultiple order IDs) this will contain all of them."
          },
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenVideoModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "aspect_ratio_default": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio"
              }
            ]
          },
          "aspect_ratio_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonAspectRatio"
            }
          },
          "audio_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "audio_references_max_total_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "audio_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "batch_size_default": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "batch_size_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "batch_size_min": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "batch_size_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "int32",
              "minimum": 0
            }
          },
          "bitrate_default": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonBitrate"
              }
            ]
          },
          "bitrate_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonBitrate"
            }
          },
          "character_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "character_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "default_quality": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonQuality"
              }
            ]
          },
          "duration_seconds_default": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "duration_seconds_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "duration_seconds_max_with_image_references": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Specific maximum when image references are used,\neg. Grok limits to 10 seconds in this mode.",
            "minimum": 0
          },
          "duration_seconds_min": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "duration_seconds_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "int32",
              "minimum": 0
            }
          },
          "ending_keyframe_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "extra_info": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model."
          },
          "extra_info_short": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional details about the model. (Brief; only a few words.)"
          },
          "full_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "image_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "is_disabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "model": {
            "$ref": "#/components/schemas/CommonVideoModel"
          },
          "model_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ModelCreator"
              }
            ]
          },
          "negative_text_prompt_max_length": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "negative_text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "quality_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonQuality"
            }
          },
          "resolution_default": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution"
              }
            ]
          },
          "resolution_options": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CommonResolution"
            }
          },
          "show_generate_with_sound_toggle": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "starting_keyframe_required": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "starting_keyframe_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "text_prompt_max_length": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "text_prompt_supported": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "text_to_video_supported": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a pure text-to-video modality is supported"
          },
          "video_references_max": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "video_references_max_total_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "video_references_supported": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "OmniGenVideoModelProviderDetails": {
        "type": "object",
        "required": [
          "provider",
          "models"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenVideoProviderModelDetails"
            }
          },
          "provider": {
            "$ref": "#/components/schemas/GenerationProvider"
          }
        }
      },
      "OmniGenVideoModelsProvider": {
        "type": "string",
        "description": "The provider filter for the models endpoint.",
        "enum": [
          "artcraft",
          "all"
        ]
      },
      "OmniGenVideoModelsQuery": {
        "type": "object",
        "description": "Query string parameters for the video models endpoint.",
        "properties": {
          "provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenVideoModelsProvider",
                "description": "Which provider's models to list. Defaults to \"artcraft\" if absent."
              }
            ]
          }
        }
      },
      "OmniGenVideoModelsResponse": {
        "type": "object",
        "description": "Response body for the video models endpoint.\nTBD — fields will be added later.",
        "required": [
          "success",
          "models",
          "providers"
        ],
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenVideoModelDetails"
            },
            "description": "A list of all models: details, features, and capabilities"
          },
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OmniGenVideoModelProviderDetails"
            },
            "description": "Provider-by-provider model offering and capability list,\nwith possible capability overrides (future)"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniGenVideoProviderModelDetails": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "model": {
            "$ref": "#/components/schemas/CommonVideoModel"
          },
          "overrides": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OmniGenVideoModelDetails"
              }
            ]
          }
        }
      },
      "OmniUploadAudioMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `OmniUploadAudioMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "OmniUploadAudioMediaFileSuccessResponse": {
        "type": "object",
        "description": "Success response for the API-key authenticated audio upload endpoint\n(`POST /v1/omni_api/upload/audio`).\n\nNB: The request is a `multipart/form-data` body. Because the multipart form type is bound to the\nweb framework, it is declared alongside the handler in `storyteller_web` rather than here.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniUploadImageMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `OmniUploadImageMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "is_intermediate_system_file": {
            "type": [
              "boolean",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Whether this is a system file (e.g. cover files we should hide)"
          },
          "maybe_batch_token": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Batch associated with this image\nNOTE: Cannot set `is_intermediate_system_file = true` if this is set."
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_prompt_token": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Prompt associated with this image\nNOTE: Cannot set `is_intermediate_system_file = true` if this is set."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "OmniUploadImageMediaFileSuccessResponse": {
        "type": "object",
        "description": "Success response for the API-key authenticated image upload endpoint\n(`POST /v1/omni_api/upload/image`).\n\nNB: The request is a `multipart/form-data` body. Because the multipart form type is bound to the\nweb framework, it is declared alongside the handler in `storyteller_web` rather than here.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "OmniUploadVideoMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `OmniUploadVideoMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "is_intermediate_system_file": {
            "type": [
              "boolean",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Whether this is a system file (eg. cover files we should hide)"
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_prompt_token": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Prompt associated with this image\nNOTE: Cannot set `is_intermediate_system_file = true` if this is set."
          },
          "maybe_resample_fps": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Resample the video to this FPS.\nOnly certain values equal or under 24fps are allowed.",
            "minimum": 0
          },
          "maybe_scene_source_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: If an engine scene was used to generate this video, provide it here to create a link."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_trim_end_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Trim end offset in milliseconds.",
            "minimum": 0
          },
          "maybe_trim_start_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Trim start offset in milliseconds.",
            "minimum": 0
          },
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "OmniUploadVideoMediaFileSuccessResponse": {
        "type": "object",
        "description": "Success response for the API-key authenticated video upload endpoint\n(`POST /v1/omni_api/upload/video`).\n\nNB: The request is a `multipart/form-data` body. Because the multipart form type is bound to the\nweb framework, it is declared alongside the handler in `storyteller_web` rather than here.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "PaginationCursors": {
        "type": "object",
        "description": "Pagination by cursors\nThese types of pagination are for \"infinite scrolling\", which do not reveal a number of pages.\nThis is good so that investors and competitors cannot reveal how many database records we have.\nThis is typically used for \"discovery\" type pages, not user profiles.\n\nSee `PaginationPage` for the other type of pagination.",
        "required": [
          "cursor_is_reversed"
        ],
        "properties": {
          "cursor_is_reversed": {
            "type": "boolean",
            "description": "Details whether we're walking forward or backward."
          },
          "maybe_next": {
            "type": [
              "string",
              "null"
            ],
            "description": "The \"next\" cursor.\nThis is an opaque (typically even encrypted) handle."
          },
          "maybe_previous": {
            "type": [
              "string",
              "null"
            ],
            "description": "The \"previous\" cursor.\nThis is an opaque (typically even encrypted) handle."
          }
        }
      },
      "PaginationPage": {
        "type": "object",
        "description": "Pagination by page id\nThis type of pagination is by \"page id\" and \"page count\".\nThis should never be used to walk the entire public database as competitors and investors\ncan use it to glean information about the scale of our service.\nThis is best used for user profiles and scoped down results.\n\nSee `PaginationCursors` for the other type of pagination.",
        "required": [
          "current",
          "total_page_count"
        ],
        "properties": {
          "current": {
            "type": "integer",
            "description": "The current page number",
            "minimum": 0
          },
          "total_page_count": {
            "type": "integer",
            "description": "How many pages there are in total",
            "minimum": 0
          }
        }
      },
      "PaymentsNamespace": {
        "type": "string",
        "description": "NB: This will be used by a variety of tables (MySQL and sqlite)!\nKeep the max length to 16 characters.",
        "enum": [
          "artcraft",
          "fakeyou"
        ]
      },
      "PinnedMediaFile": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "origin_category",
          "origin_product_category",
          "origin",
          "is_user_upload",
          "is_intermediate_system_file",
          "stats",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight"
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available.\nMeasured in milliseconds.",
            "minimum": 0
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_origin_model_token": {
            "type": [
              "string",
              "null"
            ],
            "deprecated": true
          },
          "maybe_origin_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileOriginModelType"
              }
            ]
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          },
          "maybe_text_transcript": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text transcripts for TTS, etc."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "origin": {
            "$ref": "#/components/schemas/MediaFileOriginDetails",
            "description": "Details where the media file came from."
          },
          "origin_category": {
            "$ref": "#/components/schemas/MediaFileOriginCategory"
          },
          "origin_product_category": {
            "$ref": "#/components/schemas/MediaFileOriginProductCategory"
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the media file"
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PinnedModelWeightForList": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "title",
          "creator",
          "cover_image",
          "stats",
          "usage_count",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Information about the cover image."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset.",
            "deprecated": true
          },
          "maybe_ietf_language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will report it. Example values: \"en\", \"en-US\", \"es-419\", \"ja-JP\", etc."
          },
          "maybe_ietf_primary_language_subtag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will return the primary language subtag, e.g. \"en\", \"es\", etc. This excludes the\nportion after the dash (eg \"en-US\" would be reported as \"en\")."
          },
          "maybe_url_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional SEO-friendly URL slug for the model weight."
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the weights"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "usage_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the model has been used.\n(This isn't in SimpleEntityStats since that also applies to media files, etc.)",
            "minimum": 0
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "ProjectMediaFileInfo": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "project_type",
          "media_type",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "maybe_creator_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "User info"
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file.\nAlways `project` for this endpoint."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "project_type": {
            "$ref": "#/components/schemas/MediaFileProjectType",
            "description": "The specific kind of project document: 3D scene, mood board, etc."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Primary key identifier"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PromptContextSemanticType": {
        "type": "string",
        "description": "Used in the `prompt_context_items` table in a `VARCHAR(16)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "vid_start_frame",
          "vid_end_frame",
          "vid_ref",
          "imgsrc",
          "imgmask",
          "imgref",
          "imgref_character",
          "imgref_style",
          "imgref_bg",
          "audioref"
        ]
      },
      "PromptInfo": {
        "type": "object",
        "required": [
          "token",
          "prompt_type",
          "used_face_detailer",
          "used_upscaler",
          "lipsync_enabled",
          "lcm_disabled",
          "use_cinematic",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "lcm_disabled": {
            "type": "boolean",
            "description": "If LCM was disabled.\nOnly staff can do this for now."
          },
          "lipsync_enabled": {
            "type": "boolean",
            "description": "If lipsync was enabled.\nThis might not be present for all types of inference\nand typically only applies to video style transfer."
          },
          "maybe_aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonAspectRatio",
                "description": "OPTIONAL. The aspect ratio (eg. square, auto, wide_three_by_two, etc.)"
              }
            ]
          },
          "maybe_batch_count": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "OPTIONAL. The number of outputs to generate (0-255).",
            "minimum": 0
          },
          "maybe_bitrate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonBitrate",
                "description": "OPTIONAL. The output bitrate (eg. normal, high)."
              }
            ]
          },
          "maybe_context_images": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/GetPromptImageContextItem"
            },
            "description": "Context images (optional)"
          },
          "maybe_duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "OPTIONAL. The duration in seconds.",
            "minimum": 0
          },
          "maybe_frame_skip": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "If a frame skip setting was used.",
            "minimum": 0
          },
          "maybe_generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "OPTIONAL. Whether to generate audio."
          },
          "maybe_generation_mode": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonGenerationMode",
                "description": "OPTIONAL. The generation mode (eg. keyframe, reference, inpaint, etc.)"
              }
            ]
          },
          "maybe_generation_provider": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/GenerationProvider",
                "description": "The service provider used"
              }
            ]
          },
          "maybe_global_ipa_image_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "If a global IP Adapter Image was used, this is the details.\nNB: We can't easily query for this without another DB round trip,\nso the frontend should query for it instead."
              }
            ]
          },
          "maybe_inference_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "How many milliseconds it took to run generation.",
            "minimum": 0
          },
          "maybe_model_class": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonModelClass",
                "description": "The class of model used"
              }
            ]
          },
          "maybe_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonModelType",
                "description": "The type of model used"
              }
            ]
          },
          "maybe_moderator_fields": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptInfoModeratorFields",
                "description": "Fields that only moderators should see."
              }
            ]
          },
          "maybe_negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Negative prompt (optional)"
          },
          "maybe_positive_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Positive prompt (technically optional, but usually present)"
          },
          "maybe_resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CommonResolution",
                "description": "OPTIONAL. The resolution (eg. one_k, two_k, four_k, etc.)"
              }
            ]
          },
          "maybe_strength": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "If a \"strength\" was used.\nTypically only for video style transfer."
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "If a \"style\" was used, this is the name of it.\nThis might not be present for all types of inference\nand typically only applies to video style transfer."
              }
            ]
          },
          "maybe_travel_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Scheduled / travel prompt (optional)"
          },
          "prompt_type": {
            "$ref": "#/components/schemas/PromptType",
            "description": "The type of prompt.\nNote: Prompts may or may not be compatible across systems."
          },
          "token": {
            "$ref": "#/components/schemas/PromptToken"
          },
          "use_cinematic": {
            "type": "boolean",
            "description": "If the cinematic workflow was used.\nOnly staff can do this for now."
          },
          "used_face_detailer": {
            "type": "boolean",
            "description": "If a face detailer was used.\nThis might not be present for all types of inference\nand typically only applies to video style transfer."
          },
          "used_upscaler": {
            "type": "boolean",
            "description": "If an upscaling pass was used.\nThis might not be present for all types of inference\nand typically only applies to video style transfer."
          }
        }
      },
      "PromptInfoModeratorFields": {
        "type": "object",
        "properties": {
          "face_detailer_workflow": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of Yae's face detailer workflow\nUsed for logging and debugging by the art team."
          },
          "main_ipa_workflow": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of Yae's workflow\nUsed for logging and debugging by the art team."
          },
          "maybe_inference_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "How many milliseconds it took to run generation.",
            "minimum": 0
          },
          "upscaler_workflow": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of Yae's upscaler workflow\nUsed for logging and debugging by the art team."
          }
        }
      },
      "PromptToken": {
        "type": "string",
        "description": "The primary key for Prompts"
      },
      "PromptType": {
        "type": "string",
        "description": "Used in the `prompts` table in a `VARCHAR(16)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "artcraft_app",
          "stable_diffusion",
          "comfy_ui"
        ]
      },
      "QwenEdit2511EditImageAngleImageSize": {
        "type": "string",
        "enum": [
          "square",
          "square_hd",
          "portrait_four_three",
          "portrait_sixteen_nine",
          "landscape_four_three",
          "landscape_sixteen_nine"
        ]
      },
      "QwenEdit2511EditImageAngleNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "QwenEdit2511EditImageAngleRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token"
        ],
        "properties": {
          "additional_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional text prompt to guide the generation."
          },
          "horizontal_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Horizontal rotation angle in degrees."
          },
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image to edit with angle adjustment."
          },
          "image_size": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QwenEdit2511EditImageAngleImageSize",
                "description": "Output image size. Default is square_hd."
              }
            ]
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QwenEdit2511EditImageAngleNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          },
          "vertical_angle": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Vertical rotation angle in degrees."
          },
          "zoom": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Zoom level."
          }
        }
      },
      "QwenEdit2511EditImageAngleResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "QwenEditImageAcceleration": {
        "type": "string",
        "enum": [
          "None",
          "Regular",
          "High"
        ]
      },
      "QwenEditImageNumImages": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "three",
          "four"
        ]
      },
      "QwenEditImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token"
        ],
        "properties": {
          "acceleration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QwenEditImageAcceleration",
                "description": "Acceleration level for image generation.\nOptions: 'none', 'regular'. Higher acceleration increases speed.\n'regular' balances speed and quality. Default value: \"none\""
              }
            ]
          },
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image we're editing."
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "num_images": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QwenEditImageNumImages",
                "description": "Number of images to generate. Default is one."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "QwenEditImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RatingRow": {
        "type": "object",
        "required": [
          "entity_token",
          "entity_type",
          "rating_value"
        ],
        "properties": {
          "entity_token": {
            "type": "string",
            "description": "The passed token"
          },
          "entity_type": {
            "$ref": "#/components/schemas/UserRatingEntityType",
            "description": "The type of entity"
          },
          "rating_value": {
            "$ref": "#/components/schemas/UserRatingValue",
            "description": "The rating value. Unrated items will be \"neutral\"."
          }
        }
      },
      "RedeemBetaKeyRequest": {
        "type": "object",
        "required": [
          "beta_key"
        ],
        "properties": {
          "beta_key": {
            "type": "string"
          }
        }
      },
      "RedeemBetaKeySuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "ReengagementCandidateEntry": {
        "type": "object",
        "required": [
          "user_token",
          "username",
          "display_name",
          "email_gravatar_hash",
          "reengagement_score",
          "lifetime_net_spend_usd_cents",
          "is_active_subscriber"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "email_gravatar_hash": {
            "type": "string"
          },
          "is_active_subscriber": {
            "type": "boolean"
          },
          "lifetime_net_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "maybe_days_since_last_payment": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "maybe_last_payment_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "maybe_weeks_since_last_spend": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "reengagement_score": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "ReferralCodeEntry": {
        "type": "object",
        "required": [
          "token",
          "code",
          "code_lowercase",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "code_lowercase": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "token": {
            "$ref": "#/components/schemas/UserReferralCodeToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ReferrerUserDetails": {
        "type": "object",
        "required": [
          "token",
          "username",
          "display_name"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "RefreshMcpSessionRequest": {
        "type": "object",
        "required": [
          "private_refresh_token"
        ],
        "properties": {
          "private_refresh_token": {
            "$ref": "#/components/schemas/McpSessionRefreshToken",
            "description": "The session's CURRENT refresh token (from creation, or from the most recent refresh).\nA stale or wrong value is an error — refresh tokens rotate and are never replayable."
          }
        }
      },
      "RefreshMcpSessionSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "private_refresh_token"
        ],
        "properties": {
          "private_refresh_token": {
            "$ref": "#/components/schemas/McpSessionRefreshToken",
            "description": "The NEW refresh token to present on the next refresh. The one just used is now invalid —\nthe caller must store this replacement."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RemoveImageBackgroundRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Source of the file to remove the background from.\nIt must be an image."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "RemoveImageBackgroundResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "RenameFolderRequest": {
        "type": "object",
        "required": [
          "new_name"
        ],
        "properties": {
          "new_name": {
            "type": "string"
          }
        }
      },
      "RenameFolderSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "RenameMediaFileRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "New name for the media file.\nIf absent or empty string, the name will be cleared"
          }
        }
      },
      "RenameTagPathInfo": {
        "type": "object",
        "required": [
          "tag_token"
        ],
        "properties": {
          "tag_token": {
            "$ref": "#/components/schemas/TagToken"
          }
        }
      },
      "RenameTagRequest": {
        "type": "object",
        "required": [
          "new_tag_value"
        ],
        "properties": {
          "new_tag_value": {
            "type": "string",
            "description": "The new tag text (trimmed server-side). Both case-only changes and\nwholesale renames are allowed. Fails with 400 if the caller already\nhas a different tag with the same lowercased value."
          }
        }
      },
      "RenameTagSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "tag"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "tag": {
            "$ref": "#/components/schemas/TagDetails",
            "description": "The tag after the rename."
          }
        }
      },
      "RequestDetailsResponse": {
        "type": "object",
        "description": "Details about what the user requested for generation",
        "required": [
          "inference_category"
        ],
        "properties": {
          "inference_category": {
            "$ref": "#/components/schemas/InferenceCategory"
          },
          "maybe_lipsync_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JobDetailsLipsyncRequest",
                "description": "OPTIONAL. For lipsync jobs (face fusion and sad talker), this is additional\ninformation on the request."
              }
            ]
          },
          "maybe_live_portrait_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/JobDetailsLivePortraitRequest",
                "description": "OPTIONAL. For Live Portrait jobs, this is additional information on the request."
              }
            ]
          },
          "maybe_model_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. Title of the model, if it has one"
          },
          "maybe_model_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken"
              }
            ]
          },
          "maybe_raw_inference_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "OPTIONAL. If the result was TTS, this is the raw inference text."
          },
          "maybe_style_name": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StyleTransferName",
                "description": "OPTIONAL. For Comfy / Video Style Transfer jobs, this might include\nthe name of the selected style."
              }
            ]
          }
        }
      },
      "ResultDetailsResponse": {
        "type": "object",
        "description": "Details about the completed result (if any)",
        "required": [
          "entity_type",
          "entity_token",
          "media_links"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "type": "string"
          },
          "maybe_public_bucket_media_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "maybe_successfully_completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          }
        }
      },
      "RevokeMcpSessionSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "SearchFeaturedMediaFileListItem": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_featured",
          "is_user_upload",
          "is_intermediate_system_file",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_featured": {
            "type": "boolean"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight"
              }
            ]
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SearchFeaturedMediaFilesQueryParams": {
        "type": "object",
        "required": [
          "search_term"
        ],
        "properties": {
          "filter_engine_categories": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc."
          },
          "filter_media_classes": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - etc."
          },
          "filter_media_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf`\n  - etc."
          },
          "search_term": {
            "type": "string",
            "description": "REQUIRED: The search term.\n\nThis supports typeahead, but the request should still be debounced."
          }
        }
      },
      "SearchFeaturedMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchFeaturedMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SearchMediaFileListItem": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "public_bucket_path",
          "public_bucket_url",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_featured",
          "is_user_upload",
          "is_intermediate_system_file",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_featured": {
            "type": "boolean"
          },
          "is_intermediate_system_file": {
            "type": "boolean",
            "description": "The file was created by the system.\nThis includes files generated on the client side, like studio renders."
          },
          "is_user_upload": {
            "type": "boolean",
            "description": "The file was uploaded by the user.\nThis does not include files generated on the client side, like studio renders."
          },
          "maybe_animation_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileAnimationType",
                "description": "If this is an engine/3D asset for an animation or a rig that can\nbe animated with either (or both) skeletal or blend shape animations,\nthis describes the animation regime used or supported."
              }
            ]
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight"
              }
            ]
          },
          "maybe_engine_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileEngineCategory",
                "description": "If this is an engine/3D asset, this is the broad category (scene,\nanimation, etc.) of that object.\nThis can also be used for filtering in list/batch endpoints."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file: image, video, etc."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "public_bucket_path": {
            "type": "string",
            "description": "(DEPRECATED) URL path to the media file",
            "deprecated": true
          },
          "public_bucket_url": {
            "type": "string",
            "description": "(DEPRECATED) Full URL to the media file",
            "deprecated": true
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SearchMediaFilesQueryParams": {
        "type": "object",
        "required": [
          "search_term"
        ],
        "properties": {
          "filter_engine_categories": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileEngineCategory`.\n\nUsage:\n  - `?filter_engine_categories=scene`\n  - `?filter_engine_categories=animation,character,object`\n  - etc."
          },
          "filter_media_classes": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileClass`,\nwhich are the broad category of media files: image, video, etc.\n\nUsage:\n  - `?filter_media_classes=audio`\n  - `?filter_media_classes=image,video`\n  - etc."
          },
          "filter_media_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "NB: This can be one (or more comma-separated values) from `MediaFileType`,\nwhich are mimetype-like / format-like categories of media files: glb, gltf,\nscene_json, etc.\n\nUsage:\n  - `?filter_media_type=scene_json`\n  - `?filter_media_type=glb,gltf`\n  - etc."
          },
          "search_term": {
            "type": "string",
            "description": "REQUIRED: The search term.\n\nThis supports typeahead, but the request should still be debounced."
          }
        }
      },
      "SearchMediaFilesSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchMediaFileListItem"
            }
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SearchModelWeightsError": {
        "type": "string",
        "enum": [
          "ServerError"
        ]
      },
      "SearchModelWeightsRequest": {
        "type": "object",
        "required": [
          "search_term"
        ],
        "properties": {
          "ietf_language_subtag": {
            "type": [
              "string",
              "null"
            ]
          },
          "minimum_score": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "minimum": 0
          },
          "search_term": {
            "type": "string"
          },
          "sort_direction": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SearchModelWeightsSortDirection"
              }
            ]
          },
          "sort_field": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SearchModelWeightsSortField"
              }
            ]
          },
          "weight_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WeightsCategory"
              }
            ]
          },
          "weight_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WeightsType"
              }
            ]
          }
        }
      },
      "SearchModelWeightsSortDirection": {
        "type": "string",
        "enum": [
          "ascending",
          "descending"
        ]
      },
      "SearchModelWeightsSortField": {
        "type": "string",
        "enum": [
          "match_score",
          "created_at",
          "usage_count",
          "bookmark_count",
          "positive_rating_count"
        ]
      },
      "SearchModelWeightsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "weights"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "weights": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelWeightSearchResult"
            }
          }
        }
      },
      "SeedEdit3EditImageRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "image_media_token"
        ],
        "properties": {
          "image_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The image we're editing."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt to generate the image from."
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "SeedEdit3EditImageResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Seedance1p5ProMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "twenty_one_by_nine",
          "sixteen_by_nine",
          "four_by_three",
          "square",
          "three_by_four",
          "nine_by_sixteen",
          "auto"
        ]
      },
      "Seedance1p5ProMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "four_seconds",
          "five_seconds",
          "six_seconds",
          "seven_seconds",
          "eight_seconds",
          "nine_seconds",
          "ten_seconds",
          "eleven_seconds",
          "twelve_seconds"
        ]
      },
      "Seedance1p5ProMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Seedance1p5ProMultiFunctionVideoGenAspectRatio",
                "description": "Optional."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Seedance1p5ProMultiFunctionVideoGenDuration",
                "description": "Optional.\nDuration of the video.\n(this is uniform against all modes)"
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video.\nSource of the ending frame."
              }
            ]
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to generate audio."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Seedance1p5ProMultiFunctionVideoGenResolution",
                "description": "Optional."
              }
            ]
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video.\nSource of the starting frame.\nIf present, we're doing image-to-video.\nIf absent, we're doing text-to-video."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Seedance1p5ProMultiFunctionVideoGenResolution": {
        "type": "string",
        "enum": [
          "four_eighty_p",
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "Seedance1p5ProMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Seedance2p0AspectRatio": {
        "type": "string",
        "enum": [
          "landscape16x9",
          "portrait9x16",
          "square1x1",
          "standard4x3",
          "portrait3x4"
        ]
      },
      "Seedance2p0BatchCount": {
        "type": "string",
        "enum": [
          "one",
          "two",
          "four"
        ]
      },
      "Seedance2p0MultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Seedance 2.0 multi-function video generation (text-to-video, image-to-video, and reference-based).",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Seedance2p0AspectRatio",
                "description": "Video aspect ratio / resolution."
              }
            ]
          },
          "batch_count": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Seedance2p0BatchCount",
                "description": "Number of videos to generate."
              }
            ]
          },
          "duration_seconds": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Duration in seconds (4–15).",
            "minimum": 0
          },
          "end_frame_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional end frame image."
              }
            ]
          },
          "output_resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Seedance2p0OutputResolution",
                "description": "Output resolution quality tier (480p, 720p, 1080p)."
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text prompt."
          },
          "reference_audio_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Optional reference audio files."
          },
          "reference_character_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/CharacterToken"
            },
            "description": "Optional character tokens to reference in the prompt.\nCharacters are referenced in prompts as @CharacterName."
          },
          "reference_image_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Optional reference images (reference mode). When present, takes priority over start/end frames."
          },
          "reference_video_media_tokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/MediaFileToken"
            },
            "description": "Optional reference videos."
          },
          "start_frame_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional start frame image."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Seedance2p0MultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token",
          "all_inference_job_tokens"
        ],
        "properties": {
          "all_inference_job_tokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InferenceJobToken"
            },
            "description": "All inference job tokens for the batch (includes `inference_job_token` as the first entry)."
          },
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken",
            "description": "The first inference job token (always present)."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Seedance2p0OutputResolution": {
        "type": "string",
        "enum": [
          "four_eighty_p",
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "SeedanceVideoInfo": {
        "type": "object",
        "description": "Seedance (ByteDance) provenance from an embedded C2PA manifest.",
        "required": [
          "platform",
          "software_agent",
          "model_name",
          "is_fast",
          "is_lite",
          "generated_at"
        ],
        "properties": {
          "generated_at": {
            "type": "string",
            "description": "Raw generation timestamp string (RFC 3339)."
          },
          "is_fast": {
            "type": "boolean"
          },
          "is_lite": {
            "type": "boolean"
          },
          "maybe_cert_serial": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_claim_generator": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_claim_generator_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_digital_source_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_generated_at_utc": {
            "type": [
              "string",
              "null"
            ],
            "description": "Normalized RFC 3339 timestamp, when parseable."
          },
          "maybe_instance_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_log_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_log_id_decoded_hex": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_manifest_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Parsed version, e.g. `\"2.0\"` / `\"1.0\"`."
          },
          "maybe_signer_country": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signer_email": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signer_org_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_software_agent_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "model_name": {
            "type": "string",
            "description": "Full model identifier, e.g. `\"doubao-seedance-2-0-fast\"`."
          },
          "platform": {
            "type": "string",
            "description": "`\"volcengine\"` or `\"byteplus\"`."
          },
          "software_agent": {
            "type": "string",
            "description": "C2PA `softwareAgent`, e.g. `\"Volcengine_Ark_CN\"`."
          }
        }
      },
      "SessionInfoSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "logged_in"
        ],
        "properties": {
          "logged_in": {
            "type": "boolean"
          },
          "success": {
            "type": "boolean"
          },
          "user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SessionUserInfo"
              }
            ]
          }
        }
      },
      "SessionMediaFileInfo": {
        "type": "object",
        "required": [
          "token",
          "media_class",
          "media_type",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Information about the cover image. Many media files do not require a cover image,\ne.g. image files, video files with thumbnails, audio files, etc.\n3D files require them."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "maybe_creator_user": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "User info"
              }
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "The generation's prompt record, when there is one. Clients resolve it\nto display the original prompt and model."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or title of the media file (optional)"
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "The coarse-grained class of media file.\nFixed per endpoint (`mesh` or `splat`)."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media, including thumbnails, previews, and more."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Type of media will dictate which fields are populated and what\nthe frontend should display (eg. video player vs audio player).\nThis is closer in meaning to a \"mime type\"."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Primary key identifier"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SessionOnboardingState": {
        "type": "object",
        "required": [
          "email_not_set",
          "email_not_confirmed",
          "password_not_set",
          "username_not_customized"
        ],
        "properties": {
          "email_not_confirmed": {
            "type": "boolean",
            "description": "If true, the user hasn't confirmed their email."
          },
          "email_not_set": {
            "type": "boolean",
            "description": "If true, the user hasn't set their email."
          },
          "password_not_set": {
            "type": "boolean",
            "description": "If true, the user hasn't set their password."
          },
          "username_not_customized": {
            "type": "boolean",
            "description": "If true, the user hasn't set their username (the username they have is random)."
          }
        }
      },
      "SessionTokenInfoSuccessResponse": {
        "type": "object",
        "properties": {
          "maybe_signed_session": {
            "type": [
              "string",
              "null"
            ],
            "description": "A signed session that can be sent as a header, bypassing cookies.\nThis is useful for API clients that don't support cookies or Google\nbrowsers killing cross-domain cookies.\nSend this as the \"Session:\" header."
          }
        }
      },
      "SessionUserInfo": {
        "type": "object",
        "required": [
          "core_info",
          "user_token",
          "username",
          "display_name",
          "email_gravatar_hash",
          "onboarding",
          "can_access_studio",
          "maybe_feature_flags",
          "fakeyou_plan",
          "storyteller_stream_plan",
          "can_use_tts",
          "can_use_w2l",
          "can_delete_own_tts_results",
          "can_delete_own_w2l_results",
          "can_delete_own_account",
          "can_upload_tts_models",
          "can_upload_w2l_templates",
          "can_delete_own_tts_models",
          "can_delete_own_w2l_templates",
          "can_approve_w2l_templates",
          "can_edit_other_users_profiles",
          "can_edit_other_users_tts_models",
          "can_edit_other_users_w2l_templates",
          "can_delete_other_users_tts_models",
          "can_delete_other_users_tts_results",
          "can_delete_other_users_w2l_templates",
          "can_delete_other_users_w2l_results",
          "can_ban_users",
          "can_delete_users"
        ],
        "properties": {
          "can_access_studio": {
            "type": "boolean",
            "deprecated": true
          },
          "can_approve_w2l_templates": {
            "type": "boolean"
          },
          "can_ban_users": {
            "type": "boolean"
          },
          "can_delete_other_users_tts_models": {
            "type": "boolean"
          },
          "can_delete_other_users_tts_results": {
            "type": "boolean"
          },
          "can_delete_other_users_w2l_results": {
            "type": "boolean"
          },
          "can_delete_other_users_w2l_templates": {
            "type": "boolean"
          },
          "can_delete_own_account": {
            "type": "boolean"
          },
          "can_delete_own_tts_models": {
            "type": "boolean"
          },
          "can_delete_own_tts_results": {
            "type": "boolean"
          },
          "can_delete_own_w2l_results": {
            "type": "boolean"
          },
          "can_delete_own_w2l_templates": {
            "type": "boolean"
          },
          "can_delete_users": {
            "type": "boolean"
          },
          "can_edit_other_users_profiles": {
            "type": "boolean"
          },
          "can_edit_other_users_tts_models": {
            "type": "boolean"
          },
          "can_edit_other_users_w2l_templates": {
            "type": "boolean"
          },
          "can_upload_tts_models": {
            "type": "boolean"
          },
          "can_upload_w2l_templates": {
            "type": "boolean"
          },
          "can_use_tts": {
            "type": "boolean"
          },
          "can_use_w2l": {
            "type": "boolean"
          },
          "core_info": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "display_name": {
            "type": "string"
          },
          "email_gravatar_hash": {
            "type": "string"
          },
          "fakeyou_plan": {
            "$ref": "#/components/schemas/FakeYouPlan"
          },
          "maybe_feature_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserFeatureFlag"
            },
            "description": "Collection of feature / rollout flags\nThis is the proper place to detect if a user has access to some rollout (non-paywall) feature.\nNB: The BTreeSet maintains order so React doesn't introduce re-render state bugs when order changes",
            "uniqueItems": true
          },
          "onboarding": {
            "$ref": "#/components/schemas/SessionOnboardingState"
          },
          "storyteller_stream_plan": {
            "$ref": "#/components/schemas/StorytellerStreamPlan"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "SetFolderColorCodeRequest": {
        "type": "object",
        "properties": {
          "maybe_color_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "`None` clears the color tag."
          }
        }
      },
      "SetFolderColorCodeSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "SetFolderCoverImageRequest": {
        "type": "object",
        "properties": {
          "maybe_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "`None` clears the cover image. If set, the server resolves it to a\nusable cover-image media file token: image/video media files are\nused directly; other types fall back to the file's own\n`maybe_cover_image_media_file_token` (and fail if neither path\napplies)."
              }
            ]
          }
        }
      },
      "SetFolderCoverImageSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "maybe_resolved_cover_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "The media file token that ended up being stored as the cover image\n(may differ from the requested token if the server resolved through\nthe file's own cover image). `None` when the cover was cleared."
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SetFolderStarRequest": {
        "type": "object",
        "required": [
          "has_star"
        ],
        "properties": {
          "has_star": {
            "type": "boolean"
          }
        }
      },
      "SetFolderStarSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "SetMediaFileCoverImageRequest": {
        "type": "object",
        "properties": {
          "cover_image_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional media token for the image to set as the cover image\nIf absent or empty string, the cover image will be cleared."
              }
            ]
          }
        }
      },
      "SetMediaFileTagsPathInfo": {
        "type": "object",
        "required": [
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "SetMediaFileTagsRequest": {
        "type": "object",
        "description": "Exactly one of `maybe_tags` / `maybe_tags_list` must be set (400 if\nboth or neither). Tag text is trimmed and deduped case-insensitively;\nempty entries are dropped. Unlike `add`, sanitizing down to zero tags\nis allowed — it clears all tags from the media file.",
        "properties": {
          "maybe_tags": {
            "type": [
              "string",
              "null"
            ],
            "description": "Comma-separated tags, e.g. `\"cats, Sci-Fi, wallpaper\"`."
          },
          "maybe_tags_list": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Tags as a list. Entries are still trimmed."
          }
        }
      },
      "SetMediaFileTagsSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "tags",
          "removed_count"
        ],
        "properties": {
          "removed_count": {
            "type": "integer",
            "format": "int64",
            "description": "How many previously-attached tag links were removed because they\nweren't mentioned in the request. (Orphaned tags are not deleted.)",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDetails"
            },
            "description": "The media file's full tag set after the operation, with canonical\ntokens and fresh use counts."
          }
        }
      },
      "SetModelWeightCoverImagePathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          }
        }
      },
      "SetModelWeightCoverImageRequest": {
        "type": "object",
        "properties": {
          "cover_image_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken"
              }
            ]
          }
        }
      },
      "SetModelWeightCoverImageResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "SetUserRatingRequest": {
        "type": "object",
        "required": [
          "entity_type",
          "entity_token",
          "rating_value"
        ],
        "properties": {
          "entity_token": {
            "type": "string",
            "description": "Entity token is meant to be polymorphic. It can be a TTS model, TTS result, W2L template, ... anything."
          },
          "entity_type": {
            "$ref": "#/components/schemas/UserRatingEntityType",
            "description": "The type of the entity being rated."
          },
          "rating_value": {
            "$ref": "#/components/schemas/UserRatingValue"
          }
        }
      },
      "SetUserRatingResponse": {
        "type": "object",
        "required": [
          "success",
          "new_positive_rating_count_for_entity"
        ],
        "properties": {
          "new_positive_rating_count_for_entity": {
            "type": "integer",
            "description": "This is the new positive rating count (across all users) for the entity in question.\nThis does not include negative ratings.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SimpleEntityStats": {
        "type": "object",
        "description": "Simple stats that can be attached to any entity",
        "required": [
          "positive_rating_count",
          "bookmark_count"
        ],
        "properties": {
          "bookmark_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of bookmarks for this item",
            "minimum": 0
          },
          "positive_rating_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of positive ratings (or \"likes\") for this item",
            "minimum": 0
          }
        }
      },
      "SimpleGenericJsonSuccess": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "SimpleResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "Sora2MultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "nine_by_sixteen",
          "sixteen_by_nine"
        ]
      },
      "Sora2MultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "four_seconds",
          "eight_seconds",
          "twelve_seconds"
        ]
      },
      "Sora2MultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sora2MultiFunctionVideoGenAspectRatio",
                "description": "Optional."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sora2MultiFunctionVideoGenDuration",
                "description": "Optional\nDuration of the video\n(this is uniform against all modes)"
              }
            ]
          },
          "image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the starting frame\nIf present, we're doing image-to-video\nIf absent, we're doing text-to-video"
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sora2MultiFunctionVideoGenResolution",
                "description": "Optional."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Sora2MultiFunctionVideoGenResolution": {
        "type": "string",
        "enum": [
          "auto",
          "seven_twenty_p"
        ]
      },
      "Sora2MultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Sora2ProMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "nine_by_sixteen",
          "sixteen_by_nine"
        ]
      },
      "Sora2ProMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "four_seconds",
          "eight_seconds",
          "twelve_seconds"
        ]
      },
      "Sora2ProMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sora2ProMultiFunctionVideoGenAspectRatio",
                "description": "Optional."
              }
            ]
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sora2ProMultiFunctionVideoGenDuration",
                "description": "Optional\nDuration of the video\n(this is uniform against all modes)"
              }
            ]
          },
          "image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the starting frame\nIf present, we're doing image-to-video\nIf absent, we're doing text-to-video"
              }
            ]
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Sora2ProMultiFunctionVideoGenResolution",
                "description": "Optional."
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Sora2ProMultiFunctionVideoGenResolution": {
        "type": "string",
        "enum": [
          "auto",
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "Sora2ProMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "SoraVideoInfo": {
        "type": "object",
        "description": "OpenAI Sora provenance.",
        "required": [
          "producer"
        ],
        "properties": {
          "maybe_cert_serial": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_claim_generator": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_created_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_digital_source_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_instance_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_manifest_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_model_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "producer": {
            "type": "string",
            "description": "Always `\"OpenAI\"`."
          }
        }
      },
      "StaffAuditLogResponse": {
        "type": "object",
        "required": [
          "token",
          "audit_action",
          "staff_ip_address",
          "created_at"
        ],
        "properties": {
          "audit_action": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "maybe_entity_token": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_entity_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_target_display_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_target_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "staff_display_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "staff_ip_address": {
            "type": "string"
          },
          "staff_user_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserToken"
              }
            ]
          },
          "staff_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "token": {
            "$ref": "#/components/schemas/StaffAuditLogToken"
          }
        }
      },
      "StaffAuditLogToken": {
        "type": "string",
        "description": "The primary key for Staff Audit Logs"
      },
      "StatusAlertCategory": {
        "type": "string",
        "enum": [
          "down_for_maintenance"
        ]
      },
      "StatusAlertInfo": {
        "type": "object",
        "properties": {
          "maybe_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StatusAlertCategory",
                "description": "If an alert is set, this might be a key for a common i18n message to show."
              }
            ]
          },
          "maybe_message": {
            "type": [
              "string",
              "null"
            ],
            "description": "We can set an optional message to show to the frontend.\n\nThis field may or may not be set. If it's set, this is custom text that should\nbe displayed to the user. For example, we might tell the user when we'll be\nback online, etc. Both this field and `maybe_category` are optional.\n\nIf `maybe_category` is present, it should be a key for a predefined and\ninternationalized (i18n) message stored on the frontend.\n\nEither or both of these fields may be set."
          }
        }
      },
      "StatusAlertResponse": {
        "type": "object",
        "required": [
          "success",
          "refresh_interval_millis"
        ],
        "properties": {
          "maybe_alert": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StatusAlertInfo",
                "description": "If there's an alert, this will be set.\nThe sub keys are optional, but at least one of them will be set.\ni.e. we can have an alert with no message or no predefined category."
              }
            ]
          },
          "refresh_interval_millis": {
            "type": "integer",
            "description": "Tell the frontend client how fast to refresh their view of this list.\nDuring an attack, we may want this to go extremely slow.",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "StatusDetailsResponse": {
        "type": "object",
        "description": "Details about the ongoing job status",
        "required": [
          "status",
          "attempt_count",
          "requires_keepalive",
          "progress_percentage"
        ],
        "properties": {
          "attempt_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "maybe_assigned_cluster": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_assigned_worker": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_extra_status_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Extra, temporary status from Redis.\nThis can denote inference progress, and the Python code can write to it."
          },
          "maybe_failure_category": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FrontendFailureCategory",
                "description": "An enum the frontend can use to display localized/I18N error\nmessages. These pertain to both transient and permanent failures."
              }
            ]
          },
          "maybe_first_started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "progress_percentage": {
            "type": "integer",
            "format": "int32",
            "description": "This is an integer number between 0 and 100 (both inclusive) that\nreports the completeness.",
            "minimum": 0
          },
          "requires_keepalive": {
            "type": "boolean",
            "description": "Whether the frontend needs to maintain a keepalive check.\nThis is typically only for non-premium users."
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusPlus",
            "description": "Primary status from the database (a state machine)."
          }
        }
      },
      "StorytellerStreamPlan": {
        "type": "string",
        "enum": [
          "free",
          "basic",
          "standard",
          "pro"
        ]
      },
      "StyleTransferName": {
        "type": "string",
        "description": "This enum is not backed by a particular database table.\nIt's used in APIs and Jobs to agree upon ComfyUI style transfer style configurations.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "anime_2_5d",
          "anime_2d_flat",
          "cartoon_3d",
          "comic_book",
          "anime_ghibli",
          "ink_punk",
          "ink_splash",
          "ink_bw_style",
          "jojo_style",
          "paper_origami",
          "pixel_art",
          "pop_art",
          "realistic_1",
          "realistic_2",
          "anime_retro_neon",
          "anime_standard",
          "hr_giger",
          "simpsons",
          "carnage",
          "pastel_cute_anime",
          "bloom_lighting",
          "25d_horror",
          "creepy",
          "creepy_vhs",
          "trail_cam_footage",
          "old_black_white_movie",
          "horror_noir_black_white",
          "techno_noir_black_white",
          "black_white_20s",
          "cyberpunk_anime",
          "dragonball",
          "realistic_matrix",
          "realistic_cyberpunk",
          "dreamer"
        ]
      },
      "SubfolderPathInfo": {
        "type": "object",
        "required": [
          "folder_token"
        ],
        "properties": {
          "folder_token": {
            "$ref": "#/components/schemas/FolderToken"
          }
        }
      },
      "SubscriptionInfo": {
        "type": "object",
        "required": [
          "subscription_token",
          "namespace",
          "product_slug"
        ],
        "properties": {
          "namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace",
            "description": "Namespace for the subscription."
          },
          "next_bill_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "If the subscription is currently active, this is the next billing date."
          },
          "product_slug": {
            "type": "string",
            "description": "Local key for the subscription."
          },
          "subscription_end_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "If the subscription is set to cancel, this is the end date of the subscription."
          },
          "subscription_token": {
            "$ref": "#/components/schemas/UserSubscriptionToken",
            "description": "Unique token for the subscription."
          }
        }
      },
      "SubscriptionProductKey": {
        "type": "object",
        "required": [
          "namespace",
          "product_slug"
        ],
        "properties": {
          "namespace": {
            "$ref": "#/components/schemas/PaymentsNamespace",
            "description": "This should always be \"fakeyou\"."
          },
          "product_slug": {
            "type": "string",
            "description": "Possible values: fakeyou_plus, fakeyou_pro, fakeyou_elite, etc."
          }
        }
      },
      "TagDetails": {
        "type": "object",
        "description": "One tag as returned by every tags endpoint.",
        "required": [
          "tag_token",
          "tag_value",
          "tag_value_lowercase",
          "use_count"
        ],
        "properties": {
          "tag_token": {
            "$ref": "#/components/schemas/TagToken"
          },
          "tag_value": {
            "type": "string",
            "description": "The display value of the tag, as entered by its creator."
          },
          "tag_value_lowercase": {
            "type": "string",
            "description": "Lowercased form of `tag_value`. This is the tag's unique key\nwithin the creator's account."
          },
          "use_count": {
            "type": "integer",
            "format": "int32",
            "description": "Rollup statistic: how many media files currently carry this tag.",
            "minimum": 0
          }
        }
      },
      "TagMediaFileListItem": {
        "type": "object",
        "description": "One media file as it appears in the tag-scoped media file lists\n(untagged / tagged / with-tag). Same lean shape as the folder list\nitem. Intermediate system files are filtered out by the queries, so\nthe flag isn't part of the wire shape.",
        "required": [
          "token",
          "media_class",
          "media_type",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Cover image details. For files that don't carry their own cover\nimage, this still gives the deterministic default-cover spec\n(image_index + color_index) the frontend uses for placeholders."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_user_upload": {
            "type": "boolean"
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If this file was generated as part of a batch, the batch token —\nuseful for showing \"siblings\" in the UI."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available. Milliseconds.",
            "minimum": 0
          },
          "maybe_frame_height": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "maybe_frame_width": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Original pixel width / height for image and video files when known."
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "Link to the prompt"
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "Coarse-grained class (image / video / audio / dimensional)."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media itself (full URL, thumbnail template,\nvideo previews when applicable)."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Specific format (jpg, png, mp4, etc.) — closer to a MIME type."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TagToken": {
        "type": "string",
        "description": "The primary key for Prompts"
      },
      "TerminateInferenceJobPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          }
        }
      },
      "TerminateInferenceJobSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "TopSpenderEntry": {
        "type": "object",
        "required": [
          "user_token",
          "username",
          "display_name",
          "email_gravatar_hash",
          "gross_spend_usd_cents",
          "refund_usd_cents",
          "net_spend_usd_cents",
          "payment_count",
          "credits_granted"
        ],
        "properties": {
          "credits_granted": {
            "type": "integer",
            "format": "int64",
            "description": "Credits granted in the window.",
            "minimum": 0
          },
          "display_name": {
            "type": "string"
          },
          "email_gravatar_hash": {
            "type": "string"
          },
          "gross_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "description": "Sum of positive amounts in the window.",
            "minimum": 0
          },
          "net_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "description": "Gross minus refunds. Can be negative if refunds outweigh purchases."
          },
          "payment_count": {
            "type": "integer",
            "format": "int64",
            "description": "Number of positive money events in the window.",
            "minimum": 0
          },
          "refund_usd_cents": {
            "type": "integer",
            "format": "int64",
            "description": "Refund/chargeback magnitude in the window (positive number).",
            "minimum": 0
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "TopSpendersWindow": {
        "type": "string",
        "description": "Rolling aggregation window for the top spenders list.",
        "enum": [
          "24h",
          "7d",
          "14d",
          "30d",
          "60d",
          "90d",
          "180d",
          "365d"
        ]
      },
      "TopUserEntry": {
        "type": "object",
        "required": [
          "user_token",
          "username",
          "display_name",
          "email_gravatar_hash",
          "lifetime_net_spend_usd_cents",
          "net_spend_7d_usd_cents",
          "net_spend_14d_usd_cents",
          "net_spend_30d_usd_cents",
          "net_spend_60d_usd_cents",
          "net_spend_90d_usd_cents",
          "net_spend_this_year_usd_cents",
          "is_active_subscriber"
        ],
        "properties": {
          "display_name": {
            "type": "string"
          },
          "email_gravatar_hash": {
            "type": "string"
          },
          "is_active_subscriber": {
            "type": "boolean"
          },
          "lifetime_net_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "maybe_reengagement_score": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "net_spend_14d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_30d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_60d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_7d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_90d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_this_year_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "TopUsersWindow": {
        "type": "string",
        "description": "Net-spend window that selects which column `top_users_list` sorts by.",
        "enum": [
          "7d",
          "14d",
          "30d",
          "60d",
          "90d",
          "1y",
          "lifetime"
        ]
      },
      "UnfolderedMediaFileListItem": {
        "type": "object",
        "description": "One media file as it appears in the unfoldered list. Same lean shape as\nthe folder / tag list items. Intermediate system files are filtered out\nby the query, so the flag isn't part of the wire shape.",
        "required": [
          "token",
          "media_class",
          "media_type",
          "media_links",
          "cover_image",
          "creator_set_visibility",
          "is_user_upload",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/MediaFileCoverImageDetails",
            "description": "Cover image details. For files that don't carry their own cover\nimage, this still gives the deterministic default-cover spec\n(image_index + color_index) the frontend uses for placeholders."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "is_user_upload": {
            "type": "boolean"
          },
          "maybe_batch_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/BatchGenerationToken",
                "description": "If this file was generated as part of a batch, the batch token —\nuseful for showing \"siblings\" in the UI."
              }
            ]
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Duration for audio and video files, if available. Milliseconds.",
            "minimum": 0
          },
          "maybe_frame_height": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "maybe_frame_width": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Original pixel width / height for image and video files when known."
          },
          "maybe_original_filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_prompt_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptToken",
                "description": "Link to the prompt"
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "media_class": {
            "$ref": "#/components/schemas/MediaFileClass",
            "description": "Coarse-grained class (image / video / audio / mesh / splat / ...)."
          },
          "media_links": {
            "$ref": "#/components/schemas/MediaLinks",
            "description": "Rich CDN links to the media itself (full URL, thumbnail template,\nvideo previews when applicable)."
          },
          "media_type": {
            "$ref": "#/components/schemas/MediaFileType",
            "description": "Specific format (jpg, png, mp4, glb, etc.) — closer to a MIME type."
          },
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UpdateApiKeyRequest": {
        "type": "object",
        "properties": {
          "maybe_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "New description for the key. `None` clears it."
          }
        }
      },
      "UpdateApiKeySuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "UpdateGptImageJobStatusRequest": {
        "type": "object",
        "required": [
          "job_token",
          "job_status"
        ],
        "properties": {
          "images": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Base64-encoded image data.\nOnly present on success.\nIn the success case, there may be one or more images."
          },
          "job_status": {
            "$ref": "#/components/schemas/UpdatedJobStatus",
            "description": "How to mark the job.\nA subset of the job states that are relevant to image completion status."
          },
          "job_token": {
            "$ref": "#/components/schemas/InferenceJobToken",
            "description": "The token of the job we're updating."
          }
        }
      },
      "UpdateGptImageJobStatusSuccessResponse": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "UpdateProjectMultipartForm": {
        "type": "object",
        "description": "Form-multipart request fields for overwriting an existing project.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UpdateProjectMultipartForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The project JSON document"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UpdateWeightPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "weight_token"
        ],
        "properties": {
          "weight_token": {
            "type": "string"
          }
        }
      },
      "UpdateWeightRequest": {
        "type": "object",
        "description": "**IMPORTANT**: This endpoint handles sparse (by-field) updates rather than wholesale updates.\nThat is, if a field is absent, we do not update it (as opposed to clearing it).",
        "properties": {
          "cover_image_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "The media file token of the *image* media file.\nSet to *empty string* to clear the cover image."
              }
            ]
          },
          "description_markdown": {
            "type": [
              "string",
              "null"
            ]
          },
          "language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "An IETF BCP47 language tag, e.g.: \"en\", \"en-US\",\n\"es-419\", \"ja-JP\", etc.\nThis is only applicable to TTS and Voice Conversion models.\nIf set for other model types, the endpoint will 400."
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility"
              }
            ]
          }
        }
      },
      "UpdatedJobStatus": {
        "type": "string",
        "enum": [
          "started",
          "complete_success",
          "complete_failure",
          "attempt_failed",
          "dead"
        ]
      },
      "UploadAudioMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadAudioMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadAudioMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadImageMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadImageMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "is_intermediate_system_file": {
            "type": [
              "boolean",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Whether this is a system file (e.g. cover files we should hide)"
          },
          "maybe_batch_token": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Batch associated with this image\nNOTE: Cannot set `is_intermediate_system_file = true` if this is set."
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_prompt_token": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Prompt associated with this image\nNOTE: Cannot set `is_intermediate_system_file = true` if this is set."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadImageMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadMediaSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewEditor2dProjectSuccessResponse": {
        "type": "object",
        "description": "Response for saving a new 2D editor document project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token for the newly created project media file. Use it to query the\nproject and to save subsequent updates via the update endpoint."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewEngineAssetFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadNewEngineAssetFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file",
          "engine_category"
        ],
        "properties": {
          "engine_category": {
            "type": "string",
            "format": "binary",
            "description": "The category of engine asset: character, animation, etc.\nSee the documentation on `MediaFileEngineCategory`."
          },
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_animation_type": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: the type of animation (if this is a character or animation)\nSee the documentation on `MediaFileAnimationType`."
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The duration, for files that are animations.",
            "minimum": 0
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Visibility of the scene"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadNewEngineAssetSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewMoodBoardProjectSuccessResponse": {
        "type": "object",
        "description": "Response for saving a new mood board project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token for the newly created project media file. Use it to query the\nproject and to save subsequent updates via the update endpoint."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewScene3dProjectSuccessResponse": {
        "type": "object",
        "description": "Response for saving a new 3D scene project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token for the newly created project media file. Use it to query the\nproject and to save subsequent updates via the update endpoint."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewSceneMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadNewSceneMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Visibility of the scene"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadNewSceneMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewVideoMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadNewVideoMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "is_intermediate_system_file": {
            "type": [
              "boolean",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Whether this is a system file (eg. cover files we should hide)"
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\").\nIf set, `is_user_upload` will be false and `is_intermediate_system_file` will be forced false."
          },
          "maybe_prompt_token": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Prompt associated with this image\nNOTE: Cannot set `is_intermediate_system_file = true` if this is set."
          },
          "maybe_resample_fps": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Resample the video to this FPS.\nOnly certain values equal or under 24fps are allowed.",
            "minimum": 0
          },
          "maybe_scene_source_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: If an engine scene was used to generate this video, provide it here to create a link."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_trim_end_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Trim end offset in milliseconds.",
            "minimum": 0
          },
          "maybe_trim_start_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Trim start offset in milliseconds.",
            "minimum": 0
          },
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadNewVideoMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadNewVideoTimelineProjectSuccessResponse": {
        "type": "object",
        "description": "Response for saving a new video editor timeline project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token for the newly created project media file. Use it to query the\nproject and to save subsequent updates via the update endpoint."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadPmxFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadPmxFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file",
          "engine_category"
        ],
        "properties": {
          "engine_category": {
            "type": "string",
            "format": "binary",
            "description": "The category of engine asset: character, animation, etc.\nSee the documentation on `MediaFileEngineCategory`."
          },
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_animation_type": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: the type of animation (if this is a character or animation)\nSee the documentation on `MediaFileAnimationType`."
          },
          "maybe_duration_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The duration, for files that are animations.",
            "minimum": 0
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Visibility of the scene"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadPmxSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadSavedSceneMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSavedSceneMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadSavedSceneMediaFilePathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "UploadSavedSceneMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadSceneSnapshotMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSceneSnapshotMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_scene_source_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: If the scene was snapshotted from a saved scene, this is a link to\nthe scene that generated the snapshot."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadSceneSnapshotMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The token of the snapshotted scene."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadSnapshotMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSnapshotMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "snapshot"
        ],
        "properties": {
          "maybe_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional: Visibility of the scene"
              }
            ]
          },
          "scene_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: If an engine scene was used to create this snapshot, provide it here to create a link"
              }
            ]
          },
          "snapshot": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded \"screenshot\" / \"snapshot\" of the engine scene"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadSnapshotMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "snapshot_media_token"
        ],
        "properties": {
          "snapshot_media_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The media token of the \"screenshot\" / \"snapshot\" we took."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadSpzMediaFileForm": {
        "type": "object",
        "description": "Form-multipart request fields for SPZ (Gaussian Splat) upload.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadSpzMediaFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded SPZ file"
          },
          "maybe_generation_provider": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The third-party generation provider (e.g. \"fal\", \"replicate\")."
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the Gaussian splat"
          },
          "maybe_visibility": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Visibility of the Gaussian splat"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadSpzMediaFileSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadStudioShotFileForm": {
        "type": "object",
        "description": "Form-multipart request fields.\n\nIF VIEWING DOCS, PLEASE SEE BOTTOM OF PAGE `UploadStudioShotFileForm` (Under \"Schema\") FOR DETAILS ON FIELDS AND NULLABILITY.",
        "required": [
          "uuid_idempotency_token",
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The uploaded file"
          },
          "maybe_frame_rate_fps": {
            "type": [
              "integer",
              "null"
            ],
            "format": "binary",
            "description": "Optional: The frame rate in fps.\nIf not provided, it will default to 12 fps.",
            "minimum": 0
          },
          "maybe_scene_source_media_file_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: If an engine scene was used to generate this video, provide it here to create a link."
              }
            ]
          },
          "maybe_title": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Title (name) of the scene"
          },
          "maybe_visibility": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional: Visibility of the scene"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "format": "binary",
            "description": "UUID for request idempotency"
          }
        }
      },
      "UploadStudioShotSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadUpdatedEditor2dProjectPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "UploadUpdatedEditor2dProjectSuccessResponse": {
        "type": "object",
        "description": "Response for overwriting an existing 2D editor project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token of the updated project media file (unchanged by the update)."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadUpdatedMoodBoardProjectPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "UploadUpdatedMoodBoardProjectSuccessResponse": {
        "type": "object",
        "description": "Response for overwriting an existing mood board project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token of the updated project media file (unchanged by the update)."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadUpdatedScene3dProjectPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "UploadUpdatedScene3dProjectSuccessResponse": {
        "type": "object",
        "description": "Response for overwriting an existing 3D scene project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token of the updated project media file (unchanged by the update)."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadUpdatedVideoTimelineProjectPathInfo": {
        "type": "object",
        "description": "For the URL PathInfo",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "$ref": "#/components/schemas/MediaFileToken"
          }
        }
      },
      "UploadUpdatedVideoTimelineProjectSuccessResponse": {
        "type": "object",
        "description": "Response for overwriting an existing video editor timeline project.",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "Token of the updated project media file (unchanged by the update)."
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadVideoMediaSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "media_file_token"
        ],
        "properties": {
          "media_file_token": {
            "$ref": "#/components/schemas/MediaFileToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "UploadVideoNoteToken": {
        "type": "string",
        "description": "The primary key for uploaded_video_notes."
      },
      "UploadedVideoNoteReportedModelType": {
        "type": "string",
        "description": "Used in the `uploaded_video_notes` table in a `VARCHAR(32)` field.\n\nThe model the note's submitter claims the video is. The variant set mirrors\n[`crate::common::generation::common_video_model::CommonVideoModel`].\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "grok_video",
          "grok_imagine_video",
          "grok_imagine_video_1p5",
          "kling_1p6_pro",
          "kling_2p1_pro",
          "kling_2p1_master",
          "kling_2p5_turbo_pro",
          "kling_2p6_pro",
          "kling_3p0_standard",
          "kling_3p0_pro",
          "happy_horse_1p0",
          "seedance_1p0_lite",
          "seedance_1p5_pro",
          "seedance_2p0",
          "seedance_2p0_fast",
          "seedance_2p0_bp",
          "seedance_2p0_bp_fast",
          "seedance_2p0_u",
          "seedance_2p0_u_fast",
          "seedance_2p0_bpu",
          "seedance_2p0_bpu_fast",
          "sora_2",
          "sora_2_pro",
          "veo_2",
          "veo_3",
          "veo_3_fast",
          "veo_3p1",
          "veo_3p1_fast"
        ]
      },
      "UploadedVideoNoteReportedWebsite": {
        "type": "string",
        "description": "Used in the `uploaded_video_notes` table in a `VARCHAR(32)` field.\n\nThe website / platform the note's submitter says the video came from.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "runway",
          "higgsfield",
          "krea",
          "open_art",
          "artcraft",
          "magnific",
          "free_pik"
        ]
      },
      "UploadedVideoToken": {
        "type": "string",
        "description": "The primary key for uploaded_videos."
      },
      "UserBookmarkDetailsForUserList": {
        "type": "object",
        "required": [
          "entity_type",
          "entity_token",
          "stats"
        ],
        "properties": {
          "entity_token": {
            "type": "string"
          },
          "entity_type": {
            "$ref": "#/components/schemas/UserBookmarkEntityType"
          },
          "maybe_media_file_data": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileData",
                "description": "This is only populated if the item is a media file."
              }
            ]
          },
          "maybe_summary_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_thumbnail_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_weight_data": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/WeightsData",
                "description": "This is only populated if the item is a model weight."
              }
            ]
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the bookmarked item"
          }
        }
      },
      "UserBookmarkEntityType": {
        "type": "string",
        "description": "Used in the `user_bookmarks` table in a `VARCHAR(32)` field named `entity_type`.",
        "enum": [
          "user",
          "tts_model",
          "tts_result",
          "w2l_template",
          "w2l_result",
          "media_file",
          "model_weight",
          "voice_conversion_model",
          "zs_voice"
        ]
      },
      "UserBookmarkForEntityListItem": {
        "type": "object",
        "required": [
          "token",
          "user",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "token": {
            "$ref": "#/components/schemas/UserBookmarkToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/UserDetailsLight"
          }
        }
      },
      "UserBookmarkListItem": {
        "type": "object",
        "required": [
          "token",
          "details",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "details": {
            "$ref": "#/components/schemas/UserBookmarkDetailsForUserList"
          },
          "token": {
            "$ref": "#/components/schemas/UserBookmarkToken"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UserBookmarkToken": {
        "type": "string",
        "description": "The primary key for Audit Logs."
      },
      "UserDailySpendEntry": {
        "type": "object",
        "required": [
          "payments_namespace",
          "spend_date",
          "subscription_spend_usd_cents",
          "credits_spend_usd_cents",
          "gross_spend_usd_cents",
          "refund_usd_cents",
          "net_spend_usd_cents",
          "payment_count",
          "credits_granted",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "credits_granted": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "credits_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "gross_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "net_spend_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "payment_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "payments_namespace": {
            "type": "string"
          },
          "refund_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "spend_date": {
            "type": "string",
            "format": "date"
          },
          "subscription_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UserDefaultAvatarInfo": {
        "type": "object",
        "required": [
          "image_index",
          "color_index"
        ],
        "properties": {
          "color_index": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "image_index": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "UserDetailsLight": {
        "type": "object",
        "description": "Everything we need to refer to a user on the public web interface.",
        "required": [
          "user_token",
          "username",
          "display_name",
          "gravatar_hash",
          "default_avatar"
        ],
        "properties": {
          "default_avatar": {
            "$ref": "#/components/schemas/UserDefaultAvatarInfo",
            "description": "For users without a gravatar, we show one of our own avatars."
          },
          "display_name": {
            "type": "string",
            "description": "As of 2023-08-23, this is the username with capitalization\n(In the future, a display name can be customized by the user.)"
          },
          "gravatar_hash": {
            "type": "string",
            "description": "Email hash for Gravatar\nAlways set for now since login is email/username+password.\nIn the future this will need to become an optional *OR* be filled with a bogus hash."
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken",
            "description": "The token for the user"
          },
          "username": {
            "type": "string",
            "description": "The unique username someone logs in with\nAs of 2023-08-23, this is always lowercase"
          }
        }
      },
      "UserFeatureFlag": {
        "type": "string",
        "description": "Used in the `users` table in a `VARCHAR` field (stored as comma separated set).\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "explore_media",
          "studio",
          "upload_3d",
          "video_style_transfer",
          "sd_wl",
          "hh",
          "hh_rl",
          "referrals",
          "api_key",
          "minimax",
          "minimax_p"
        ]
      },
      "UserImpersonationRequestResponse": {
        "type": "object",
        "required": [
          "impersonator_user_token",
          "impersonator_username",
          "impersonator_display_name",
          "impersonated_user_token",
          "impersonated_username",
          "impersonated_display_name",
          "is_redeemed",
          "is_expired",
          "expires_at",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "impersonated_display_name": {
            "type": "string"
          },
          "impersonated_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "impersonated_username": {
            "type": "string"
          },
          "impersonator_display_name": {
            "type": "string"
          },
          "impersonator_user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "impersonator_username": {
            "type": "string"
          },
          "is_expired": {
            "type": "boolean"
          },
          "is_redeemed": {
            "type": "boolean"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UserProfileModeratorFields": {
        "type": "object",
        "required": [
          "is_banned",
          "maybe_feature_flags"
        ],
        "properties": {
          "is_banned": {
            "type": "boolean"
          },
          "maybe_feature_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserFeatureFlag"
            },
            "uniqueItems": true
          },
          "maybe_mod_comments": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_mod_user_token": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "UserProfileRecordForResponse": {
        "type": "object",
        "required": [
          "user_token",
          "core_info",
          "username",
          "display_name",
          "email_gravatar_hash",
          "default_avatar_index",
          "default_avatar_color_index",
          "profile_markdown",
          "profile_rendered_html",
          "user_role_slug",
          "disable_gravatar",
          "preferred_tts_result_visibility",
          "preferred_w2l_result_visibility",
          "badges",
          "created_at"
        ],
        "properties": {
          "badges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserProfileUserBadge"
            }
          },
          "cashapp_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "core_info": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "default_avatar_color_index": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "default_avatar_index": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "disable_gravatar": {
            "type": "boolean"
          },
          "discord_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "display_name": {
            "type": "string"
          },
          "email_gravatar_hash": {
            "type": "string"
          },
          "github_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_moderator_fields": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserProfileModeratorFields"
              }
            ]
          },
          "patreon_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "preferred_tts_result_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "preferred_w2l_result_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "profile_markdown": {
            "type": "string"
          },
          "profile_rendered_html": {
            "type": "string"
          },
          "twitch_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "twitter_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "user_role_slug": {
            "type": "string"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          },
          "username": {
            "type": "string"
          },
          "website_url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "UserProfileUserBadge": {
        "type": "object",
        "required": [
          "slug",
          "title",
          "description",
          "image_url",
          "granted_at"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "granted_at": {
            "type": "string",
            "format": "date-time"
          },
          "image_url": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        }
      },
      "UserRatingEntityType": {
        "type": "string",
        "description": "Used in the `user_ratings` table in a `VARCHAR(32)` field named `entity_type`.",
        "enum": [
          "media_file",
          "model_weight",
          "tts_model",
          "tts_result",
          "w2l_template",
          "w2l_result"
        ]
      },
      "UserRatingValue": {
        "type": "string",
        "description": "UserRatingValue\n\n- Used in the `user_ratings` table as an `ENUM` field named `rating_type`.\n- Used in the HTTP API.\n\nTo use this in a query, the query must have type annotations.\nSee: https://www.gitmemory.com/issue/launchbadge/sqlx/1241/847154375\neg. preferred_tts_result_visibility as `rating_type: enums::by_table::user_ratings::rating_type::UserRatingValue`\n\nSee also: https://docs.rs/sqlx/0.4.0-beta.1/sqlx/trait.Type.html\n\n*DO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY!*\n",
        "enum": [
          "neutral",
          "positive",
          "negative"
        ]
      },
      "UserReferralCodeToken": {
        "type": "string",
        "description": "The primary key for user referral codes."
      },
      "UserReferralResponse": {
        "type": "object",
        "required": [
          "invited_user",
          "referrer_user",
          "created_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "invited_user": {
            "$ref": "#/components/schemas/InvitedUserDetails"
          },
          "maybe_landing_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_referral_code_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserReferralCodeToken"
              }
            ]
          },
          "maybe_referral_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "referrer_user": {
            "$ref": "#/components/schemas/ReferrerUserDetails"
          }
        }
      },
      "UserSignupMethod": {
        "type": "string",
        "description": "Used in the `users` table in a `VARCHAR(16)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "email_password",
          "google_sign_in",
          "stripe_checkout"
        ]
      },
      "UserSignupSource": {
        "type": "string",
        "description": "Used in the `users` table in a `VARCHAR(255)` (which should be a `VARCHAR(16)`) field, `maybe_source`.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "artcraft",
          "artcraft_app",
          "artcraft_ai_web",
          "artcraft_ai_s",
          "artcraft_get_web",
          "artcraft_get_s",
          "fakeyou",
          "storyteller"
        ]
      },
      "UserSpendEventListEntry": {
        "type": "object",
        "required": [
          "token",
          "payments_namespace",
          "event_type",
          "amount_usd_cents",
          "payment_source",
          "is_production",
          "payment_occurred_at",
          "created_at"
        ],
        "properties": {
          "amount_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "event_type": {
            "type": "string"
          },
          "is_production": {
            "type": "boolean"
          },
          "maybe_credits_granted": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "maybe_display_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_email_gravatar_hash": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_source_object_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_charge_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_customer_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_invoice_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_stripe_payment_intent_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_user_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserToken"
              }
            ]
          },
          "maybe_username": {
            "type": [
              "string",
              "null"
            ]
          },
          "payment_occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "payment_source": {
            "type": "string"
          },
          "payments_namespace": {
            "type": "string"
          },
          "token": {
            "$ref": "#/components/schemas/UserSpendEventToken"
          }
        }
      },
      "UserSpendEventToken": {
        "type": "string",
        "description": "The primary key for user_spend_events"
      },
      "UserSpendSummaryView": {
        "type": "object",
        "description": "The full `user_spend_summaries` record for a user.",
        "required": [
          "payments_namespace",
          "user_token",
          "lifetime_gross_spend_usd_cents",
          "lifetime_subscription_spend_usd_cents",
          "lifetime_credits_spend_usd_cents",
          "lifetime_refund_usd_cents",
          "lifetime_net_spend_usd_cents",
          "lifetime_payment_count",
          "lifetime_refund_count",
          "first_spend_usd_cents",
          "last_spend_usd_cents",
          "net_spend_7d_usd_cents",
          "net_spend_prev_7d_usd_cents",
          "net_spend_14d_usd_cents",
          "net_spend_prev_14d_usd_cents",
          "net_spend_30d_usd_cents",
          "net_spend_prev_30d_usd_cents",
          "net_spend_60d_usd_cents",
          "net_spend_90d_usd_cents",
          "net_spend_this_year_usd_cents",
          "avg_weekly_net_spend_4w_usd_cents",
          "avg_weekly_net_spend_12w_usd_cents",
          "active_weeks_in_last_4",
          "active_weeks_in_last_8",
          "active_weeks_in_last_12",
          "active_weeks_in_last_24",
          "active_weeks_in_last_52",
          "consecutive_active_weeks",
          "consecutive_inactive_weeks",
          "is_active_subscriber",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "active_weeks_in_last_12": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "active_weeks_in_last_24": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "active_weeks_in_last_4": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "active_weeks_in_last_52": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "active_weeks_in_last_8": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "avg_weekly_net_spend_12w_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "avg_weekly_net_spend_4w_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "consecutive_active_weeks": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "consecutive_inactive_weeks": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "first_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "is_active_subscriber": {
            "type": "boolean"
          },
          "last_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "lifetime_credits_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "lifetime_gross_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "lifetime_net_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "lifetime_payment_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "lifetime_refund_count": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "lifetime_refund_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "lifetime_subscription_spend_usd_cents": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "maybe_days_since_first_payment": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "maybe_days_since_last_payment": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "maybe_first_payment_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "maybe_last_payment_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "maybe_reengagement_score": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "maybe_subscription_interval": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_weeks_since_last_spend": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "net_spend_14d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_30d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_60d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_7d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_90d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_prev_14d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_prev_30d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_prev_7d_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "net_spend_this_year_usd_cents": {
            "type": "integer",
            "format": "int64"
          },
          "payments_namespace": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "user_token": {
            "$ref": "#/components/schemas/UserToken"
          }
        }
      },
      "UserSubscriptionToken": {
        "type": "string",
        "description": "Primary key for the `user_subscriptions` table."
      },
      "UserToken": {
        "type": "string",
        "description": "The primary key for users."
      },
      "Veo3p1FastMultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "Veo3p1FastMultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "four_seconds",
          "six_seconds",
          "eight_seconds"
        ]
      },
      "Veo3p1FastMultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Veo3p1FastMultiFunctionVideoGenAspectRatio",
                "description": "Optional."
              }
            ]
          },
          "auto_fix": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nOnly for text-to-video"
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Veo3p1FastMultiFunctionVideoGenDuration",
                "description": "Optional\nDuration of the video\n(this is uniform against all modes)"
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the ending frame (if desired)"
              }
            ]
          },
          "enhance_prompt": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nOnly for text-to-video"
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nWhether to generate audio."
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional.\nOnly for text-to-video."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Veo3p1FastMultiFunctionVideoGenResolution",
                "description": "Optional."
              }
            ]
          },
          "seed": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional\nOnly for text-to-video"
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the starting frame\nIf present, we're doing image-to-video\nIf absent, we're doing text-to-video"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Veo3p1FastMultiFunctionVideoGenResolution": {
        "type": "string",
        "enum": [
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "Veo3p1FastMultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "Veo3p1MultiFunctionVideoGenAspectRatio": {
        "type": "string",
        "enum": [
          "auto",
          "sixteen_by_nine",
          "nine_by_sixteen"
        ]
      },
      "Veo3p1MultiFunctionVideoGenDuration": {
        "type": "string",
        "enum": [
          "four_seconds",
          "six_seconds",
          "eight_seconds"
        ]
      },
      "Veo3p1MultiFunctionVideoGenRequest": {
        "type": "object",
        "description": "Both text-to-video and image-to-video in one request.",
        "required": [
          "uuid_idempotency_token"
        ],
        "properties": {
          "aspect_ratio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Veo3p1MultiFunctionVideoGenAspectRatio",
                "description": "Optional."
              }
            ]
          },
          "auto_fix": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nOnly for text-to-video"
          },
          "duration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Veo3p1MultiFunctionVideoGenDuration",
                "description": "Optional\nDuration of the video\n(this is uniform against all modes)"
              }
            ]
          },
          "end_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the ending frame (if desired)"
              }
            ]
          },
          "enhance_prompt": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nOnly for text-to-video"
          },
          "generate_audio": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Optional\nWhether to generate audio."
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional.\nOnly for text-to-video."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "\"Required\".\nRequired downstream, but we'll coerce null to empty string.\nText prompt."
          },
          "resolution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Veo3p1MultiFunctionVideoGenResolution",
                "description": "Optional."
              }
            ]
          },
          "seed": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional\nOnly for text-to-video"
          },
          "start_frame_image_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional.\nOnly for image-to-video\nSource of the starting frame\nIf present, we're doing image-to-video\nIf absent, we're doing text-to-video"
              }
            ]
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Idempotency token to prevent duplicate requests."
          }
        }
      },
      "Veo3p1MultiFunctionVideoGenResolution": {
        "type": "string",
        "enum": [
          "seven_twenty_p",
          "ten_eighty_p"
        ]
      },
      "Veo3p1MultiFunctionVideoGenResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "VeoVideoInfo": {
        "type": "object",
        "description": "Google Veo provenance.",
        "required": [
          "producer",
          "has_c2pa_manifest",
          "has_synthid_watermark",
          "is_timestamped"
        ],
        "properties": {
          "has_c2pa_manifest": {
            "type": "boolean",
            "description": "Whether a full Google C2PA manifest is present (`false` = recognized only\nby the `encoder=Google` tag, C2PA likely stripped by a re-encode)."
          },
          "has_synthid_watermark": {
            "type": "boolean"
          },
          "is_timestamped": {
            "type": "boolean",
            "description": "Whether the manifest carries an RFC 3161 trusted timestamp."
          },
          "maybe_cert_serial": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_claim_generator": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_claim_generator_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_created_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_digital_source_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_encoder": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_instance_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_manifest_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_signer_ca": {
            "type": [
              "string",
              "null"
            ],
            "description": "Issuing intermediate-CA common name, e.g. `\"Google C2PA Media Services 1P ICA G3\"`."
          },
          "maybe_synthid_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "maybe_timestamp_authority": {
            "type": [
              "string",
              "null"
            ]
          },
          "producer": {
            "type": "string",
            "description": "Always `\"Google\"`."
          }
        }
      },
      "VideoInfoNoteRequest": {
        "type": "object",
        "description": "Request body for `POST /v1/video_info/notes`.",
        "required": [
          "uploaded_video_token"
        ],
        "properties": {
          "can_share_report": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the submitter consents to us sharing the report. Defaults to false."
          },
          "maybe_comments": {
            "type": [
              "string",
              "null"
            ],
            "description": "Free-form comments (trimmed; empty becomes absent)."
          },
          "maybe_email_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional contact email (trimmed; empty becomes absent)."
          },
          "maybe_filename": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original filename of the submitted clip."
          },
          "maybe_other_website": {
            "type": [
              "string",
              "null"
            ],
            "description": "Free-form website (trimmed; empty becomes absent)."
          },
          "maybe_reported_model_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Free-form custom model name (trimmed; empty becomes absent)."
          },
          "maybe_reported_model_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UploadedVideoNoteReportedModelType",
                "description": "The model type the submitter claims this video is (dropdown / enum)."
              }
            ]
          },
          "maybe_uploaded_video_note_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UploadVideoNoteToken",
                "description": "If present, update this existing note instead of creating a new one."
              }
            ]
          },
          "maybe_website": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UploadedVideoNoteReportedWebsite",
                "description": "The website / platform the video came from (dropdown / enum)."
              }
            ]
          },
          "uploaded_video_token": {
            "$ref": "#/components/schemas/UploadedVideoToken",
            "description": "The uploaded video this note is about. Required."
          },
          "was_scammed": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the submitter believes they were scammed. Defaults to false."
          }
        }
      },
      "VideoInfoNoteResponse": {
        "type": "object",
        "description": "Response body for `POST /v1/video_info/notes`.",
        "required": [
          "success",
          "uploaded_video_note_token"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "uploaded_video_note_token": {
            "$ref": "#/components/schemas/UploadVideoNoteToken",
            "description": "The created or updated note's token (e.g. `uvnote_…`)."
          }
        }
      },
      "VideoInfoReadOnlyForm": {
        "type": "object",
        "description": "Form-multipart request: a single video file under the `file` field.",
        "required": [
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The video file to inspect."
          }
        }
      },
      "VideoInfoReadOnlyResponse": {
        "type": "object",
        "description": "Response for `POST /v1/video_info/read_only`.\n\n[`kind`](Self::kind) names the detected provenance family; the matching\n`maybe_*` field carries its details (all others are `null`). `unrecognized`\nmeans no supported provenance was found — [`maybe_encoder`](Self::maybe_encoder)\nstill reports the container encoder tag when present (an `Lavf…` value means\nthe file was re-encoded through ffmpeg, which strips provenance).",
        "required": [
          "success",
          "kind"
        ],
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/VideoProvenanceKind",
            "description": "Which provenance family was detected (if any)."
          },
          "maybe_dreamina": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DreaminaVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Dreamina`]."
              }
            ]
          },
          "maybe_encoder": {
            "type": [
              "string",
              "null"
            ],
            "description": "The container `©too` encoder tag, e.g. `\"Lavf60.16.100\"` or `\"Google\"`."
          },
          "maybe_kling": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/KlingVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Kling`]."
              }
            ]
          },
          "maybe_seedance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SeedanceVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Seedance`]."
              }
            ]
          },
          "maybe_sora": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SoraVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Sora`]."
              }
            ]
          },
          "maybe_veo": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/VeoVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Veo`]."
              }
            ]
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "VideoInfoUploadForm": {
        "type": "object",
        "description": "Form-multipart request: a single video file under the `file` field.",
        "required": [
          "file"
        ],
        "properties": {
          "file": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "binary",
              "minimum": 0
            },
            "description": "The video file to inspect and store."
          },
          "maybe_filename": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Optional filename to record. Falls back to the uploaded file's own name."
          }
        }
      },
      "VideoInfoUploadResponse": {
        "type": "object",
        "description": "Response for `POST /v1/video_info/upload`. Mirrors\n[`crate::video_info::read_only::VideoInfoReadOnlyResponse`] and adds the\npersisted record's token.",
        "required": [
          "success",
          "uploaded_video_token",
          "kind"
        ],
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/VideoProvenanceKind",
            "description": "Which provenance family was detected (if any)."
          },
          "maybe_dreamina": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DreaminaVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Dreamina`]."
              }
            ]
          },
          "maybe_encoder": {
            "type": [
              "string",
              "null"
            ],
            "description": "The container `©too` encoder tag, e.g. `\"Lavf60.16.100\"` or `\"Google\"`."
          },
          "maybe_kling": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/KlingVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Kling`]."
              }
            ]
          },
          "maybe_seedance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SeedanceVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Seedance`]."
              }
            ]
          },
          "maybe_sora": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SoraVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Sora`]."
              }
            ]
          },
          "maybe_veo": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/VeoVideoInfo",
                "description": "Present when [`kind`](Self::kind) is [`VideoProvenanceKind::Veo`]."
              }
            ]
          },
          "success": {
            "type": "boolean"
          },
          "uploaded_video_token": {
            "$ref": "#/components/schemas/UploadedVideoToken",
            "description": "The persisted `uploaded_videos` record token (e.g. `uvt_…`)."
          }
        }
      },
      "VideoPreviews": {
        "type": "object",
        "required": [
          "still",
          "animated",
          "still_thumbnail_template",
          "animated_thumbnail_template"
        ],
        "properties": {
          "animated": {
            "type": "string",
            "format": "uri",
            "description": "An animated gif preview of the video."
          },
          "animated_thumbnail_template": {
            "type": "string",
            "description": "A template used to construct the animated thumbnail URL.\nReplace the string `{WIDTH}` with the desired width."
          },
          "still": {
            "type": "string",
            "format": "uri",
            "description": "A static single frame preview image of the video."
          },
          "still_thumbnail_template": {
            "type": "string",
            "description": "A template used to construct the still thumbnail URL.\nReplace the string `{WIDTH}` with the desired width."
          }
        }
      },
      "VideoProvenanceKind": {
        "type": "string",
        "description": "The recognized AI-video provenance family.",
        "enum": [
          "seedance",
          "veo",
          "sora",
          "dreamina",
          "kling",
          "unrecognized"
        ]
      },
      "Visibility": {
        "type": "string",
        "enum": [
          "public",
          "hidden",
          "private"
        ]
      },
      "VstError": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "BadInput"
            ],
            "properties": {
              "BadInput": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NotAuthorized"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ServerError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "RateLimited"
            ]
          }
        ]
      },
      "VstRequest": {
        "type": "object",
        "required": [
          "uuid_idempotency_token",
          "style",
          "input_file"
        ],
        "properties": {
          "creator_set_visibility": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Visibility",
                "description": "Optional visibility setting override."
              }
            ]
          },
          "disable_lcm": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Disable LCM\nDon't let ordinary users do this.\nNon-LCM workflows take a long time."
          },
          "enable_lipsync": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable lipsyncing in the workflow"
          },
          "frame_skip": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "If you'd like to skip frames.\n\nMeaning:\n * 1 = not skipping frames.\n * 2 = skipping every 2nd, etc.\n\nThe default, if not specified, is 2, which means\nevery 2nd frame is skipped.",
            "minimum": 0
          },
          "global_ipa_media_token": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: Global IP-Adapter image.\nThe underlying media file must be an image."
              }
            ]
          },
          "input_depth_file": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: the depth video file\nThe underlying media file must be a video."
              }
            ]
          },
          "input_file": {
            "$ref": "#/components/schemas/MediaFileToken",
            "description": "The input video media file (required)"
          },
          "input_normal_file": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: the normal map video file\nThe underlying media file must be a video."
              }
            ]
          },
          "input_outline_file": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MediaFileToken",
                "description": "Optional: the outline video file\nThe underlying media file must be a video."
              }
            ]
          },
          "negative_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The negative prompt (optional)"
          },
          "previews_enabled": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "If this workflow should try to write store preview frames"
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The positive prompt (optional)"
          },
          "remove_watermark": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Remove watermark from the output\nOnly for premium accounts"
          },
          "style": {
            "$ref": "#/components/schemas/StyleTransferName",
            "description": "The name of the style to invoke (required)"
          },
          "travel_prompt": {
            "type": [
              "string",
              "null"
            ],
            "description": "To use prompt traveling, enqueue a prompt with this.\n\nAn example of a prompt travel section:\n\n   \"50\": \"(explosion:1.4)\",\n   \"59\": \"(explosion:1.4)\",\n   \"60\": \"fire, smoke, ash\",\n   \"99\": \"fire, smoke, ash\",\n   \"100\": \"\",\n\nOn the interval 50-59 there will be explosion, on\nthe interval 60-99 there will be fire, smoke, ash.\nYou must set\n\nAlternatively, the main `prompt` field can have a\nprompt travel section if you end the main prompt\nwith `---` and then include a prompt travel text."
          },
          "trim_end_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional trim end in milliseconds",
            "minimum": 0
          },
          "trim_start_millis": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Optional trim start in milliseconds",
            "minimum": 0
          },
          "use_cinematic": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use the cinematic workflow\nDon't let ordinary users do this."
          },
          "use_cogvideo": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use cogvideo"
          },
          "use_face_detailer": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use face detailer\nOnly for premium accounts"
          },
          "use_lipsync": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use lipsync in the workflow",
            "deprecated": true
          },
          "use_strength": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "Use Strength of the style transfer\nMust be between 0.0 (match source) and 1.0 (maximum dreaming).\nThe default, if not sent, is 1.0."
          },
          "use_upscaler": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Use video upscaler\nOnly for premium accounts"
          },
          "uuid_idempotency_token": {
            "type": "string",
            "description": "Entropy for request de-duplication (required)"
          }
        }
      },
      "VstSuccessResponse": {
        "type": "object",
        "required": [
          "success",
          "inference_job_token"
        ],
        "properties": {
          "inference_job_token": {
            "$ref": "#/components/schemas/InferenceJobToken"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "WalletLedgerEntryToken": {
        "type": "string",
        "description": "The primary key for wallet_ledger_entries"
      },
      "WalletLedgerEntryType": {
        "type": "string",
        "description": "Used in the `wallet_ledger_entries` table in a `VARCHAR(16)` field.\n\nDO NOT CHANGE VALUES WITHOUT A MIGRATION STRATEGY.",
        "enum": [
          "create",
          "credit_banked",
          "credit_monthly",
          "deduct_mixed",
          "deduct_banked",
          "deduct_monthly",
          "refund_banked",
          "staff_add_banked"
        ]
      },
      "WalletToken": {
        "type": "string",
        "description": "The primary key for wallets"
      },
      "Weight": {
        "type": "object",
        "required": [
          "weight_token",
          "weight_type",
          "weight_category",
          "title",
          "creator",
          "creator_set_visibility",
          "file_size_bytes",
          "file_checksum_sha2",
          "cover_image",
          "stats",
          "usage_count",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "cover_image": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Information about the cover image."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/UserDetailsLight"
          },
          "creator_set_visibility": {
            "$ref": "#/components/schemas/Visibility"
          },
          "file_checksum_sha2": {
            "type": "string"
          },
          "file_size_bytes": {
            "type": "integer",
            "format": "int32"
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset.",
            "deprecated": true
          },
          "maybe_ietf_language_tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will report it. Example values: \"en\", \"en-US\", \"es-419\", \"ja-JP\", etc."
          },
          "maybe_ietf_primary_language_subtag": {
            "type": [
              "string",
              "null"
            ],
            "description": "If this is a voice model (voice conversion, TTS, etc.) and a language has been set,\nthis will return the primary language subtag, e.g. \"en\", \"es\", etc. This excludes the\nportion after the dash (eg \"en-US\" would be reported as \"en\")."
          },
          "maybe_url_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional SEO-friendly URL slug for the model weight."
          },
          "stats": {
            "$ref": "#/components/schemas/SimpleEntityStats",
            "description": "Statistics about the weights"
          },
          "title": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "usage_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of times the model has been used.\n(This isn't in SimpleEntityStats since that also applies to media files, etc.)",
            "minimum": 0
          },
          "weight_category": {
            "type": "string"
          },
          "weight_token": {
            "$ref": "#/components/schemas/ModelWeightToken"
          },
          "weight_type": {
            "type": "string"
          }
        }
      },
      "WeightsCategory": {
        "type": "string",
        "enum": [
          "image_generation",
          "text_to_speech",
          "vocoder",
          "voice_conversion",
          "workflow_config"
        ]
      },
      "WeightsCoverImageDetails": {
        "type": "object",
        "description": "Everything we need to create a cover image.\nCover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset.",
        "required": [
          "default_cover"
        ],
        "properties": {
          "default_cover": {
            "$ref": "#/components/schemas/WeightsDefaultCoverInfo",
            "description": "For items without a cover image, we can use one of our own."
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "DEPRECATED. If a cover image is set, this is the path to the asset.",
            "deprecated": true
          },
          "maybe_cover_image_public_bucket_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "DEPRECATED. If a cover image is set, this is the URL to the asset.",
            "deprecated": true
          },
          "maybe_links": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CoverImageLinks",
                "description": "Links to the cover image (CDN direct link, thumbnail template)\nIf a cover image is set, this is the path to the asset.\nIf a cover image is not set, use the information in `default_cover` instead.\nRich CDN links to the media, including thumbnails, previews, and more."
              }
            ]
          }
        }
      },
      "WeightsData": {
        "type": "object",
        "required": [
          "title",
          "weight_type",
          "weight_category",
          "cover"
        ],
        "properties": {
          "cover": {
            "$ref": "#/components/schemas/WeightsCoverImageDetails",
            "description": "Details on the cover: defaults, possible custom image, etc."
          },
          "maybe_cover_image_public_bucket_path": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cover images are small descriptive images that can be set for any model.\nIf a cover image is set, this is the path to the asset."
          },
          "maybe_creator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserDetailsLight",
                "description": "Creator of the weight\nNB: Technically this should not be optional, but since the join is\nincredibly telescopic, we may as well make it optional for now."
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "weight_category": {
            "$ref": "#/components/schemas/WeightsCategory"
          },
          "weight_type": {
            "$ref": "#/components/schemas/WeightsType"
          }
        }
      },
      "WeightsDefaultCoverInfo": {
        "type": "object",
        "required": [
          "image_index",
          "color_index"
        ],
        "properties": {
          "color_index": {
            "type": "integer",
            "format": "int32",
            "description": "Which color to use.",
            "minimum": 0
          },
          "image_index": {
            "type": "integer",
            "format": "int32",
            "description": "Which image to show.",
            "minimum": 0
          }
        }
      },
      "WeightsType": {
        "type": "string",
        "enum": [
          "hifigan_tt2",
          "rvc_v2",
          "sd_1.5",
          "sdxl",
          "so_vits_svc",
          "tt2",
          "loRA",
          "vall_e",
          "comfy_ui",
          "gpt_so_vits"
        ]
      },
      "ZsVoiceDatasetToken": {
        "type": "string",
        "description": "The primary key for the  \"zs_voice_datasets\" table."
      }
    }
  }
}