From 7d1bf270efc4cf602e6cc630b1a2a5aa3889d40e Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Sat, 11 Apr 2026 23:33:00 -0400 Subject: [PATCH] chore: fix lint errors and typegen --- invokeai/frontend/web/openapi.json | 5513 ++++++++++++++++- .../frontend/web/src/services/api/schema.ts | 198 +- 2 files changed, 5217 insertions(+), 494 deletions(-) diff --git a/invokeai/frontend/web/openapi.json b/invokeai/frontend/web/openapi.json index af8476528d..f516d84aa0 100644 --- a/invokeai/frontend/web/openapi.json +++ b/invokeai/frontend/web/openapi.json @@ -6,6 +6,444 @@ "version": "1.0.0" }, "paths": { + "/api/v1/auth/status": { + "get": { + "tags": ["authentication"], + "summary": "Get Setup Status", + "description": "Check if initial administrator setup is required.\n\nReturns:\n SetupStatusResponse indicating whether setup is needed and multiuser mode status", + "operationId": "get_setup_status_api_v1_auth_status_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetupStatusResponse" + } + } + } + } + } + } + }, + "/api/v1/auth/login": { + "post": { + "tags": ["authentication"], + "summary": "Login", + "description": "Authenticate user and return access token.\n\nArgs:\n request: Login credentials (email and password)\n\nReturns:\n LoginResponse containing JWT token and user information\n\nRaises:\n HTTPException: 401 if credentials are invalid or user is inactive\n HTTPException: 403 if multiuser mode is disabled", + "operationId": "login_api_v1_auth_login_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginRequest", + "description": "Login credentials" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/v1/auth/logout": { + "post": { + "tags": ["authentication"], + "summary": "Logout", + "description": "Logout current user.\n\nCurrently a no-op since we use stateless JWT tokens. For token invalidation in\nfuture implementations, consider:\n- Token blacklist: Store invalidated tokens in Redis/database with expiration\n- Token versioning: Add version field to user record, increment on logout\n- Short-lived tokens: Use refresh token pattern with token rotation\n- Session storage: Track active sessions server-side for revocation\n\nArgs:\n current_user: The authenticated user (validates token)\n\nReturns:\n LogoutResponse indicating success", + "operationId": "logout_api_v1_auth_logout_post", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LogoutResponse" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + } + }, + "/api/v1/auth/me": { + "get": { + "tags": ["authentication"], + "summary": "Get Current User Info", + "description": "Get current authenticated user's information.\n\nArgs:\n current_user: The authenticated user's token data\n\nReturns:\n UserDTO containing user information\n\nRaises:\n HTTPException: 404 if user is not found (should not happen normally)", + "operationId": "get_current_user_info_api_v1_auth_me_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDTO" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + }, + "patch": { + "tags": ["authentication"], + "summary": "Update Current User", + "description": "Update the current user's own profile.\n\nTo change the password, both ``current_password`` and ``new_password`` must\nbe provided. The current password is verified before the change is applied.\n\nArgs:\n request: Profile fields to update\n current_user: The authenticated user\n\nReturns:\n The updated user\n\nRaises:\n HTTPException: 400 if current password is incorrect or new password is weak\n HTTPException: 404 if user not found", + "operationId": "update_current_user_api_v1_auth_me_patch", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserProfileUpdateRequest", + "description": "Profile fields to update" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDTO" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + } + }, + "/api/v1/auth/setup": { + "post": { + "tags": ["authentication"], + "summary": "Setup Admin", + "description": "Set up initial administrator account.\n\nThis endpoint can only be called once, when no admin user exists. It creates\nthe first admin user for the system.\n\nArgs:\n request: Admin account details (email, display_name, password)\n\nReturns:\n SetupResponse containing the created admin user\n\nRaises:\n HTTPException: 400 if admin already exists or password is weak\n HTTPException: 403 if multiuser mode is disabled", + "operationId": "setup_admin_api_v1_auth_setup_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetupRequest", + "description": "Admin account details" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetupResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/api/v1/auth/generate-password": { + "get": { + "tags": ["authentication"], + "summary": "Generate Password", + "description": "Generate a strong random password.\n\nReturns a cryptographically secure random password of 16 characters\ncontaining uppercase, lowercase, digits, and punctuation.", + "operationId": "generate_password_api_v1_auth_generate_password_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeneratePasswordResponse" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + } + }, + "/api/v1/auth/users": { + "get": { + "tags": ["authentication"], + "summary": "List Users", + "description": "List all users. Requires admin privileges.\n\nThe internal 'system' user (created for backward compatibility) is excluded\nfrom the results since it cannot be managed through this interface.\n\nReturns:\n List of all real users (system user excluded)", + "operationId": "list_users_api_v1_auth_users_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/UserDTO" + }, + "type": "array", + "title": "Response List Users Api V1 Auth Users Get" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + }, + "post": { + "tags": ["authentication"], + "summary": "Create User", + "description": "Create a new user. Requires admin privileges.\n\nArgs:\n request: New user details\n\nReturns:\n The created user\n\nRaises:\n HTTPException: 400 if email already exists or password is weak", + "operationId": "create_user_api_v1_auth_users_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUserCreateRequest", + "description": "New user details" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDTO" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + } + }, + "/api/v1/auth/users/{user_id}": { + "get": { + "tags": ["authentication"], + "summary": "Get User", + "description": "Get a user by ID. Requires admin privileges.\n\nArgs:\n user_id: The user ID\n\nReturns:\n The user\n\nRaises:\n HTTPException: 404 if user not found", + "operationId": "get_user_api_v1_auth_users__user_id__get", + "security": [ + { + "HTTPBearer": [] + } + ], + "parameters": [ + { + "name": "user_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "User ID", + "title": "User Id" + }, + "description": "User ID" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDTO" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": ["authentication"], + "summary": "Update User", + "description": "Update a user. Requires admin privileges.\n\nArgs:\n user_id: The user ID\n request: Fields to update\n\nReturns:\n The updated user\n\nRaises:\n HTTPException: 400 if password is weak\n HTTPException: 404 if user not found", + "operationId": "update_user_api_v1_auth_users__user_id__patch", + "security": [ + { + "HTTPBearer": [] + } + ], + "parameters": [ + { + "name": "user_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "User ID", + "title": "User Id" + }, + "description": "User ID" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminUserUpdateRequest", + "description": "User fields to update" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserDTO" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": ["authentication"], + "summary": "Delete User", + "description": "Delete a user. Requires admin privileges.\n\nAdmins can delete any user including other admins, but cannot delete the last\nremaining admin.\n\nArgs:\n user_id: The user ID\n\nRaises:\n HTTPException: 400 if attempting to delete the last admin\n HTTPException: 404 if user not found", + "operationId": "delete_user_api_v1_auth_users__user_id__delete", + "security": [ + { + "HTTPBearer": [] + } + ], + "parameters": [ + { + "name": "user_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "User ID", + "title": "User Id" + }, + "description": "User ID" + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, "/api/v1/utilities/dynamicprompts": { "post": { "tags": ["utilities"], @@ -267,6 +705,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -294,6 +735,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -339,12 +783,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -360,6 +810,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -472,6 +925,300 @@ } } }, + "/api/v2/models/get_by_hash": { + "get": { + "tags": ["model_manager"], + "summary": "Get Model Records By Hash", + "description": "Gets a model by its hash. This is useful for recalling models that were deleted and reinstalled,\nas the hash remains stable across reinstallations while the key (UUID) changes.", + "operationId": "get_model_records_by_hash", + "parameters": [ + { + "name": "hash", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "The hash of the model", + "title": "Hash" + }, + "description": "The hash of the model" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/Main_Diffusers_SD1_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_SD2_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_SDXL_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_SDXLRefiner_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_SD3_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_FLUX_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_Flux2_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_CogView4_Config" + }, + { + "$ref": "#/components/schemas/Main_Diffusers_ZImage_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_SD1_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_SD2_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_SDXL_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_SDXLRefiner_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Flux2_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_FLUX_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" + }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, + { + "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" + }, + { + "$ref": "#/components/schemas/Main_GGUF_Flux2_Config" + }, + { + "$ref": "#/components/schemas/Main_GGUF_FLUX_Config" + }, + { + "$ref": "#/components/schemas/Main_GGUF_ZImage_Config" + }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_SD1_Config" + }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_SD2_Config" + }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_SDXL_Config" + }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_FLUX_Config" + }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" + }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, + { + "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" + }, + { + "$ref": "#/components/schemas/VAE_Diffusers_SDXL_Config" + }, + { + "$ref": "#/components/schemas/VAE_Diffusers_Flux2_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Checkpoint_SD1_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Checkpoint_SD2_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Checkpoint_SDXL_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Checkpoint_FLUX_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Checkpoint_ZImage_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Diffusers_SD1_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Diffusers_SD2_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Diffusers_SDXL_Config" + }, + { + "$ref": "#/components/schemas/ControlNet_Diffusers_FLUX_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_SD1_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_SD2_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" + }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, + { + "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" + }, + { + "$ref": "#/components/schemas/LoRA_OMI_FLUX_Config" + }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_SD1_Config" + }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_SD2_Config" + }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" + }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" + }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_ZImage_Config" + }, + { + "$ref": "#/components/schemas/ControlLoRA_LyCORIS_FLUX_Config" + }, + { + "$ref": "#/components/schemas/T5Encoder_T5Encoder_Config" + }, + { + "$ref": "#/components/schemas/T5Encoder_BnBLLMint8_Config" + }, + { + "$ref": "#/components/schemas/Qwen3Encoder_Qwen3Encoder_Config" + }, + { + "$ref": "#/components/schemas/Qwen3Encoder_Checkpoint_Config" + }, + { + "$ref": "#/components/schemas/Qwen3Encoder_GGUF_Config" + }, + { + "$ref": "#/components/schemas/TI_File_SD1_Config" + }, + { + "$ref": "#/components/schemas/TI_File_SD2_Config" + }, + { + "$ref": "#/components/schemas/TI_File_SDXL_Config" + }, + { + "$ref": "#/components/schemas/TI_Folder_SD1_Config" + }, + { + "$ref": "#/components/schemas/TI_Folder_SD2_Config" + }, + { + "$ref": "#/components/schemas/TI_Folder_SDXL_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_InvokeAI_SD1_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_InvokeAI_SD2_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_InvokeAI_SDXL_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_Checkpoint_SD1_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_Checkpoint_SD2_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_Checkpoint_SDXL_Config" + }, + { + "$ref": "#/components/schemas/IPAdapter_Checkpoint_FLUX_Config" + }, + { + "$ref": "#/components/schemas/T2IAdapter_Diffusers_SD1_Config" + }, + { + "$ref": "#/components/schemas/T2IAdapter_Diffusers_SDXL_Config" + }, + { + "$ref": "#/components/schemas/Spandrel_Checkpoint_Config" + }, + { + "$ref": "#/components/schemas/CLIPEmbed_Diffusers_G_Config" + }, + { + "$ref": "#/components/schemas/CLIPEmbed_Diffusers_L_Config" + }, + { + "$ref": "#/components/schemas/CLIPVision_Diffusers_Config" + }, + { + "$ref": "#/components/schemas/SigLIP_Diffusers_Config" + }, + { + "$ref": "#/components/schemas/FLUXRedux_Checkpoint_Config" + }, + { + "$ref": "#/components/schemas/LlavaOnevision_Diffusers_Config" + }, + { + "$ref": "#/components/schemas/Unknown_Config" + } + ], + "title": "Response Get Model Records By Hash" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, "/api/v2/models/i/{key}": { "get": { "tags": ["model_manager"], @@ -546,6 +1293,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -573,6 +1323,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -618,12 +1371,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -639,6 +1398,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -779,6 +1541,11 @@ "summary": "Update Model Record", "description": "Update a model's config.", "operationId": "update_model_record", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "key", @@ -870,6 +1637,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -897,6 +1667,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -942,12 +1715,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -963,6 +1742,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -1106,6 +1888,11 @@ "summary": "Delete Model", "description": "Delete model record from database.\n\nThe configuration record will be removed. The corresponding weights files will be\ndeleted as well if they reside within the InvokeAI \"models\" directory.", "operationId": "delete_model", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "key", @@ -1145,6 +1932,11 @@ "summary": "Reidentify Model", "description": "Attempt to reidentify a model by re-probing its weights file.", "operationId": "reidentify_model", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "key", @@ -1213,6 +2005,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -1240,6 +2035,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -1285,12 +2083,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -1306,6 +2110,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -1586,6 +2393,11 @@ "tags": ["model_manager"], "summary": "Update Model Image", "operationId": "update_model_image", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "key", @@ -1637,6 +2449,11 @@ "tags": ["model_manager"], "summary": "Delete Model Image", "operationId": "delete_model_image", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "key", @@ -1708,7 +2525,58 @@ } } } - } + }, + "security": [ + { + "HTTPBearer": [] + } + ] + } + }, + "/api/v2/models/i/bulk_reidentify": { + "post": { + "tags": ["model_manager"], + "summary": "Bulk Reidentify Models", + "description": "Reidentify multiple models by re-probing their weights files.\n\nReturns a list of successfully reidentified keys and failed reidentifications with error messages.", + "operationId": "bulk_reidentify_models", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkReidentifyModelsRequest", + "description": "List of model keys to reidentify" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Models reidentified (possibly with some failures)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkReidentifyModelsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "security": [ + { + "HTTPBearer": [] + } + ] } }, "/api/v2/models/install": { @@ -1717,6 +2585,11 @@ "summary": "Install Model", "description": "Install a model using a string identifier.\n\n`source` can be any of the following.\n\n1. A path on the local filesystem ('C:\\users\\fred\\model.safetensors')\n2. A Url pointing to a single downloadable model file\n3. A HuggingFace repo_id with any of the following formats:\n - model/name\n - model/name:fp16:vae\n - model/name::vae -- use default precision\n - model/name:fp16:path/to/model.safetensors\n - model/name::path/to/model.safetensors\n\n`config` is a ModelRecordChanges object. Fields in this object will override\nthe ones that are probed automatically. Pass an empty object to accept\nall the defaults.\n\n`access_token` is an optional access token for use with Urls that require\nauthentication.\n\nModels will be downloaded, probed, configured and installed in a\nseries of background threads. The return object has `status` attribute\nthat can be used to monitor progress.\n\nSee the documentation for `import_model_record` for more information on\ninterpreting the job information returned by this route.", "operationId": "install_model", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "source", @@ -1843,6 +2716,11 @@ "summary": "Prune Model Install Jobs", "description": "Prune all completed and errored jobs from the install job list.", "operationId": "prune_model_install_jobs", + "security": [ + { + "HTTPBearer": [] + } + ], "responses": { "200": { "description": "Successful Response", @@ -1867,6 +2745,11 @@ "summary": "Install Hugging Face Model", "description": "Install a Hugging Face model using a string identifier.", "operationId": "install_hugging_face_model", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "source", @@ -1960,6 +2843,11 @@ "summary": "Cancel Model Install Job", "description": "Cancel the model install job(s) corresponding to the given job ID.", "operationId": "cancel_model_install_job", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "id", @@ -2202,6 +3090,11 @@ "summary": "Convert Model", "description": "Permanently convert a model into diffusers format, replacing the safetensors version.\nNote that during the conversion process the key and model hash will change.\nThe return value is the model configuration for the converted model.", "operationId": "convert_model", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "key", @@ -2270,6 +3163,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -2297,6 +3193,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -2342,12 +3241,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -2363,6 +3268,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -2564,7 +3472,12 @@ } } } - } + }, + "security": [ + { + "HTTPBearer": [] + } + ] } }, "/api/v2/models/hf_login": { @@ -2620,7 +3533,12 @@ } } } - } + }, + "security": [ + { + "HTTPBearer": [] + } + ] }, "delete": { "tags": ["model_manager"], @@ -2637,7 +3555,12 @@ } } } - } + }, + "security": [ + { + "HTTPBearer": [] + } + ] } }, "/api/v2/models/sync/orphaned": { @@ -2904,8 +3827,13 @@ "post": { "tags": ["images"], "summary": "Upload Image", - "description": "Uploads an image", + "description": "Uploads an image for the current user", "operationId": "upload_image", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "image_category", @@ -3063,8 +3991,13 @@ "get": { "tags": ["images"], "summary": "List Image Dtos", - "description": "Gets a list of image DTOs", + "description": "Gets a list of image DTOs for the current user", "operationId": "list_image_dtos", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "image_origin", @@ -3890,6 +4823,11 @@ "summary": "Get Image Names", "description": "Gets ordered list of image names with metadata for optimistic updates", "operationId": "get_image_names", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "image_origin", @@ -4080,8 +5018,13 @@ "post": { "tags": ["boards"], "summary": "Create Board", - "description": "Creates a board", + "description": "Creates a board for the current user", "operationId": "create_board", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "board_name", @@ -4122,8 +5065,13 @@ "get": { "tags": ["boards"], "summary": "List Boards", - "description": "Gets a list of boards", + "description": "Gets a list of boards for the current user, including shared boards. Admin users see all boards.", "operationId": "list_boards", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "order_by", @@ -4253,8 +5201,13 @@ "get": { "tags": ["boards"], "summary": "Get Board", - "description": "Gets a board", + "description": "Gets a board (user must have access to it)", "operationId": "get_board", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "board_id", @@ -4294,8 +5247,13 @@ "patch": { "tags": ["boards"], "summary": "Update Board", - "description": "Updates a board", + "description": "Updates a board (user must have access to it)", "operationId": "update_board", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "board_id", @@ -4346,8 +5304,13 @@ "delete": { "tags": ["boards"], "summary": "Delete Board", - "description": "Deletes a board", + "description": "Deletes a board (user must have access to it)", "operationId": "delete_board", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "board_id", @@ -4410,6 +5373,11 @@ "summary": "List All Board Image Names", "description": "Gets a list of images for a board", "operationId": "list_all_board_image_names", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "board_id", @@ -5034,8 +6002,13 @@ "post": { "tags": ["queue"], "summary": "Enqueue Batch", - "description": "Processes a batch and enqueues the output graphs for execution.", + "description": "Processes a batch and enqueues the output graphs for execution for the current user.", "operationId": "enqueue_batch", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5099,6 +6072,11 @@ "summary": "List All Queue Items", "description": "Gets all queue items", "operationId": "list_all_queue_items", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5218,6 +6196,11 @@ "summary": "Get Queue Items By Item Ids", "description": "Gets queue items for the specified queue item ids. Maintains order of item ids.", "operationId": "get_queue_items_by_item_ids", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5273,8 +6256,13 @@ "put": { "tags": ["queue"], "summary": "Resume", - "description": "Resumes session processor", + "description": "Resumes session processor. Admin only.", "operationId": "resume", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5316,8 +6304,13 @@ "put": { "tags": ["queue"], "summary": "Pause", - "description": "Pauses session processor", + "description": "Pauses session processor. Admin only.", "operationId": "pause", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5359,8 +6352,13 @@ "put": { "tags": ["queue"], "summary": "Cancel All Except Current", - "description": "Immediately cancels all queue items except in-processing items", + "description": "Immediately cancels all queue items except in-processing items. Non-admin users can only cancel their own items.", "operationId": "cancel_all_except_current", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5402,8 +6400,13 @@ "put": { "tags": ["queue"], "summary": "Delete All Except Current", - "description": "Immediately deletes all queue items except in-processing items", + "description": "Immediately deletes all queue items except in-processing items. Non-admin users can only delete their own items.", "operationId": "delete_all_except_current", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5445,8 +6448,13 @@ "put": { "tags": ["queue"], "summary": "Cancel By Batch Ids", - "description": "Immediately cancels all queue items from the given batch ids", + "description": "Immediately cancels all queue items from the given batch ids. Non-admin users can only cancel their own items.", "operationId": "cancel_by_batch_ids", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5498,8 +6506,13 @@ "put": { "tags": ["queue"], "summary": "Cancel By Destination", - "description": "Immediately cancels all queue items with the given origin", + "description": "Immediately cancels all queue items with the given destination. Non-admin users can only cancel their own items.", "operationId": "cancel_by_destination", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5552,8 +6565,13 @@ "put": { "tags": ["queue"], "summary": "Retry Items By Id", - "description": "Immediately cancels all queue items with the given origin", + "description": "Retries the given queue items. Users can only retry their own items unless they are an admin.", "operationId": "retry_items_by_id", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5610,8 +6628,13 @@ "put": { "tags": ["queue"], "summary": "Clear", - "description": "Clears the queue entirely, immediately canceling the currently-executing session", + "description": "Clears the queue entirely. Admin users clear all items; non-admin users only clear their own items. If there's a currently-executing item, users can only cancel it if they own it or are an admin.", "operationId": "clear", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5653,8 +6676,13 @@ "put": { "tags": ["queue"], "summary": "Prune", - "description": "Prunes all completed or errored queue items", + "description": "Prunes all completed or errored queue items. Non-admin users can only prune their own items.", "operationId": "prune", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5812,6 +6840,11 @@ "summary": "Get Queue Status", "description": "Gets the status of the session queue", "operationId": "get_queue_status", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5909,6 +6942,11 @@ "summary": "Get Queue Item", "description": "Gets a queue item", "operationId": "get_queue_item", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -5959,8 +6997,13 @@ "delete": { "tags": ["queue"], "summary": "Delete Queue Item", - "description": "Deletes a queue item", + "description": "Deletes a queue item. Users can only delete their own items unless they are an admin.", "operationId": "delete_queue_item", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -6011,8 +7054,13 @@ "put": { "tags": ["queue"], "summary": "Cancel Queue Item", - "description": "Deletes a queue item", + "description": "Cancels a queue item. Users can only cancel their own items unless they are an admin.", "operationId": "cancel_queue_item", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -6119,8 +7167,13 @@ "delete": { "tags": ["queue"], "summary": "Delete By Destination", - "description": "Deletes all items with the given destination", + "description": "Deletes all items with the given destination. Non-admin users can only delete their own items.", "operationId": "delete_by_destination", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -7184,8 +8237,13 @@ "get": { "tags": ["client_state"], "summary": "Get Client State By Key", - "description": "Gets the client state", + "description": "Gets the client state for the current user (or system user if not authenticated)", "operationId": "get_client_state_by_key", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -7193,10 +8251,10 @@ "required": true, "schema": { "type": "string", - "description": "The queue id to perform this operation on", + "description": "The queue id (ignored, kept for backwards compatibility)", "title": "Queue Id" }, - "description": "The queue id to perform this operation on" + "description": "The queue id (ignored, kept for backwards compatibility)" }, { "name": "key", @@ -7246,8 +8304,13 @@ "post": { "tags": ["client_state"], "summary": "Set Client State", - "description": "Sets the client state", + "description": "Sets the client state for the current user (or system user if not authenticated)", "operationId": "set_client_state", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -7255,10 +8318,10 @@ "required": true, "schema": { "type": "string", - "description": "The queue id to perform this operation on", + "description": "The queue id (ignored, kept for backwards compatibility)", "title": "Queue Id" }, - "description": "The queue id to perform this operation on" + "description": "The queue id (ignored, kept for backwards compatibility)" }, { "name": "key", @@ -7313,8 +8376,13 @@ "post": { "tags": ["client_state"], "summary": "Delete Client State", - "description": "Deletes the client state", + "description": "Deletes the client state for the current user (or system user if not authenticated)", "operationId": "delete_client_state", + "security": [ + { + "HTTPBearer": [] + } + ], "parameters": [ { "name": "queue_id", @@ -7322,10 +8390,10 @@ "required": true, "schema": { "type": "string", - "description": "The queue id to perform this operation on", + "description": "The queue id (ignored, kept for backwards compatibility)", "title": "Queue Id" }, - "description": "The queue id to perform this operation on" + "description": "The queue id (ignored, kept for backwards compatibility)" } ], "responses": { @@ -7352,6 +8420,105 @@ } } } + }, + "/api/v1/recall/{queue_id}": { + "post": { + "tags": ["recall"], + "summary": "Update Recall Parameters", + "description": "Update recallable parameters that can be recalled on the frontend.\n\nThis endpoint allows updating parameters such as prompt, model, steps, and other\ngeneration settings. These parameters are stored in client state and can be\naccessed by the frontend to populate UI elements.\n\nArgs:\n queue_id: The queue ID to associate these parameters with\n parameters: The RecallParameter object containing the parameters to update\n\nReturns:\n A dictionary containing the updated parameters and status\n\nExample:\n POST /api/v1/recall/{queue_id}\n {\n \"positive_prompt\": \"a beautiful landscape\",\n \"model\": \"sd-1.5\",\n \"steps\": 20,\n \"cfg_scale\": 7.5,\n \"width\": 512,\n \"height\": 512,\n \"seed\": 12345\n }", + "operationId": "update_recall_parameters", + "parameters": [ + { + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The queue id to perform this operation on", + "title": "Queue Id" + }, + "description": "The queue id to perform this operation on" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecallParameter", + "description": "Recall parameters to update" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Update Recall Parameters" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "get": { + "tags": ["recall"], + "summary": "Get Recall Parameters", + "description": "Retrieve all stored recall parameters for a given queue.\n\nReturns a dictionary of all recall parameters that have been set for the queue.\n\nArgs:\n queue_id: The queue ID to retrieve parameters for\n\nReturns:\n A dictionary containing all stored recall parameters", + "operationId": "get_recall_parameters", + "parameters": [ + { + "name": "queue_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The queue id to retrieve parameters for", + "title": "Queue Id" + }, + "description": "The queue id to retrieve parameters for" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Get Recall Parameters" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } } }, "components": { @@ -7447,6 +8614,97 @@ "$ref": "#/components/schemas/IntegerOutput" } }, + "AdminUserCreateRequest": { + "properties": { + "email": { + "type": "string", + "title": "Email", + "description": "User email address" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name", + "description": "Display name" + }, + "password": { + "type": "string", + "title": "Password", + "description": "User password" + }, + "is_admin": { + "type": "boolean", + "title": "Is Admin", + "description": "Whether user should have admin privileges", + "default": false + } + }, + "type": "object", + "required": ["email", "password"], + "title": "AdminUserCreateRequest", + "description": "Request body for admin to create a new user." + }, + "AdminUserUpdateRequest": { + "properties": { + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name", + "description": "Display name" + }, + "password": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Password", + "description": "New password" + }, + "is_admin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Admin", + "description": "Whether user should have admin privileges" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active", + "description": "Whether user account should be active" + } + }, + "type": "object", + "title": "AdminUserUpdateRequest", + "description": "Request body for admin to update any user." + }, "AlphaMaskToTensorInvocation": { "category": "conditioning", "class": "invocation", @@ -7520,6 +8778,1021 @@ "$ref": "#/components/schemas/MaskOutput" } }, + "AnimaConditioningField": { + "description": "An Anima conditioning tensor primitive value.\n\nAnima conditioning contains Qwen3 0.6B hidden states and T5-XXL token IDs,\nwhich are combined by the LLM Adapter inside the transformer.", + "properties": { + "conditioning_name": { + "description": "The name of conditioning tensor", + "title": "Conditioning Name", + "type": "string" + }, + "mask": { + "anyOf": [ + { + "$ref": "#/components/schemas/TensorField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The mask associated with this conditioning tensor for regional prompting. Excluded regions should be set to False, included regions should be set to True." + } + }, + "required": ["conditioning_name"], + "title": "AnimaConditioningField", + "type": "object" + }, + "AnimaConditioningOutput": { + "class": "output", + "description": "Base class for nodes that output an Anima text conditioning tensor.", + "properties": { + "conditioning": { + "$ref": "#/components/schemas/AnimaConditioningField", + "description": "Conditioning tensor", + "field_kind": "output", + "ui_hidden": false + }, + "type": { + "const": "anima_conditioning_output", + "default": "anima_conditioning_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "conditioning", "type", "type"], + "title": "AnimaConditioningOutput", + "type": "object" + }, + "AnimaDenoiseInvocation": { + "category": "image", + "class": "invocation", + "classification": "prototype", + "description": "Run the denoising process with an Anima model.\n\nUses rectified flow sampling with shift=3.0 and the Cosmos Predict2 DiT\nbackbone with integrated LLM Adapter for text conditioning.\n\nSupports txt2img, img2img (via latents input), and inpainting (via denoise_mask).", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "latents": { + "anyOf": [ + { + "$ref": "#/components/schemas/LatentsField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Latents tensor", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false + }, + "denoise_mask": { + "anyOf": [ + { + "$ref": "#/components/schemas/DenoiseMaskField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A mask of the region to apply the denoising process to. Values of 0.0 represent the regions to be fully denoised, and 1.0 represent the regions to be preserved.", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false + }, + "denoising_start": { + "default": 0.0, + "description": "When to start denoising, expressed a percentage of total steps", + "field_kind": "input", + "input": "any", + "maximum": 1, + "minimum": 0, + "orig_default": 0.0, + "orig_required": false, + "title": "Denoising Start", + "type": "number" + }, + "denoising_end": { + "default": 1.0, + "description": "When to stop denoising, expressed a percentage of total steps", + "field_kind": "input", + "input": "any", + "maximum": 1, + "minimum": 0, + "orig_default": 1.0, + "orig_required": false, + "title": "Denoising End", + "type": "number" + }, + "add_noise": { + "default": true, + "description": "Add noise based on denoising start.", + "field_kind": "input", + "input": "any", + "orig_default": true, + "orig_required": false, + "title": "Add Noise", + "type": "boolean" + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Anima transformer model.", + "field_kind": "input", + "input": "connection", + "orig_required": true, + "title": "Transformer" + }, + "positive_conditioning": { + "anyOf": [ + { + "$ref": "#/components/schemas/AnimaConditioningField" + }, + { + "items": { + "$ref": "#/components/schemas/AnimaConditioningField" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Positive conditioning tensor", + "field_kind": "input", + "input": "connection", + "orig_required": true, + "title": "Positive Conditioning" + }, + "negative_conditioning": { + "anyOf": [ + { + "$ref": "#/components/schemas/AnimaConditioningField" + }, + { + "items": { + "$ref": "#/components/schemas/AnimaConditioningField" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Negative conditioning tensor", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Negative Conditioning" + }, + "guidance_scale": { + "default": 4.5, + "description": "Guidance scale for classifier-free guidance. Recommended: 4.0-5.0 for Anima.", + "field_kind": "input", + "input": "any", + "minimum": 1.0, + "orig_default": 4.5, + "orig_required": false, + "title": "Guidance Scale", + "type": "number" + }, + "width": { + "default": 1024, + "description": "Width of the generated image.", + "field_kind": "input", + "input": "any", + "multipleOf": 8, + "orig_default": 1024, + "orig_required": false, + "title": "Width", + "type": "integer" + }, + "height": { + "default": 1024, + "description": "Height of the generated image.", + "field_kind": "input", + "input": "any", + "multipleOf": 8, + "orig_default": 1024, + "orig_required": false, + "title": "Height", + "type": "integer" + }, + "steps": { + "default": 30, + "description": "Number of denoising steps. 30 recommended for Anima.", + "exclusiveMinimum": 0, + "field_kind": "input", + "input": "any", + "orig_default": 30, + "orig_required": false, + "title": "Steps", + "type": "integer" + }, + "seed": { + "default": 0, + "description": "Randomness seed for reproducibility.", + "field_kind": "input", + "input": "any", + "orig_default": 0, + "orig_required": false, + "title": "Seed", + "type": "integer" + }, + "scheduler": { + "default": "euler", + "description": "Scheduler (sampler) for the denoising process.", + "enum": ["euler", "heun", "lcm"], + "field_kind": "input", + "input": "any", + "orig_default": "euler", + "orig_required": false, + "title": "Scheduler", + "type": "string", + "ui_choice_labels": { + "euler": "Euler", + "heun": "Heun (2nd order)", + "lcm": "LCM" + } + }, + "type": { + "const": "anima_denoise", + "default": "anima_denoise", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["image", "anima"], + "title": "Denoise - Anima", + "type": "object", + "version": "1.2.0", + "output": { + "$ref": "#/components/schemas/LatentsOutput" + } + }, + "AnimaImageToLatentsInvocation": { + "category": "image", + "class": "invocation", + "classification": "prototype", + "description": "Generates latents from an image using the Anima VAE (supports Wan 2.1 and FLUX VAE).", + "node_pack": "invokeai", + "properties": { + "board": { + "anyOf": [ + { + "$ref": "#/components/schemas/BoardField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The board to save the image to", + "field_kind": "internal", + "input": "direct", + "orig_required": false, + "ui_hidden": false + }, + "metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/MetadataField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional metadata to be saved with the image", + "field_kind": "internal", + "input": "connection", + "orig_required": false, + "ui_hidden": false + }, + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "image": { + "anyOf": [ + { + "$ref": "#/components/schemas/ImageField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image to encode.", + "field_kind": "input", + "input": "any", + "orig_required": true + }, + "vae": { + "anyOf": [ + { + "$ref": "#/components/schemas/VAEField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "VAE", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "type": { + "const": "anima_i2l", + "default": "anima_i2l", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["image", "latents", "vae", "i2l", "anima"], + "title": "Image to Latents - Anima", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/LatentsOutput" + } + }, + "AnimaLatentsToImageInvocation": { + "category": "latents", + "class": "invocation", + "classification": "prototype", + "description": "Generates an image from latents using the Anima VAE.\n\nSupports the Wan 2.1 QwenImage VAE (AutoencoderKLWan) with explicit\nlatent denormalization, and FLUX VAE as fallback.", + "node_pack": "invokeai", + "properties": { + "board": { + "anyOf": [ + { + "$ref": "#/components/schemas/BoardField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The board to save the image to", + "field_kind": "internal", + "input": "direct", + "orig_required": false, + "ui_hidden": false + }, + "metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/MetadataField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional metadata to be saved with the image", + "field_kind": "internal", + "input": "connection", + "orig_required": false, + "ui_hidden": false + }, + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "latents": { + "anyOf": [ + { + "$ref": "#/components/schemas/LatentsField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Latents tensor", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "vae": { + "anyOf": [ + { + "$ref": "#/components/schemas/VAEField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "VAE", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "type": { + "const": "anima_l2i", + "default": "anima_l2i", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["latents", "image", "vae", "l2i", "anima"], + "title": "Latents to Image - Anima", + "type": "object", + "version": "1.0.2", + "output": { + "$ref": "#/components/schemas/ImageOutput" + } + }, + "AnimaLoRACollectionLoader": { + "category": "model", + "class": "invocation", + "classification": "prototype", + "description": "Applies a collection of LoRAs to an Anima transformer.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "loras": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoRAField" + }, + { + "items": { + "$ref": "#/components/schemas/LoRAField" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "LoRA models and weights. May be a single LoRA or collection.", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "LoRAs" + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Transformer", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Transformer" + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Qwen3 Encoder" + }, + "type": { + "const": "anima_lora_collection_loader", + "default": "anima_lora_collection_loader", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["lora", "model", "anima"], + "title": "Apply LoRA Collection - Anima", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/AnimaLoRALoaderOutput" + } + }, + "AnimaLoRALoaderInvocation": { + "category": "model", + "class": "invocation", + "classification": "prototype", + "description": "Apply a LoRA model to an Anima transformer and/or Qwen3 text encoder.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "lora": { + "anyOf": [ + { + "$ref": "#/components/schemas/ModelIdentifierField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "LoRA model to load", + "field_kind": "input", + "input": "any", + "orig_required": true, + "title": "LoRA", + "ui_model_base": ["anima"], + "ui_model_type": ["lora"] + }, + "weight": { + "default": 0.75, + "description": "The weight at which the LoRA is applied to each model", + "field_kind": "input", + "input": "any", + "orig_default": 0.75, + "orig_required": false, + "title": "Weight", + "type": "number" + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Transformer", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Anima Transformer" + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Qwen3 Encoder" + }, + "type": { + "const": "anima_lora_loader", + "default": "anima_lora_loader", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["lora", "model", "anima"], + "title": "Apply LoRA - Anima", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/AnimaLoRALoaderOutput" + } + }, + "AnimaLoRALoaderOutput": { + "class": "output", + "description": "Anima LoRA Loader Output", + "properties": { + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Transformer", + "field_kind": "output", + "title": "Anima Transformer", + "ui_hidden": false + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "output", + "title": "Qwen3 Encoder", + "ui_hidden": false + }, + "type": { + "const": "anima_lora_loader_output", + "default": "anima_lora_loader_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "transformer", "qwen3_encoder", "type", "type"], + "title": "AnimaLoRALoaderOutput", + "type": "object" + }, + "AnimaModelLoaderInvocation": { + "category": "model", + "class": "invocation", + "classification": "prototype", + "description": "Loads an Anima model, outputting its submodels.\n\nAnima uses:\n- Transformer: Cosmos Predict2 DiT + LLM Adapter (from single-file checkpoint)\n- Qwen3 Encoder: Qwen3 0.6B (standalone single-file)\n- VAE: AutoencoderKLQwenImage / Wan 2.1 VAE (standalone single-file or FLUX VAE)\n- T5 Encoder: T5-XXL model (only the tokenizer submodel is used, for LLM Adapter token IDs)", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "model": { + "$ref": "#/components/schemas/ModelIdentifierField", + "description": "Anima main model (transformer + LLM adapter).", + "field_kind": "input", + "input": "direct", + "orig_required": true, + "title": "Transformer", + "ui_model_base": ["anima"], + "ui_model_type": ["main"] + }, + "vae_model": { + "$ref": "#/components/schemas/ModelIdentifierField", + "description": "Standalone VAE model. Anima uses a Wan 2.1 / QwenImage VAE (16-channel). A FLUX VAE can also be used as a compatible fallback.", + "field_kind": "input", + "input": "direct", + "orig_required": true, + "title": "VAE", + "ui_model_type": ["vae"] + }, + "qwen3_encoder_model": { + "$ref": "#/components/schemas/ModelIdentifierField", + "description": "Standalone Qwen3 0.6B Encoder model.", + "field_kind": "input", + "input": "direct", + "orig_required": true, + "title": "Qwen3 Encoder", + "ui_model_type": ["qwen3_encoder"] + }, + "t5_encoder_model": { + "$ref": "#/components/schemas/ModelIdentifierField", + "description": "T5-XXL encoder model. The tokenizer submodel is used for Anima text encoding.", + "field_kind": "input", + "input": "direct", + "orig_required": true, + "title": "T5 Encoder", + "ui_model_type": ["t5_encoder"] + }, + "type": { + "const": "anima_model_loader", + "default": "anima_model_loader", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["model", "vae_model", "qwen3_encoder_model", "t5_encoder_model", "type", "id"], + "tags": ["model", "anima"], + "title": "Main Model - Anima", + "type": "object", + "version": "1.3.0", + "output": { + "$ref": "#/components/schemas/AnimaModelLoaderOutput" + } + }, + "AnimaModelLoaderOutput": { + "class": "output", + "description": "Anima model loader output.", + "properties": { + "transformer": { + "$ref": "#/components/schemas/TransformerField", + "description": "Transformer", + "field_kind": "output", + "title": "Transformer", + "ui_hidden": false + }, + "qwen3_encoder": { + "$ref": "#/components/schemas/Qwen3EncoderField", + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "output", + "title": "Qwen3 Encoder", + "ui_hidden": false + }, + "vae": { + "$ref": "#/components/schemas/VAEField", + "description": "VAE", + "field_kind": "output", + "title": "VAE", + "ui_hidden": false + }, + "t5_encoder": { + "$ref": "#/components/schemas/T5EncoderField", + "description": "T5 tokenizer and text encoder", + "field_kind": "output", + "title": "T5 Encoder", + "ui_hidden": false + }, + "type": { + "const": "anima_model_loader_output", + "default": "anima_model_loader_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "transformer", "qwen3_encoder", "vae", "t5_encoder", "type", "type"], + "title": "AnimaModelLoaderOutput", + "type": "object" + }, + "AnimaTextEncoderInvocation": { + "category": "conditioning", + "class": "invocation", + "classification": "prototype", + "description": "Encodes and preps a prompt for an Anima image.\n\nUses Qwen3 0.6B for hidden state extraction and T5-XXL tokenizer for\ntoken IDs (no T5 model weights needed). Both are combined by the\nLLM Adapter inside the Anima transformer during denoising.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Text prompt to encode.", + "field_kind": "input", + "input": "any", + "orig_required": true, + "title": "Prompt", + "ui_component": "textarea" + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_required": true, + "title": "Qwen3 Encoder" + }, + "t5_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/T5EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "T5 tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_required": true, + "title": "T5 Encoder" + }, + "mask": { + "anyOf": [ + { + "$ref": "#/components/schemas/TensorField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A mask defining the region that this conditioning prompt applies to.", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false + }, + "type": { + "const": "anima_text_encoder", + "default": "anima_text_encoder", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["prompt", "conditioning", "anima"], + "title": "Prompt - Anima", + "type": "object", + "version": "1.3.0", + "output": { + "$ref": "#/components/schemas/AnimaConditioningOutput" + } + }, "AnyModelConfig": { "oneOf": [ { @@ -7570,6 +9843,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -7597,6 +9873,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -7642,12 +9921,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -7663,6 +9948,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -8043,6 +10331,7 @@ "flux2", "cogview4", "z-image", + "anima", "unknown" ], "title": "BaseModelType", @@ -8586,6 +10875,11 @@ "title": "Board Name", "description": "The name of the board." }, + "user_id": { + "type": "string", + "title": "User Id", + "description": "The user ID of the board owner." + }, "created_at": { "anyOf": [ { @@ -8654,12 +10948,25 @@ "type": "integer", "title": "Asset Count", "description": "The number of assets in the board." + }, + "owner_username": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner Username", + "description": "The username of the board owner (for admin view)." } }, "type": "object", "required": [ "board_id", "board_name", + "user_id", "created_at", "updated_at", "cover_image_name", @@ -9633,6 +11940,47 @@ "title": "BulkDownloadStartedEvent", "type": "object" }, + "BulkReidentifyModelsRequest": { + "properties": { + "keys": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Keys", + "description": "List of model keys to reidentify" + } + }, + "type": "object", + "required": ["keys"], + "title": "BulkReidentifyModelsRequest", + "description": "Request body for bulk model reidentification." + }, + "BulkReidentifyModelsResponse": { + "properties": { + "succeeded": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Succeeded", + "description": "List of successfully reidentified model keys" + }, + "failed": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array", + "title": "Failed", + "description": "List of failed reidentifications with error messages" + } + }, + "type": "object", + "required": ["succeeded", "failed"], + "title": "BulkReidentifyModelsResponse", + "description": "Response body for bulk model reidentification." + }, "CLIPEmbed_Diffusers_G_Config": { "properties": { "key": { @@ -10817,6 +13165,69 @@ "$ref": "#/components/schemas/ImageOutput" } }, + "CanvasOutputInvocation": { + "category": "canvas", + "class": "invocation", + "classification": "stable", + "description": "Outputs an image to the canvas staging area.\n\nUse this node in workflows intended for canvas workflow integration.\nConnect the final image of your workflow to this node to send it\nto the canvas staging area when run via 'Run Workflow on Canvas'.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": false, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "image": { + "anyOf": [ + { + "$ref": "#/components/schemas/ImageField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image to process", + "field_kind": "input", + "input": "any", + "orig_required": true + }, + "type": { + "const": "canvas_output", + "default": "canvas_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["canvas", "output", "image"], + "title": "Canvas Output", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/ImageOutput" + } + }, "CanvasPasteBackInvocation": { "category": "image", "class": "invocation", @@ -11941,15 +14352,15 @@ }, "collection": { "default": [], - "description": "The collection, will be provided on execution", + "description": "An optional collection to append to", "field_kind": "input", - "input": "any", + "input": "connection", "items": {}, "orig_default": [], "orig_required": false, "title": "Collection", "type": "array", - "ui_hidden": true + "ui_type": "CollectionField" }, "type": { "const": "collect", @@ -11962,7 +14373,7 @@ "required": ["type", "id"], "title": "CollectInvocation", "type": "object", - "version": "1.0.0", + "version": "1.1.0", "output": { "$ref": "#/components/schemas/CollectInvocationOutput" } @@ -13237,6 +15648,80 @@ "title": "ControlNetMetadataField", "type": "object" }, + "ControlNetRecallParameter": { + "properties": { + "model_name": { + "type": "string", + "title": "Model Name", + "description": "The name of the ControlNet/T2I Adapter/Control LoRA model" + }, + "image_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Image Name", + "description": "The filename of the control image in outputs/images" + }, + "weight": { + "type": "number", + "maximum": 2.0, + "minimum": -1.0, + "title": "Weight", + "description": "The weight for the control adapter", + "default": 1.0 + }, + "begin_step_percent": { + "anyOf": [ + { + "type": "number", + "maximum": 1.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Begin Step Percent", + "description": "When the control adapter is first applied (% of total steps)" + }, + "end_step_percent": { + "anyOf": [ + { + "type": "number", + "maximum": 1.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "End Step Percent", + "description": "When the control adapter is last applied (% of total steps)" + }, + "control_mode": { + "anyOf": [ + { + "type": "string", + "enum": ["balanced", "more_prompt", "more_control"] + }, + { + "type": "null" + } + ], + "title": "Control Mode", + "description": "The control mode (ControlNet only)" + } + }, + "type": "object", + "required": ["model_name"], + "title": "ControlNetRecallParameter", + "description": "ControlNet configuration for recall" + }, "ControlNet_Checkpoint_FLUX_Config": { "properties": { "key": { @@ -14488,7 +16973,11 @@ "z_image_txt2img", "z_image_img2img", "z_image_inpaint", - "z_image_outpaint" + "z_image_outpaint", + "anima_txt2img", + "anima_img2img", + "anima_inpaint", + "anima_outpaint" ], "type": "string" }, @@ -15880,6 +18369,79 @@ "$ref": "#/components/schemas/ImageOutput" } }, + "DecodeInvisibleWatermarkInvocation": { + "category": "image", + "class": "invocation", + "classification": "stable", + "description": "Decode an invisible watermark from an image.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "image": { + "anyOf": [ + { + "$ref": "#/components/schemas/ImageField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image to decode the watermark from", + "field_kind": "input", + "input": "any", + "orig_required": true + }, + "length": { + "default": 8, + "description": "The expected watermark length in bytes", + "field_kind": "input", + "input": "any", + "orig_default": 8, + "orig_required": false, + "title": "Length", + "type": "integer" + }, + "type": { + "const": "decode_watermark", + "default": "decode_watermark", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["image", "watermark"], + "title": "Decode Invisible Watermark", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/StringOutput" + } + }, "DeleteAllExceptCurrentResult": { "properties": { "deleted": { @@ -19321,11 +21883,272 @@ "tags": ["image", "flux", "flux2", "klein", "denoise"], "title": "FLUX2 Denoise", "type": "object", - "version": "1.3.0", + "version": "1.4.0", "output": { "$ref": "#/components/schemas/LatentsOutput" } }, + "Flux2KleinLoRACollectionLoader": { + "category": "model", + "class": "invocation", + "classification": "prototype", + "description": "Applies a collection of LoRAs to a FLUX.2 Klein transformer and/or Qwen3 text encoder.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "loras": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoRAField" + }, + { + "items": { + "$ref": "#/components/schemas/LoRAField" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "LoRA models and weights. May be a single LoRA or collection.", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "LoRAs" + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Transformer", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Transformer" + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Qwen3 Encoder" + }, + "type": { + "const": "flux2_klein_lora_collection_loader", + "default": "flux2_klein_lora_collection_loader", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["lora", "model", "flux", "klein", "flux2"], + "title": "Apply LoRA Collection - Flux2 Klein", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderOutput" + } + }, + "Flux2KleinLoRALoaderInvocation": { + "category": "model", + "class": "invocation", + "classification": "prototype", + "description": "Apply a LoRA model to a FLUX.2 Klein transformer and/or Qwen3 text encoder.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "lora": { + "anyOf": [ + { + "$ref": "#/components/schemas/ModelIdentifierField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "LoRA model to load", + "field_kind": "input", + "input": "any", + "orig_required": true, + "title": "LoRA", + "ui_model_base": ["flux2"], + "ui_model_type": ["lora"] + }, + "weight": { + "default": 0.75, + "description": "The weight at which the LoRA is applied to each model", + "field_kind": "input", + "input": "any", + "orig_default": 0.75, + "orig_required": false, + "title": "Weight", + "type": "number" + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Transformer", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Transformer" + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false, + "title": "Qwen3 Encoder" + }, + "type": { + "const": "flux2_klein_lora_loader", + "default": "flux2_klein_lora_loader", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["lora", "model", "flux", "klein", "flux2"], + "title": "Apply LoRA - Flux2 Klein", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderOutput" + } + }, + "Flux2KleinLoRALoaderOutput": { + "class": "output", + "description": "FLUX.2 Klein LoRA Loader Output", + "properties": { + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Transformer", + "field_kind": "output", + "title": "Transformer", + "ui_hidden": false + }, + "qwen3_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3EncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3 tokenizer and text encoder", + "field_kind": "output", + "title": "Qwen3 Encoder", + "ui_hidden": false + }, + "type": { + "const": "flux2_klein_lora_loader_output", + "default": "flux2_klein_lora_loader_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "transformer", "qwen3_encoder", "type", "type"], + "title": "Flux2KleinLoRALoaderOutput", + "type": "object" + }, "Flux2KleinModelLoaderInvocation": { "category": "model", "class": "invocation", @@ -19600,7 +22423,7 @@ "tags": ["prompt", "conditioning", "flux", "klein", "qwen3"], "title": "Prompt - Flux2 Klein", "type": "object", - "version": "1.1.0", + "version": "1.1.1", "output": { "$ref": "#/components/schemas/FluxConditioningOutput" } @@ -22699,6 +25522,19 @@ "$ref": "#/components/schemas/UNetOutput" } }, + "GeneratePasswordResponse": { + "properties": { + "password": { + "type": "string", + "title": "Password", + "description": "Generated strong password" + } + }, + "type": "object", + "required": ["password"], + "title": "GeneratePasswordResponse", + "description": "Response containing a generated password." + }, "GetMaskBoundingBoxInvocation": { "category": "mask", "class": "invocation", @@ -22850,6 +25686,27 @@ { "$ref": "#/components/schemas/AlphaMaskToTensorInvocation" }, + { + "$ref": "#/components/schemas/AnimaDenoiseInvocation" + }, + { + "$ref": "#/components/schemas/AnimaImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaTextEncoderInvocation" + }, { "$ref": "#/components/schemas/ApplyMaskTensorToImageInvocation" }, @@ -22889,6 +25746,9 @@ { "$ref": "#/components/schemas/CannyEdgeDetectionInvocation" }, + { + "$ref": "#/components/schemas/CanvasOutputInvocation" + }, { "$ref": "#/components/schemas/CanvasPasteBackInvocation" }, @@ -22961,6 +25821,9 @@ { "$ref": "#/components/schemas/DWOpenposeDetectionInvocation" }, + { + "$ref": "#/components/schemas/DecodeInvisibleWatermarkInvocation" + }, { "$ref": "#/components/schemas/DenoiseLatentsInvocation" }, @@ -23018,6 +25881,12 @@ { "$ref": "#/components/schemas/Flux2DenoiseInvocation" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderInvocation" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderInvocation" }, @@ -23093,6 +25962,9 @@ { "$ref": "#/components/schemas/IdealSizeInvocation" }, + { + "$ref": "#/components/schemas/IfInvocation" + }, { "$ref": "#/components/schemas/ImageBatchInvocation" }, @@ -23544,7 +26416,8 @@ } }, "type": "object", - "title": "Graph" + "title": "Graph", + "description": "A validated invocation graph made of nodes and typed edges." }, "GraphExecutionState": { "properties": { @@ -23581,6 +26454,15 @@ "results": { "additionalProperties": { "oneOf": [ + { + "$ref": "#/components/schemas/AnimaConditioningOutput" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderOutput" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderOutput" + }, { "$ref": "#/components/schemas/BooleanCollectionOutput" }, @@ -23644,6 +26526,9 @@ { "$ref": "#/components/schemas/FloatOutput" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderOutput" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderOutput" }, @@ -23683,6 +26568,9 @@ { "$ref": "#/components/schemas/IdealSizeOutput" }, + { + "$ref": "#/components/schemas/IfInvocationOutput" + }, { "$ref": "#/components/schemas/ImageCollectionOutput" }, @@ -23890,7 +26778,7 @@ "source_prepared_mapping" ], "title": "GraphExecutionState", - "description": "Tracks the state of a graph execution" + "description": "Tracks source-graph expansion, execution progress, and runtime results." }, "GroundingDinoInvocation": { "category": "image", @@ -24701,6 +27589,93 @@ "title": "IPAdapterOutput", "type": "object" }, + "IPAdapterRecallParameter": { + "properties": { + "model_name": { + "type": "string", + "title": "Model Name", + "description": "The name of the IP Adapter model" + }, + "image_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Image Name", + "description": "The filename of the reference image in outputs/images" + }, + "weight": { + "type": "number", + "maximum": 2.0, + "minimum": -1.0, + "title": "Weight", + "description": "The weight for the IP Adapter", + "default": 1.0 + }, + "begin_step_percent": { + "anyOf": [ + { + "type": "number", + "maximum": 1.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Begin Step Percent", + "description": "When the IP Adapter is first applied (% of total steps)" + }, + "end_step_percent": { + "anyOf": [ + { + "type": "number", + "maximum": 1.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "End Step Percent", + "description": "When the IP Adapter is last applied (% of total steps)" + }, + "method": { + "anyOf": [ + { + "type": "string", + "enum": ["full", "style", "composition"] + }, + { + "type": "null" + } + ], + "title": "Method", + "description": "The IP Adapter method" + }, + "image_influence": { + "anyOf": [ + { + "type": "string", + "enum": ["lowest", "low", "medium", "high", "highest"] + }, + { + "type": "null" + } + ], + "title": "Image Influence", + "description": "FLUX Redux image influence (if model is flux_redux)" + } + }, + "type": "object", + "required": ["model_name"], + "title": "IPAdapterRecallParameter", + "description": "IP Adapter configuration for recall" + }, "IPAdapter_Checkpoint_FLUX_Config": { "properties": { "key": { @@ -25601,6 +28576,125 @@ "title": "IdealSizeOutput", "type": "object" }, + "IfInvocation": { + "category": "logic", + "class": "invocation", + "classification": "stable", + "description": "Selects between two optional inputs based on a boolean condition.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "condition": { + "default": false, + "description": "The condition used to select an input", + "field_kind": "input", + "input": "any", + "orig_default": false, + "orig_required": false, + "title": "Condition", + "type": "boolean" + }, + "true_input": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "Selected when the condition is true", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "True Input", + "ui_type": "AnyField" + }, + "false_input": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "Selected when the condition is false", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "False Input", + "ui_type": "AnyField" + }, + "type": { + "const": "if", + "default": "if", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["logic", "conditional"], + "title": "If", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/IfInvocationOutput" + } + }, + "IfInvocationOutput": { + "class": "output", + "properties": { + "value": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The selected value", + "field_kind": "output", + "title": "Output", + "ui_hidden": false, + "ui_type": "AnyField" + }, + "type": { + "const": "if_output", + "default": "if_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "value", "type", "type"], + "title": "IfInvocationOutput", + "type": "object" + }, "ImageBatchInvocation": { "category": "primitives", "class": "invocation", @@ -29790,6 +32884,12 @@ "description": "The destination of the queue item", "title": "Destination" }, + "user_id": { + "default": "system", + "description": "The ID of the user who created the queue item", + "title": "User Id", + "type": "string" + }, "session_id": { "description": "The ID of the session (aka graph execution state)", "title": "Session Id", @@ -29804,6 +32904,27 @@ { "$ref": "#/components/schemas/AlphaMaskToTensorInvocation" }, + { + "$ref": "#/components/schemas/AnimaDenoiseInvocation" + }, + { + "$ref": "#/components/schemas/AnimaImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaTextEncoderInvocation" + }, { "$ref": "#/components/schemas/ApplyMaskTensorToImageInvocation" }, @@ -29843,6 +32964,9 @@ { "$ref": "#/components/schemas/CannyEdgeDetectionInvocation" }, + { + "$ref": "#/components/schemas/CanvasOutputInvocation" + }, { "$ref": "#/components/schemas/CanvasPasteBackInvocation" }, @@ -29915,6 +33039,9 @@ { "$ref": "#/components/schemas/DWOpenposeDetectionInvocation" }, + { + "$ref": "#/components/schemas/DecodeInvisibleWatermarkInvocation" + }, { "$ref": "#/components/schemas/DenoiseLatentsInvocation" }, @@ -29972,6 +33099,12 @@ { "$ref": "#/components/schemas/Flux2DenoiseInvocation" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderInvocation" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderInvocation" }, @@ -30047,6 +33180,9 @@ { "$ref": "#/components/schemas/IdealSizeInvocation" }, + { + "$ref": "#/components/schemas/IfInvocation" + }, { "$ref": "#/components/schemas/ImageBatchInvocation" }, @@ -30493,6 +33629,15 @@ "result": { "description": "The result of the invocation", "oneOf": [ + { + "$ref": "#/components/schemas/AnimaConditioningOutput" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderOutput" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderOutput" + }, { "$ref": "#/components/schemas/BooleanCollectionOutput" }, @@ -30556,6 +33701,9 @@ { "$ref": "#/components/schemas/FloatOutput" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderOutput" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderOutput" }, @@ -30595,6 +33743,9 @@ { "$ref": "#/components/schemas/IdealSizeOutput" }, + { + "$ref": "#/components/schemas/IfInvocationOutput" + }, { "$ref": "#/components/schemas/ImageCollectionOutput" }, @@ -30750,6 +33901,7 @@ "batch_id", "origin", "destination", + "user_id", "session_id", "invocation", "invocation_source_id", @@ -30807,6 +33959,12 @@ "description": "The destination of the queue item", "title": "Destination" }, + "user_id": { + "default": "system", + "description": "The ID of the user who created the queue item", + "title": "User Id", + "type": "string" + }, "session_id": { "description": "The ID of the session (aka graph execution state)", "title": "Session Id", @@ -30821,6 +33979,27 @@ { "$ref": "#/components/schemas/AlphaMaskToTensorInvocation" }, + { + "$ref": "#/components/schemas/AnimaDenoiseInvocation" + }, + { + "$ref": "#/components/schemas/AnimaImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaTextEncoderInvocation" + }, { "$ref": "#/components/schemas/ApplyMaskTensorToImageInvocation" }, @@ -30860,6 +34039,9 @@ { "$ref": "#/components/schemas/CannyEdgeDetectionInvocation" }, + { + "$ref": "#/components/schemas/CanvasOutputInvocation" + }, { "$ref": "#/components/schemas/CanvasPasteBackInvocation" }, @@ -30932,6 +34114,9 @@ { "$ref": "#/components/schemas/DWOpenposeDetectionInvocation" }, + { + "$ref": "#/components/schemas/DecodeInvisibleWatermarkInvocation" + }, { "$ref": "#/components/schemas/DenoiseLatentsInvocation" }, @@ -30989,6 +34174,12 @@ { "$ref": "#/components/schemas/Flux2DenoiseInvocation" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderInvocation" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderInvocation" }, @@ -31064,6 +34255,9 @@ { "$ref": "#/components/schemas/IdealSizeInvocation" }, + { + "$ref": "#/components/schemas/IfInvocation" + }, { "$ref": "#/components/schemas/ImageBatchInvocation" }, @@ -31530,6 +34724,7 @@ "batch_id", "origin", "destination", + "user_id", "session_id", "invocation", "invocation_source_id", @@ -31549,6 +34744,27 @@ "alpha_mask_to_tensor": { "$ref": "#/components/schemas/MaskOutput" }, + "anima_denoise": { + "$ref": "#/components/schemas/LatentsOutput" + }, + "anima_i2l": { + "$ref": "#/components/schemas/LatentsOutput" + }, + "anima_l2i": { + "$ref": "#/components/schemas/ImageOutput" + }, + "anima_lora_collection_loader": { + "$ref": "#/components/schemas/AnimaLoRALoaderOutput" + }, + "anima_lora_loader": { + "$ref": "#/components/schemas/AnimaLoRALoaderOutput" + }, + "anima_model_loader": { + "$ref": "#/components/schemas/AnimaModelLoaderOutput" + }, + "anima_text_encoder": { + "$ref": "#/components/schemas/AnimaConditioningOutput" + }, "apply_mask_to_image": { "$ref": "#/components/schemas/ImageOutput" }, @@ -31579,6 +34795,9 @@ "canny_edge_detection": { "$ref": "#/components/schemas/ImageOutput" }, + "canvas_output": { + "$ref": "#/components/schemas/ImageOutput" + }, "canvas_paste_back": { "$ref": "#/components/schemas/ImageOutput" }, @@ -31648,6 +34867,9 @@ "cv_inpaint": { "$ref": "#/components/schemas/ImageOutput" }, + "decode_watermark": { + "$ref": "#/components/schemas/StringOutput" + }, "denoise_latents": { "$ref": "#/components/schemas/LatentsOutput" }, @@ -31705,6 +34927,12 @@ "flux2_denoise": { "$ref": "#/components/schemas/LatentsOutput" }, + "flux2_klein_lora_collection_loader": { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderOutput" + }, + "flux2_klein_lora_loader": { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderOutput" + }, "flux2_klein_model_loader": { "$ref": "#/components/schemas/Flux2KleinModelLoaderOutput" }, @@ -31783,6 +35011,9 @@ "ideal_size": { "$ref": "#/components/schemas/IdealSizeOutput" }, + "if": { + "$ref": "#/components/schemas/IfInvocationOutput" + }, "image": { "$ref": "#/components/schemas/ImageOutput" }, @@ -32229,234 +35460,246 @@ } }, "required": [ - "integer_batch", - "img_ilerp", - "image_panel_layout", - "t2i_adapter", - "metadata_to_model", - "flux2_klein_model_loader", - "bounding_box", - "integer_generator", - "flux_text_encoder", - "img_resize", - "z_image_seed_variance_enhancer", - "metadata_to_integer", - "apply_tensor_mask_to_image", - "metadata_to_bool_collection", - "vae_loader", - "float_batch", - "paste_image_into_bounding_box", - "unsharp_mask", - "invokeai_ealightness", - "flux_denoise", - "color_map", - "face_identifier", - "float_math", - "round_float", - "z_image_denoise_meta", - "flux_controlnet", - "metadata_to_float", - "cogview4_text_encoder", - "calculate_image_tiles_even_split", - "lineart_edge_detection", - "img_noise", - "color", - "i2l", - "metadata_item", - "metadata_to_string_collection", - "integer", - "clip_skip", - "cogview4_i2l", - "image_mask_to_tensor", - "dw_openpose_detection", "crop_latents", - "img_blur", - "invokeai_img_blend", - "grounding_dino", - "core_metadata", - "metadata_to_t2i_adapters", - "z_image_lora_loader", - "sd3_denoise", - "lineart_anime_edge_detection", - "lblend", - "image_collection", - "metadata_to_loras", - "flux_fill", - "cogview4_l2i", - "sdxl_refiner_model_loader", - "mediapipe_face_detection", - "infill_tile", - "alpha_mask_to_tensor", - "create_denoise_mask", - "noise", - "collect", - "calculate_image_tiles_min_overlap", - "string_join", - "div", - "invert_tensor_mask", - "crop_image_to_bounding_box", - "latents", - "z_image_text_encoder", - "metadata", - "flux2_klein_text_encoder", - "img_channel_offset", - "metadata_to_scheduler", - "dynamic_prompt", - "seamless", - "spandrel_image_to_image", - "string_join_three", - "depth_anything_depth_estimation", - "cv_inpaint", - "float_collection", - "invokeai_img_dilate_erode", - "lresize", - "iterate", - "flux2_vae_decode", - "metadata_to_sdxl_model", - "apply_mask_to_image", - "img_chan", - "esrgan", - "string_split", - "lscale", - "image_generator", - "img_channel_multiply", - "img_pad_crop", - "show_image", - "range", - "calculate_image_tiles", - "get_image_mask_bounding_box", + "z_image_denoise", "sdxl_model_loader", - "metadata_to_integer_collection", - "prompt_from_file", - "rectangle_mask", - "canny_edge_detection", - "heuristic_resize", - "blank_image", + "img_scale", + "string_join", + "if", + "flux_kontext_image_prep", + "cv_inpaint", + "face_mask_detection", + "float_generator", + "sdxl_refiner_compel_prompt", + "lresize", + "invokeai_img_val_thresholds", + "flux_lora_collection_loader", + "img_nsfw", + "flux2_denoise", + "ip_adapter", + "anima_l2i", + "bounding_box", + "metadata_to_string_collection", + "anima_text_encoder", + "flux2_klein_model_loader", + "ideal_size", + "lineart_anime_edge_detection", + "z_image_lora_loader", + "iterate", + "sdxl_lora_collection_loader", + "tiled_multi_diffusion_denoise_latents", + "metadata", + "invert_tensor_mask", + "lineart_edge_detection", + "string_replace", + "anima_denoise", "latents_collection", - "flux_model_loader", - "denoise_latents_meta", - "z_image_model_loader", - "rand_float", + "vae_loader", + "dw_openpose_detection", + "metadata_to_integer", + "img_paste", + "mediapipe_face_detection", + "invokeai_img_hue_adjust_plus", + "z_image_seed_variance_enhancer", "l2i", + "metadata_to_float", + "invokeai_img_blend", + "metadata_to_float_collection", + "rand_int", + "sd3_denoise", + "get_image_mask_bounding_box", + "flux2_klein_lora_collection_loader", + "flux_model_loader", + "add", + "metadata_from_image", + "flux2_vae_decode", + "metadata_to_sdlx_loras", + "spandrel_image_to_image_autoscale", + "random_range", + "color", + "integer", + "sdxl_lora_loader", + "metadata_to_vae", + "tomask", + "unsharp_mask", + "collect", + "flux_text_encoder", + "cogview4_i2l", + "sd3_text_encoder", + "flux_kontext", + "flux_redux", + "z_image_denoise_meta", + "img_ilerp", + "conditioning", + "calculate_image_tiles_min_overlap", + "invokeai_img_dilate_erode", + "range", + "img_mul", + "esrgan", + "invokeai_ealightness", + "string_batch", + "denoise_latents", + "grounding_dino", + "lora_selector", + "img_crop", + "freeu", + "calculate_image_tiles_even_split", + "infill_cv2", + "dynamic_prompt", + "sub", + "anima_lora_collection_loader", + "latents", + "sd3_model_loader", + "boolean", + "metadata_to_sdxl_model", + "infill_rgba", + "seamless", + "calculate_image_tiles", + "z_image_l2i", + "flux_vae_encode", + "face_identifier", + "model_identifier", + "metadata_to_model", + "pair_tile_image", + "metadata_to_controlnets", + "merge_metadata", + "img_lerp", + "decode_watermark", + "noise", + "infill_tile", + "anima_i2l", + "string_split", + "mask_combine", + "flux_denoise_meta", + "sdxl_compel_prompt", + "flux2_vae_encode", + "z_image_model_loader", + "z_image_lora_collection_loader", + "cogview4_denoise", + "img_noise", + "mask_from_id", + "canvas_paste_back", + "sdxl_refiner_model_loader", + "integer_collection", + "image_mask_to_tensor", + "rectangle_mask", + "lora_collection_loader", + "flux_fill", + "apply_mask_to_image", + "image_generator", + "mul", + "canvas_v2_mask_and_crop", + "float_batch", + "face_off", + "i2l", + "float_collection", + "invokeai_img_composite", "img_conv", "controlnet", - "flux_redux", - "boolean_collection", - "flux_kontext", - "metadata_to_ip_adapters", - "metadata_to_string", - "cogview4_model_loader", - "z_image_l2i", - "add", - "lora_collection_loader", - "string_batch", - "img_nsfw", - "content_shuffle", - "conditioning_collection", - "string", - "metadata_to_float_collection", - "random_range", - "flux2_denoise", - "tile_to_properties", - "mask_edge", - "ideal_size", - "sdxl_refiner_compel_prompt", - "string_split_neg", - "sub", - "sd3_i2l", - "string_generator", - "img_mul", - "invokeai_img_val_thresholds", - "pidi_edge_detection", - "flux_lora_loader", - "metadata_to_lora_collection", - "canvas_paste_back", - "tomask", - "string_collection", - "metadata_to_sdlx_loras", - "compel", - "sd3_model_loader", - "denoise_latents", - "flux_kontext_image_prep", - "mlsd_detection", - "pair_tile_image", - "flux2_vae_encode", - "flux_denoise_meta", - "float_to_int", - "img_lerp", - "flux_vae_encode", - "mul", - "z_image_denoise", - "img_crop", - "invokeai_img_composite", - "prompt_template", - "sdxl_compel_prompt", - "metadata_to_bool", - "sdxl_lora_loader", - "lora_loader", - "metadata_from_image", - "string_replace", - "infill_lama", - "img_paste", - "invokeai_img_enhance", - "hed_edge_detection", - "merge_metadata", - "float_range", - "range_of_size", - "integer_math", - "sd3_text_encoder", - "model_identifier", - "infill_patchmatch", - "img_watermark", - "scheduler", - "flux_control_lora_loader", - "spandrel_image_to_image_autoscale", - "image_batch", - "image", - "flux_vae_decode", - "float", - "cogview4_denoise", - "segment_anything", - "mask_from_id", - "img_hue_adjust", - "normal_map", - "flux_lora_collection_loader", - "z_image_lora_collection_loader", - "metadata_item_linked", - "freeu", - "face_off", "z_image_control", - "lora_selector", - "llava_onevision_vllm", - "metadata_field_extractor", - "metadata_to_vae", - "mask_combine", - "infill_rgba", - "img_scale", - "conditioning", - "boolean", - "rand_int", - "sd3_l2i", - "expand_mask_with_fade", - "create_gradient_mask", - "color_correct", - "metadata_to_controlnets", - "float_generator", - "save_image", - "invokeai_img_hue_adjust_plus", - "flux_ip_adapter", - "tiled_multi_diffusion_denoise_latents", - "sdxl_lora_collection_loader", - "z_image_i2l", - "infill_cv2", - "ip_adapter", - "canvas_v2_mask_and_crop", + "segment_anything", + "anima_lora_loader", + "float", + "canvas_output", + "img_chan", + "string", + "anima_model_loader", + "image_panel_layout", + "integer_batch", + "paste_image_into_bounding_box", + "scheduler", + "metadata_to_bool_collection", + "cogview4_l2i", + "metadata_item", + "alpha_mask_to_tensor", + "img_watermark", + "metadata_to_loras", + "metadata_to_t2i_adapters", + "metadata_item_linked", + "denoise_latents_meta", + "metadata_to_bool", + "flux_lora_loader", + "metadata_to_ip_adapters", + "metadata_to_lora_collection", + "cogview4_text_encoder", "pbr_maps", - "integer_collection", - "merge_tiles_to_image", - "face_mask_detection", + "mask_edge", + "core_metadata", + "div", + "image_collection", + "img_channel_offset", + "metadata_to_string", + "t2i_adapter", + "flux_controlnet", + "metadata_to_integer_collection", + "sd3_i2l", + "compel", + "heuristic_resize", + "metadata_to_scheduler", + "canny_edge_detection", + "float_to_int", + "depth_anything_depth_estimation", + "color_map", + "pidi_edge_detection", + "img_resize", + "color_correct", + "float_range", + "img_pad_crop", + "tile_to_properties", + "flux2_klein_text_encoder", + "z_image_text_encoder", + "range_of_size", + "flux2_klein_lora_loader", + "image", + "prompt_from_file", + "string_generator", + "create_denoise_mask", + "rand_float", + "invokeai_img_enhance", + "crop_image_to_bounding_box", + "boolean_collection", + "cogview4_model_loader", + "lblend", + "normal_map", + "expand_mask_with_fade", + "mlsd_detection", + "float_math", + "show_image", + "llava_onevision_vllm", + "flux_control_lora_loader", + "sd3_l2i", + "img_hue_adjust", + "img_blur", + "flux_ip_adapter", + "image_batch", + "clip_skip", + "hed_edge_detection", + "prompt_template", + "img_channel_multiply", + "metadata_field_extractor", + "spandrel_image_to_image", + "integer_generator", + "flux_vae_decode", + "string_collection", + "flux_denoise", + "integer_math", + "main_model_loader", + "apply_tensor_mask_to_image", "tensor_mask_to_image", - "main_model_loader" + "blank_image", + "conditioning_collection", + "string_split_neg", + "z_image_i2l", + "string_join_three", + "round_float", + "save_image", + "infill_patchmatch", + "create_gradient_mask", + "content_shuffle", + "lora_loader", + "lscale", + "infill_lama", + "merge_tiles_to_image" ] }, "InvocationProgressEvent": { @@ -32508,6 +35751,12 @@ "description": "The destination of the queue item", "title": "Destination" }, + "user_id": { + "default": "system", + "description": "The ID of the user who created the queue item", + "title": "User Id", + "type": "string" + }, "session_id": { "description": "The ID of the session (aka graph execution state)", "title": "Session Id", @@ -32522,6 +35771,27 @@ { "$ref": "#/components/schemas/AlphaMaskToTensorInvocation" }, + { + "$ref": "#/components/schemas/AnimaDenoiseInvocation" + }, + { + "$ref": "#/components/schemas/AnimaImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaTextEncoderInvocation" + }, { "$ref": "#/components/schemas/ApplyMaskTensorToImageInvocation" }, @@ -32561,6 +35831,9 @@ { "$ref": "#/components/schemas/CannyEdgeDetectionInvocation" }, + { + "$ref": "#/components/schemas/CanvasOutputInvocation" + }, { "$ref": "#/components/schemas/CanvasPasteBackInvocation" }, @@ -32633,6 +35906,9 @@ { "$ref": "#/components/schemas/DWOpenposeDetectionInvocation" }, + { + "$ref": "#/components/schemas/DecodeInvisibleWatermarkInvocation" + }, { "$ref": "#/components/schemas/DenoiseLatentsInvocation" }, @@ -32690,6 +35966,12 @@ { "$ref": "#/components/schemas/Flux2DenoiseInvocation" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderInvocation" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderInvocation" }, @@ -32765,6 +36047,9 @@ { "$ref": "#/components/schemas/IdealSizeInvocation" }, + { + "$ref": "#/components/schemas/IfInvocation" + }, { "$ref": "#/components/schemas/ImageBatchInvocation" }, @@ -33248,6 +36533,7 @@ "batch_id", "origin", "destination", + "user_id", "session_id", "invocation", "invocation_source_id", @@ -33307,6 +36593,12 @@ "description": "The destination of the queue item", "title": "Destination" }, + "user_id": { + "default": "system", + "description": "The ID of the user who created the queue item", + "title": "User Id", + "type": "string" + }, "session_id": { "description": "The ID of the session (aka graph execution state)", "title": "Session Id", @@ -33321,6 +36613,27 @@ { "$ref": "#/components/schemas/AlphaMaskToTensorInvocation" }, + { + "$ref": "#/components/schemas/AnimaDenoiseInvocation" + }, + { + "$ref": "#/components/schemas/AnimaImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/AnimaLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/AnimaLoRALoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/AnimaTextEncoderInvocation" + }, { "$ref": "#/components/schemas/ApplyMaskTensorToImageInvocation" }, @@ -33360,6 +36673,9 @@ { "$ref": "#/components/schemas/CannyEdgeDetectionInvocation" }, + { + "$ref": "#/components/schemas/CanvasOutputInvocation" + }, { "$ref": "#/components/schemas/CanvasPasteBackInvocation" }, @@ -33432,6 +36748,9 @@ { "$ref": "#/components/schemas/DWOpenposeDetectionInvocation" }, + { + "$ref": "#/components/schemas/DecodeInvisibleWatermarkInvocation" + }, { "$ref": "#/components/schemas/DenoiseLatentsInvocation" }, @@ -33489,6 +36808,12 @@ { "$ref": "#/components/schemas/Flux2DenoiseInvocation" }, + { + "$ref": "#/components/schemas/Flux2KleinLoRACollectionLoader" + }, + { + "$ref": "#/components/schemas/Flux2KleinLoRALoaderInvocation" + }, { "$ref": "#/components/schemas/Flux2KleinModelLoaderInvocation" }, @@ -33564,6 +36889,9 @@ { "$ref": "#/components/schemas/IdealSizeInvocation" }, + { + "$ref": "#/components/schemas/IfInvocation" + }, { "$ref": "#/components/schemas/ImageBatchInvocation" }, @@ -34015,6 +37343,7 @@ "batch_id", "origin", "destination", + "user_id", "session_id", "invocation", "invocation_source_id" @@ -34514,12 +37843,24 @@ "title": "Allow Unknown Models", "description": "Allow installation of models that we are unable to identify. If enabled, models will be marked as `unknown` in the database, and will not have any metadata associated with them. If disabled, unknown models will be rejected during installation.", "default": true + }, + "multiuser": { + "type": "boolean", + "title": "Multiuser", + "description": "Enable multiuser support. When disabled, the application runs in single-user mode using a default system account with administrator privileges. When enabled, requires user authentication and authorization.", + "default": false + }, + "strict_password_checking": { + "type": "boolean", + "title": "Strict Password Checking", + "description": "Enforce strict password requirements. When True, passwords must contain uppercase, lowercase, and numbers. When False (default), any password is accepted but its strength (weak/moderate/strong) is reported to the user.", + "default": false } }, "additionalProperties": false, "type": "object", "title": "InvokeAIAppConfig", - "description": "Invoke's global app configuration.\n\nTypically, you won't need to interact with this class directly. Instead, use the `get_config` function from `invokeai.app.services.config` to get a singleton config object.\n\nAttributes:\n host: IP address to bind to. Use `0.0.0.0` to serve to your local network.\n port: Port to bind to.\n allow_origins: Allowed CORS origins.\n allow_credentials: Allow CORS credentials.\n allow_methods: Methods allowed for CORS.\n allow_headers: Headers allowed for CORS.\n ssl_certfile: SSL certificate file for HTTPS. See https://www.uvicorn.org/settings/#https.\n ssl_keyfile: SSL key file for HTTPS. See https://www.uvicorn.org/settings/#https.\n log_tokenization: Enable logging of parsed prompt tokens.\n patchmatch: Enable patchmatch inpaint code.\n models_dir: Path to the models directory.\n convert_cache_dir: Path to the converted models cache directory (DEPRECATED, but do not delete because it is needed for migration from previous versions).\n download_cache_dir: Path to the directory that contains dynamically downloaded models.\n legacy_conf_dir: Path to directory of legacy checkpoint config files.\n db_dir: Path to InvokeAI databases directory.\n outputs_dir: Path to directory for outputs.\n custom_nodes_dir: Path to directory for custom nodes.\n style_presets_dir: Path to directory for style presets.\n workflow_thumbnails_dir: Path to directory for workflow thumbnails.\n log_handlers: Log handler. Valid options are \"console\", \"file=\", \"syslog=path|address:host:port\", \"http=\".\n log_format: Log format. Use \"plain\" for text-only, \"color\" for colorized output, \"legacy\" for 2.3-style logging and \"syslog\" for syslog-style.
Valid values: `plain`, `color`, `syslog`, `legacy`\n log_level: Emit logging messages at this level or higher.
Valid values: `debug`, `info`, `warning`, `error`, `critical`\n log_sql: Log SQL queries. `log_level` must be `debug` for this to do anything. Extremely verbose.\n log_level_network: Log level for network-related messages. 'info' and 'debug' are very verbose.
Valid values: `debug`, `info`, `warning`, `error`, `critical`\n use_memory_db: Use in-memory database. Useful for development.\n dev_reload: Automatically reload when Python sources are changed. Does not reload node definitions.\n profile_graphs: Enable graph profiling using `cProfile`.\n profile_prefix: An optional prefix for profile output files.\n profiles_dir: Path to profiles output directory.\n max_cache_ram_gb: The maximum amount of CPU RAM to use for model caching in GB. If unset, the limit will be configured based on the available RAM. In most cases, it is recommended to leave this unset.\n max_cache_vram_gb: The amount of VRAM to use for model caching in GB. If unset, the limit will be configured based on the available VRAM and the device_working_mem_gb. In most cases, it is recommended to leave this unset.\n log_memory_usage: If True, a memory snapshot will be captured before and after every model cache operation, and the result will be logged (at debug level). There is a time cost to capturing the memory snapshots, so it is recommended to only enable this feature if you are actively inspecting the model cache's behaviour.\n model_cache_keep_alive_min: How long to keep models in cache after last use, in minutes. A value of 0 (the default) means models are kept in cache indefinitely. If no model generations occur within the timeout period, the model cache is cleared using the same logic as the 'Clear Model Cache' button.\n device_working_mem_gb: The amount of working memory to keep available on the compute device (in GB). Has no effect if running on CPU. If you are experiencing OOM errors, try increasing this value.\n enable_partial_loading: Enable partial loading of models. This enables models to run with reduced VRAM requirements (at the cost of slower speed) by streaming the model from RAM to VRAM as its used. In some edge cases, partial loading can cause models to run more slowly if they were previously being fully loaded into VRAM.\n keep_ram_copy_of_weights: Whether to keep a full RAM copy of a model's weights when the model is loaded in VRAM. Keeping a RAM copy increases average RAM usage, but speeds up model switching and LoRA patching (assuming there is sufficient RAM). Set this to False if RAM pressure is consistently high.\n ram: DEPRECATED: This setting is no longer used. It has been replaced by `max_cache_ram_gb`, but most users will not need to use this config since automatic cache size limits should work well in most cases. This config setting will be removed once the new model cache behavior is stable.\n vram: DEPRECATED: This setting is no longer used. It has been replaced by `max_cache_vram_gb`, but most users will not need to use this config since automatic cache size limits should work well in most cases. This config setting will be removed once the new model cache behavior is stable.\n lazy_offload: DEPRECATED: This setting is no longer used. Lazy-offloading is enabled by default. This config setting will be removed once the new model cache behavior is stable.\n pytorch_cuda_alloc_conf: Configure the Torch CUDA memory allocator. This will impact peak reserved VRAM usage and performance. Setting to \"backend:cudaMallocAsync\" works well on many systems. The optimal configuration is highly dependent on the system configuration (device type, VRAM, CUDA driver version, etc.), so must be tuned experimentally.\n device: Preferred execution device. `auto` will choose the device depending on the hardware platform and the installed torch capabilities.
Valid values: `auto`, `cpu`, `cuda`, `mps`, `cuda:N` (where N is a device number)\n precision: Floating point precision. `float16` will consume half the memory of `float32` but produce slightly lower-quality images. The `auto` setting will guess the proper precision based on your video card and operating system.
Valid values: `auto`, `float16`, `bfloat16`, `float32`\n sequential_guidance: Whether to calculate guidance in serial instead of in parallel, lowering memory requirements.\n attention_type: Attention type.
Valid values: `auto`, `normal`, `xformers`, `sliced`, `torch-sdp`\n attention_slice_size: Slice size, valid when attention_type==\"sliced\".
Valid values: `auto`, `balanced`, `max`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`\n force_tiled_decode: Whether to enable tiled VAE decode (reduces memory consumption with some performance penalty).\n pil_compress_level: The compress_level setting of PIL.Image.save(), used for PNG encoding. All settings are lossless. 0 = no compression, 1 = fastest with slightly larger filesize, 9 = slowest with smallest filesize. 1 is typically the best setting.\n max_queue_size: Maximum number of items in the session queue.\n clear_queue_on_startup: Empties session queue on startup.\n allow_nodes: List of nodes to allow. Omit to allow all.\n deny_nodes: List of nodes to deny. Omit to deny none.\n node_cache_size: How many cached nodes to keep in memory.\n hashing_algorithm: Model hashing algorthim for model installs. 'blake3_multi' is best for SSDs. 'blake3_single' is best for spinning disk HDDs. 'random' disables hashing, instead assigning a UUID to models. Useful when using a memory db to reduce model installation time, or if you don't care about storing stable hashes for models. Alternatively, any other hashlib algorithm is accepted, though these are not nearly as performant as blake3.
Valid values: `blake3_multi`, `blake3_single`, `random`, `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`, `blake2b`, `blake2s`, `sha3_224`, `sha3_256`, `sha3_384`, `sha3_512`, `shake_128`, `shake_256`\n remote_api_tokens: List of regular expression and token pairs used when downloading models from URLs. The download URL is tested against the regex, and if it matches, the token is provided in as a Bearer token.\n scan_models_on_startup: Scan the models directory on startup, registering orphaned models. This is typically only used in conjunction with `use_memory_db` for testing purposes.\n unsafe_disable_picklescan: UNSAFE. Disable the picklescan security check during model installation. Recommended only for development and testing purposes. This will allow arbitrary code execution during model installation, so should never be used in production.\n allow_unknown_models: Allow installation of models that we are unable to identify. If enabled, models will be marked as `unknown` in the database, and will not have any metadata associated with them. If disabled, unknown models will be rejected during installation." + "description": "Invoke's global app configuration.\n\nTypically, you won't need to interact with this class directly. Instead, use the `get_config` function from `invokeai.app.services.config` to get a singleton config object.\n\nAttributes:\n host: IP address to bind to. Use `0.0.0.0` to serve to your local network.\n port: Port to bind to.\n allow_origins: Allowed CORS origins.\n allow_credentials: Allow CORS credentials.\n allow_methods: Methods allowed for CORS.\n allow_headers: Headers allowed for CORS.\n ssl_certfile: SSL certificate file for HTTPS. See https://www.uvicorn.org/settings/#https.\n ssl_keyfile: SSL key file for HTTPS. See https://www.uvicorn.org/settings/#https.\n log_tokenization: Enable logging of parsed prompt tokens.\n patchmatch: Enable patchmatch inpaint code.\n models_dir: Path to the models directory.\n convert_cache_dir: Path to the converted models cache directory (DEPRECATED, but do not delete because it is needed for migration from previous versions).\n download_cache_dir: Path to the directory that contains dynamically downloaded models.\n legacy_conf_dir: Path to directory of legacy checkpoint config files.\n db_dir: Path to InvokeAI databases directory.\n outputs_dir: Path to directory for outputs.\n custom_nodes_dir: Path to directory for custom nodes.\n style_presets_dir: Path to directory for style presets.\n workflow_thumbnails_dir: Path to directory for workflow thumbnails.\n log_handlers: Log handler. Valid options are \"console\", \"file=\", \"syslog=path|address:host:port\", \"http=\".\n log_format: Log format. Use \"plain\" for text-only, \"color\" for colorized output, \"legacy\" for 2.3-style logging and \"syslog\" for syslog-style.
Valid values: `plain`, `color`, `syslog`, `legacy`\n log_level: Emit logging messages at this level or higher.
Valid values: `debug`, `info`, `warning`, `error`, `critical`\n log_sql: Log SQL queries. `log_level` must be `debug` for this to do anything. Extremely verbose.\n log_level_network: Log level for network-related messages. 'info' and 'debug' are very verbose.
Valid values: `debug`, `info`, `warning`, `error`, `critical`\n use_memory_db: Use in-memory database. Useful for development.\n dev_reload: Automatically reload when Python sources are changed. Does not reload node definitions.\n profile_graphs: Enable graph profiling using `cProfile`.\n profile_prefix: An optional prefix for profile output files.\n profiles_dir: Path to profiles output directory.\n max_cache_ram_gb: The maximum amount of CPU RAM to use for model caching in GB. If unset, the limit will be configured based on the available RAM. In most cases, it is recommended to leave this unset.\n max_cache_vram_gb: The amount of VRAM to use for model caching in GB. If unset, the limit will be configured based on the available VRAM and the device_working_mem_gb. In most cases, it is recommended to leave this unset.\n log_memory_usage: If True, a memory snapshot will be captured before and after every model cache operation, and the result will be logged (at debug level). There is a time cost to capturing the memory snapshots, so it is recommended to only enable this feature if you are actively inspecting the model cache's behaviour.\n model_cache_keep_alive_min: How long to keep models in cache after last use, in minutes. A value of 0 (the default) means models are kept in cache indefinitely. If no model generations occur within the timeout period, the model cache is cleared using the same logic as the 'Clear Model Cache' button.\n device_working_mem_gb: The amount of working memory to keep available on the compute device (in GB). Has no effect if running on CPU. If you are experiencing OOM errors, try increasing this value.\n enable_partial_loading: Enable partial loading of models. This enables models to run with reduced VRAM requirements (at the cost of slower speed) by streaming the model from RAM to VRAM as its used. In some edge cases, partial loading can cause models to run more slowly if they were previously being fully loaded into VRAM.\n keep_ram_copy_of_weights: Whether to keep a full RAM copy of a model's weights when the model is loaded in VRAM. Keeping a RAM copy increases average RAM usage, but speeds up model switching and LoRA patching (assuming there is sufficient RAM). Set this to False if RAM pressure is consistently high.\n ram: DEPRECATED: This setting is no longer used. It has been replaced by `max_cache_ram_gb`, but most users will not need to use this config since automatic cache size limits should work well in most cases. This config setting will be removed once the new model cache behavior is stable.\n vram: DEPRECATED: This setting is no longer used. It has been replaced by `max_cache_vram_gb`, but most users will not need to use this config since automatic cache size limits should work well in most cases. This config setting will be removed once the new model cache behavior is stable.\n lazy_offload: DEPRECATED: This setting is no longer used. Lazy-offloading is enabled by default. This config setting will be removed once the new model cache behavior is stable.\n pytorch_cuda_alloc_conf: Configure the Torch CUDA memory allocator. This will impact peak reserved VRAM usage and performance. Setting to \"backend:cudaMallocAsync\" works well on many systems. The optimal configuration is highly dependent on the system configuration (device type, VRAM, CUDA driver version, etc.), so must be tuned experimentally.\n device: Preferred execution device. `auto` will choose the device depending on the hardware platform and the installed torch capabilities.
Valid values: `auto`, `cpu`, `cuda`, `mps`, `cuda:N` (where N is a device number)\n precision: Floating point precision. `float16` will consume half the memory of `float32` but produce slightly lower-quality images. The `auto` setting will guess the proper precision based on your video card and operating system.
Valid values: `auto`, `float16`, `bfloat16`, `float32`\n sequential_guidance: Whether to calculate guidance in serial instead of in parallel, lowering memory requirements.\n attention_type: Attention type.
Valid values: `auto`, `normal`, `xformers`, `sliced`, `torch-sdp`\n attention_slice_size: Slice size, valid when attention_type==\"sliced\".
Valid values: `auto`, `balanced`, `max`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`\n force_tiled_decode: Whether to enable tiled VAE decode (reduces memory consumption with some performance penalty).\n pil_compress_level: The compress_level setting of PIL.Image.save(), used for PNG encoding. All settings are lossless. 0 = no compression, 1 = fastest with slightly larger filesize, 9 = slowest with smallest filesize. 1 is typically the best setting.\n max_queue_size: Maximum number of items in the session queue.\n clear_queue_on_startup: Empties session queue on startup.\n allow_nodes: List of nodes to allow. Omit to allow all.\n deny_nodes: List of nodes to deny. Omit to deny none.\n node_cache_size: How many cached nodes to keep in memory.\n hashing_algorithm: Model hashing algorthim for model installs. 'blake3_multi' is best for SSDs. 'blake3_single' is best for spinning disk HDDs. 'random' disables hashing, instead assigning a UUID to models. Useful when using a memory db to reduce model installation time, or if you don't care about storing stable hashes for models. Alternatively, any other hashlib algorithm is accepted, though these are not nearly as performant as blake3.
Valid values: `blake3_multi`, `blake3_single`, `random`, `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`, `blake2b`, `blake2s`, `sha3_224`, `sha3_256`, `sha3_384`, `sha3_512`, `shake_128`, `shake_256`\n remote_api_tokens: List of regular expression and token pairs used when downloading models from URLs. The download URL is tested against the regex, and if it matches, the token is provided in as a Bearer token.\n scan_models_on_startup: Scan the models directory on startup, registering orphaned models. This is typically only used in conjunction with `use_memory_db` for testing purposes.\n unsafe_disable_picklescan: UNSAFE. Disable the picklescan security check during model installation. Recommended only for development and testing purposes. This will allow arbitrary code execution during model installation, so should never be used in production.\n allow_unknown_models: Allow installation of models that we are unable to identify. If enabled, models will be marked as `unknown` in the database, and will not have any metadata associated with them. If disabled, unknown models will be rejected during installation.\n multiuser: Enable multiuser support. When disabled, the application runs in single-user mode using a default system account with administrator privileges. When enabled, requires user authentication and authorization.\n strict_password_checking: Enforce strict password requirements. When True, passwords must contain uppercase, lowercase, and numbers. When False (default), any password is accepted but its strength (weak/moderate/strong) is reported to the user." }, "InvokeAIAppConfigWithSetFields": { "properties": { @@ -36962,6 +40303,33 @@ "title": "LoRAMetadataField", "type": "object" }, + "LoRARecallParameter": { + "properties": { + "model_name": { + "type": "string", + "title": "Model Name", + "description": "The name of the LoRA model" + }, + "weight": { + "type": "number", + "maximum": 10.0, + "minimum": -10.0, + "title": "Weight", + "description": "The weight for the LoRA", + "default": 0.75 + }, + "is_enabled": { + "type": "boolean", + "title": "Is Enabled", + "description": "Whether the LoRA is enabled", + "default": true + } + }, + "type": "object", + "required": ["model_name"], + "title": "LoRARecallParameter", + "description": "LoRA configuration for recall" + }, "LoRASelectorInvocation": { "category": "model", "class": "invocation", @@ -37198,6 +40566,156 @@ ], "title": "LoRA_Diffusers_FLUX_Config" }, + "LoRA_Diffusers_Flux2_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "lora", + "title": "Type", + "default": "lora" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoraModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "format": { + "type": "string", + "const": "diffusers", + "title": "Format", + "default": "diffusers" + }, + "base": { + "type": "string", + "const": "flux2", + "title": "Base", + "default": "flux2" + }, + "variant": { + "anyOf": [ + { + "$ref": "#/components/schemas/Flux2VariantType" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "format", + "base", + "variant" + ], + "title": "LoRA_Diffusers_Flux2_Config", + "description": "Model config for FLUX.2 (Klein) LoRA models in Diffusers format." + }, "LoRA_Diffusers_SD1_Config": { "properties": { "key": { @@ -37728,6 +41246,156 @@ "const": "z-image", "title": "Base", "default": "z-image" + }, + "variant": { + "anyOf": [ + { + "$ref": "#/components/schemas/ZImageVariantType" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "format", + "base", + "variant" + ], + "title": "LoRA_Diffusers_ZImage_Config", + "description": "Model config for Z-Image LoRA models in Diffusers format." + }, + "LoRA_LyCORIS_Anima_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "lora", + "title": "Type", + "default": "lora" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoraModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "format": { + "type": "string", + "const": "lycoris", + "title": "Format", + "default": "lycoris" + }, + "base": { + "type": "string", + "const": "anima", + "title": "Base", + "default": "anima" } }, "type": "object", @@ -37748,8 +41416,8 @@ "format", "base" ], - "title": "LoRA_Diffusers_ZImage_Config", - "description": "Model config for Z-Image LoRA models in Diffusers format." + "title": "LoRA_LyCORIS_Anima_Config", + "description": "Model config for Anima LoRA models in LyCORIS format." }, "LoRA_LyCORIS_FLUX_Config": { "properties": { @@ -37889,6 +41557,156 @@ ], "title": "LoRA_LyCORIS_FLUX_Config" }, + "LoRA_LyCORIS_Flux2_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "lora", + "title": "Type", + "default": "lora" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoraModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "format": { + "type": "string", + "const": "lycoris", + "title": "Format", + "default": "lycoris" + }, + "base": { + "type": "string", + "const": "flux2", + "title": "Base", + "default": "flux2" + }, + "variant": { + "anyOf": [ + { + "$ref": "#/components/schemas/Flux2VariantType" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "format", + "base", + "variant" + ], + "title": "LoRA_LyCORIS_Flux2_Config", + "description": "Model config for FLUX.2 (Klein) LoRA models in LyCORIS format." + }, "LoRA_LyCORIS_SD1_Config": { "properties": { "key": { @@ -38419,6 +42237,16 @@ "const": "z-image", "title": "Base", "default": "z-image" + }, + "variant": { + "anyOf": [ + { + "$ref": "#/components/schemas/ZImageVariantType" + }, + { + "type": "null" + } + ] } }, "type": "object", @@ -38437,7 +42265,8 @@ "trigger_phrases", "default_settings", "format", - "base" + "base", + "variant" ], "title": "LoRA_LyCORIS_ZImage_Config", "description": "Model config for Z-Image LoRA models in LyCORIS format." @@ -38761,6 +42590,65 @@ "enum": [0, 10, 20, 30, 40, 50], "title": "LogLevel" }, + "LoginRequest": { + "properties": { + "email": { + "type": "string", + "title": "Email", + "description": "User email address" + }, + "password": { + "type": "string", + "title": "Password", + "description": "User password" + }, + "remember_me": { + "type": "boolean", + "title": "Remember Me", + "description": "Whether to extend session duration", + "default": false + } + }, + "type": "object", + "required": ["email", "password"], + "title": "LoginRequest", + "description": "Request body for user login." + }, + "LoginResponse": { + "properties": { + "token": { + "type": "string", + "title": "Token", + "description": "JWT access token" + }, + "user": { + "$ref": "#/components/schemas/UserDTO", + "description": "User information" + }, + "expires_in": { + "type": "integer", + "title": "Expires In", + "description": "Token expiration time in seconds" + } + }, + "type": "object", + "required": ["token", "user", "expires_in"], + "title": "LoginResponse", + "description": "Response from successful login." + }, + "LogoutResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Whether logout was successful" + } + }, + "type": "object", + "required": ["success"], + "title": "LogoutResponse", + "description": "Response from logout." + }, "LoraModelDefaultSettings": { "properties": { "weight": { @@ -39394,6 +43282,158 @@ "title": "Main_BnBNF4_FLUX_Config", "description": "Model config for main checkpoint models." }, + "Main_Checkpoint_Anima_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "main", + "title": "Type", + "default": "main" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/MainModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "base": { + "type": "string", + "const": "anima", + "title": "Base", + "default": "anima" + }, + "format": { + "type": "string", + "const": "checkpoint", + "title": "Format", + "default": "checkpoint" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "config_path", + "base", + "format" + ], + "title": "Main_Checkpoint_Anima_Config", + "description": "Model config for Anima single-file checkpoint models (safetensors).\n\nAnima is built on NVIDIA Cosmos Predict2 DiT with a custom LLM Adapter\nthat bridges Qwen3 0.6B text encoder outputs to the DiT." + }, "Main_Checkpoint_FLUX_Config": { "properties": { "key": { @@ -40470,6 +44510,9 @@ "const": "checkpoint", "title": "Format", "default": "checkpoint" + }, + "variant": { + "$ref": "#/components/schemas/ZImageVariantType" } }, "type": "object", @@ -40489,7 +44532,8 @@ "default_settings", "config_path", "base", - "format" + "format", + "variant" ], "title": "Main_Checkpoint_ZImage_Config", "description": "Model config for Z-Image single-file checkpoint models (safetensors, etc)." @@ -41819,6 +45863,9 @@ "const": "z-image", "title": "Base", "default": "z-image" + }, + "variant": { + "$ref": "#/components/schemas/ZImageVariantType" } }, "type": "object", @@ -41838,10 +45885,11 @@ "default_settings", "format", "repo_variant", - "base" + "base", + "variant" ], "title": "Main_Diffusers_ZImage_Config", - "description": "Model config for Z-Image diffusers models (Z-Image-Turbo, Z-Image-Base, Z-Image-Edit)." + "description": "Model config for Z-Image diffusers models (Z-Image-Turbo, Z-Image-Base)." }, "Main_GGUF_FLUX_Config": { "properties": { @@ -42283,6 +46331,9 @@ "const": "gguf_quantized", "title": "Format", "default": "gguf_quantized" + }, + "variant": { + "$ref": "#/components/schemas/ZImageVariantType" } }, "type": "object", @@ -42302,7 +46353,8 @@ "default_settings", "config_path", "base", - "format" + "format", + "variant" ], "title": "Main_GGUF_ZImage_Config", "description": "Model config for GGUF-quantized Z-Image transformer models." @@ -46098,6 +50150,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -46125,6 +50180,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -46170,12 +50228,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -46191,6 +50255,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -46612,6 +50679,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -46639,6 +50709,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -46684,12 +50757,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -46705,6 +50784,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -47019,6 +51101,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -47046,6 +51131,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -47091,12 +51179,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -47112,6 +51206,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -47284,6 +51381,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -47311,6 +51411,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -47356,12 +51459,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -47377,6 +51486,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -47730,6 +51842,9 @@ { "$ref": "#/components/schemas/Flux2VariantType" }, + { + "$ref": "#/components/schemas/ZImageVariantType" + }, { "$ref": "#/components/schemas/Qwen3VariantType" }, @@ -47933,6 +52048,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_ZImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/Main_BnBNF4_FLUX_Config" }, @@ -47960,6 +52078,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Flux2_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -48005,12 +52126,18 @@ { "$ref": "#/components/schemas/LoRA_LyCORIS_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_LyCORIS_FLUX_Config" }, { "$ref": "#/components/schemas/LoRA_LyCORIS_ZImage_Config" }, + { + "$ref": "#/components/schemas/LoRA_LyCORIS_Anima_Config" + }, { "$ref": "#/components/schemas/LoRA_OMI_SDXL_Config" }, @@ -48026,6 +52153,9 @@ { "$ref": "#/components/schemas/LoRA_Diffusers_SDXL_Config" }, + { + "$ref": "#/components/schemas/LoRA_Diffusers_Flux2_Config" + }, { "$ref": "#/components/schemas/LoRA_Diffusers_FLUX_Config" }, @@ -49479,6 +53609,12 @@ "description": "The destination of the queue item", "title": "Destination" }, + "user_id": { + "default": "system", + "description": "The ID of the user who created the queue item", + "title": "User Id", + "type": "string" + }, "status": { "description": "The new status of the queue item", "enum": ["pending", "in_progress", "completed", "failed", "canceled"], @@ -49581,6 +53717,7 @@ "batch_id", "origin", "destination", + "user_id", "status", "error_type", "error_message", @@ -50058,7 +54195,7 @@ }, "Qwen3VariantType": { "type": "string", - "enum": ["qwen3_4b", "qwen3_8b"], + "enum": ["qwen3_4b", "qwen3_8b", "qwen3_06b"], "title": "Qwen3VariantType", "description": "Qwen3 text encoder variants based on model size." }, @@ -50455,6 +54592,372 @@ "$ref": "#/components/schemas/IntegerCollectionOutput" } }, + "RecallParameter": { + "properties": { + "positive_prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Positive Prompt", + "description": "Positive prompt text" + }, + "negative_prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Negative Prompt", + "description": "Negative prompt text" + }, + "model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model", + "description": "Main model name/identifier" + }, + "refiner_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Refiner Model", + "description": "Refiner model name/identifier" + }, + "vae_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Vae Model", + "description": "VAE model name/identifier" + }, + "scheduler": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduler", + "description": "Scheduler name" + }, + "steps": { + "anyOf": [ + { + "type": "integer", + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Steps", + "description": "Number of generation steps" + }, + "refiner_steps": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Refiner Steps", + "description": "Number of refiner steps" + }, + "cfg_scale": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Cfg Scale", + "description": "CFG scale for guidance" + }, + "cfg_rescale_multiplier": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Cfg Rescale Multiplier", + "description": "CFG rescale multiplier" + }, + "refiner_cfg_scale": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Refiner Cfg Scale", + "description": "Refiner CFG scale" + }, + "guidance": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Guidance", + "description": "Guidance scale" + }, + "width": { + "anyOf": [ + { + "type": "integer", + "minimum": 64.0 + }, + { + "type": "null" + } + ], + "title": "Width", + "description": "Image width in pixels" + }, + "height": { + "anyOf": [ + { + "type": "integer", + "minimum": 64.0 + }, + { + "type": "null" + } + ], + "title": "Height", + "description": "Image height in pixels" + }, + "seed": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Seed", + "description": "Random seed" + }, + "denoise_strength": { + "anyOf": [ + { + "type": "number", + "maximum": 1.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Denoise Strength", + "description": "Denoising strength" + }, + "refiner_denoise_start": { + "anyOf": [ + { + "type": "number", + "maximum": 1.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Refiner Denoise Start", + "description": "Refiner denoising start" + }, + "clip_skip": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Clip Skip", + "description": "CLIP skip layers" + }, + "seamless_x": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Seamless X", + "description": "Enable seamless X tiling" + }, + "seamless_y": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Seamless Y", + "description": "Enable seamless Y tiling" + }, + "refiner_positive_aesthetic_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Refiner Positive Aesthetic Score", + "description": "Refiner positive aesthetic score" + }, + "refiner_negative_aesthetic_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Refiner Negative Aesthetic Score", + "description": "Refiner negative aesthetic score" + }, + "loras": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/LoRARecallParameter" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Loras", + "description": "List of LoRAs with their weights" + }, + "control_layers": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ControlNetRecallParameter" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Control Layers", + "description": "List of control adapters (ControlNet, T2I Adapter, Control LoRA) with their settings" + }, + "ip_adapters": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/IPAdapterRecallParameter" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ip Adapters", + "description": "List of IP Adapters with their settings" + }, + "reference_images": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ReferenceImageRecallParameter" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Reference Images", + "description": "List of model-free reference images for architectures that consume reference images directly (FLUX.2 Klein, FLUX Kontext, Qwen Image Edit). The frontend picks the correct config type based on the currently-selected main model." + } + }, + "additionalProperties": false, + "type": "object", + "title": "RecallParameter", + "description": "Request model for updating recallable parameters." + }, + "RecallParametersUpdatedEvent": { + "description": "Event model for recall_parameters_updated", + "properties": { + "timestamp": { + "description": "The timestamp of the event", + "title": "Timestamp", + "type": "integer" + }, + "queue_id": { + "description": "The ID of the queue", + "title": "Queue Id", + "type": "string" + }, + "parameters": { + "additionalProperties": true, + "description": "The recall parameters that were updated", + "title": "Parameters", + "type": "object" + } + }, + "required": ["timestamp", "queue_id", "parameters"], + "title": "RecallParametersUpdatedEvent", + "type": "object" + }, "RectangleMaskInvocation": { "category": "conditioning", "class": "invocation", @@ -50615,6 +55118,19 @@ "$ref": "#/components/schemas/MaskOutput" } }, + "ReferenceImageRecallParameter": { + "properties": { + "image_name": { + "type": "string", + "title": "Image Name", + "description": "The filename of the reference image in outputs/images" + } + }, + "type": "object", + "required": ["image_name"], + "title": "ReferenceImageRecallParameter", + "description": "Global reference-image configuration for recall.\n\nUsed for reference images that feed directly into the main model rather\nthan through a separate IP-Adapter / ControlNet model \u2014 for example\nFLUX.2 Klein, FLUX Kontext, and Qwen Image Edit. The receiving frontend\npicks the correct config type (``flux2_reference_image`` /\n``qwen_image_reference_image`` / ``flux_kontext_reference_image``) based\non the currently-selected main model." + }, "RemoteModelFile": { "properties": { "url": { @@ -53440,6 +57956,36 @@ "title": "Queue Id", "description": "The id of the queue with which this item is associated" }, + "user_id": { + "type": "string", + "title": "User Id", + "description": "The id of the user who created this queue item", + "default": "system" + }, + "user_display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Display Name", + "description": "The display name of the user who created this queue item, if available" + }, + "user_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Email", + "description": "The email of the user who created this queue item, if available" + }, "field_values": { "anyOf": [ { @@ -53481,36 +58027,6 @@ } ], "description": "The workflow associated with this queue item" - }, - "user_id": { - "type": "string", - "title": "User Id", - "description": "The id of the user who created this queue item", - "default": "system" - }, - "user_display_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "User Display Name", - "description": "The display name of the user who created this queue item, if available" - }, - "user_email": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "User Email", - "description": "The email of the user who created this queue item, if available" } }, "type": "object", @@ -53642,6 +58158,76 @@ ], "title": "SessionQueueStatus" }, + "SetupRequest": { + "properties": { + "email": { + "type": "string", + "title": "Email", + "description": "Admin email address" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name", + "description": "Admin display name" + }, + "password": { + "type": "string", + "title": "Password", + "description": "Admin password" + } + }, + "type": "object", + "required": ["email", "password"], + "title": "SetupRequest", + "description": "Request body for initial admin setup." + }, + "SetupResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Whether setup was successful" + }, + "user": { + "$ref": "#/components/schemas/UserDTO", + "description": "Created admin user information" + } + }, + "type": "object", + "required": ["success", "user"], + "title": "SetupResponse", + "description": "Response from successful admin setup." + }, + "SetupStatusResponse": { + "properties": { + "setup_required": { + "type": "boolean", + "title": "Setup Required", + "description": "Whether initial setup is required" + }, + "multiuser_enabled": { + "type": "boolean", + "title": "Multiuser Enabled", + "description": "Whether multiuser mode is enabled" + }, + "strict_password_checking": { + "type": "boolean", + "title": "Strict Password Checking", + "description": "Whether strict password requirements are enforced" + } + }, + "type": "object", + "required": ["setup_required", "multiuser_enabled", "strict_password_checking"], + "title": "SetupStatusResponse", + "description": "Response for setup status check." + }, "ShowImageInvocation": { "category": "image", "class": "invocation", @@ -55239,6 +59825,9 @@ { "$ref": "#/components/schemas/Flux2VariantType" }, + { + "$ref": "#/components/schemas/ZImageVariantType" + }, { "$ref": "#/components/schemas/Qwen3VariantType" }, @@ -57828,6 +62417,116 @@ "required": ["affected_boards", "unstarred_images"], "title": "UnstarredImagesResult" }, + "UserDTO": { + "properties": { + "user_id": { + "type": "string", + "title": "User Id", + "description": "Unique user identifier" + }, + "email": { + "type": "string", + "title": "Email", + "description": "User email address" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name", + "description": "Display name" + }, + "is_admin": { + "type": "boolean", + "title": "Is Admin", + "description": "Whether user has admin privileges", + "default": false + }, + "is_active": { + "type": "boolean", + "title": "Is Active", + "description": "Whether user account is active", + "default": true + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At", + "description": "When the user was created" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At", + "description": "When the user was last updated" + }, + "last_login_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Last Login At", + "description": "When user last logged in" + } + }, + "type": "object", + "required": ["user_id", "email", "created_at", "updated_at"], + "title": "UserDTO", + "description": "User data transfer object." + }, + "UserProfileUpdateRequest": { + "properties": { + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name", + "description": "New display name" + }, + "current_password": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Current Password", + "description": "Current password (required when changing password)" + }, + "new_password": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "New Password", + "description": "New password" + } + }, + "type": "object", + "title": "UserProfileUpdateRequest", + "description": "Request body for a user to update their own profile." + }, "VAEField": { "properties": { "vae": { @@ -57936,6 +62635,129 @@ "title": "VAEOutput", "type": "object" }, + "VAE_Checkpoint_Anima_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "type": { + "type": "string", + "const": "vae", + "title": "Type", + "default": "vae" + }, + "format": { + "type": "string", + "const": "checkpoint", + "title": "Format", + "default": "checkpoint" + }, + "base": { + "type": "string", + "const": "anima", + "title": "Base", + "default": "anima" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "cover_image", + "config_path", + "type", + "format", + "base" + ], + "title": "VAE_Checkpoint_Anima_Config", + "description": "Model config for Anima QwenImage VAE checkpoint models (AutoencoderKLQwenImage)." + }, "VAE_Checkpoint_FLUX_Config": { "properties": { "key": { @@ -59883,9 +64705,27 @@ "orig_default": null, "orig_required": false }, + "shift": { + "anyOf": [ + { + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Override the timestep shift (mu) for the sigma schedule. Leave blank to auto-calculate based on image dimensions (recommended). Lower values (~0.5) produce less noise shifting, higher values (~1.15) produce more.", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "Shift" + }, "scheduler": { "default": "euler", - "description": "Scheduler (sampler) for the denoising process. Euler is the default and recommended for Z-Image-Turbo. Heun is 2nd-order (better quality, 2x slower). LCM is optimized for few steps.", + "description": "Scheduler (sampler) for the denoising process. Euler is the default and recommended. Heun is 2nd-order (better quality, 2x slower). LCM works with Turbo only (not Base).", "enum": ["euler", "heun", "lcm"], "field_kind": "input", "input": "any", @@ -59911,7 +64751,7 @@ "tags": ["image", "z-image"], "title": "Denoise - Z-Image", "type": "object", - "version": "1.4.0", + "version": "1.5.0", "output": { "$ref": "#/components/schemas/LatentsOutput" } @@ -60176,9 +65016,27 @@ "orig_default": null, "orig_required": false }, + "shift": { + "anyOf": [ + { + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Override the timestep shift (mu) for the sigma schedule. Leave blank to auto-calculate based on image dimensions (recommended). Lower values (~0.5) produce less noise shifting, higher values (~1.15) produce more.", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "Shift" + }, "scheduler": { "default": "euler", - "description": "Scheduler (sampler) for the denoising process. Euler is the default and recommended for Z-Image-Turbo. Heun is 2nd-order (better quality, 2x slower). LCM is optimized for few steps.", + "description": "Scheduler (sampler) for the denoising process. Euler is the default and recommended. Heun is 2nd-order (better quality, 2x slower). LCM works with Turbo only (not Base).", "enum": ["euler", "heun", "lcm"], "field_kind": "input", "input": "any", @@ -61038,44 +65896,17 @@ "$ref": "#/components/schemas/ZImageConditioningOutput" } }, - "UserDTO": { - "type": "object", - "required": ["user_id", "email", "is_admin", "is_active"], - "properties": { - "user_id": { - "type": "string", - "title": "User Id", - "description": "The user ID" - }, - "email": { - "type": "string", - "title": "Email", - "description": "The user email" - }, - "display_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Display Name", - "description": "The user display name" - }, - "is_admin": { - "type": "boolean", - "title": "Is Admin", - "description": "Whether the user is an admin" - }, - "is_active": { - "type": "boolean", - "title": "Is Active", - "description": "Whether the user is active" - } - }, - "title": "UserDTO" + "ZImageVariantType": { + "type": "string", + "enum": ["turbo", "zbase"], + "title": "ZImageVariantType", + "description": "Z-Image model variants." + } + }, + "securitySchemes": { + "HTTPBearer": { + "type": "http", + "scheme": "bearer" } } } diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts index fe9cc309fa..ffd59ed659 100644 --- a/invokeai/frontend/web/src/services/api/schema.ts +++ b/invokeai/frontend/web/src/services/api/schema.ts @@ -1042,14 +1042,14 @@ export type paths = { }; /** * Get Intermediates Count - * @description Gets the count of intermediate images. Non-admin users only see their own intermediates. + * @description Gets the count of intermediate images */ get: operations["get_intermediates_count"]; put?: never; post?: never; /** * Clear Intermediates - * @description Clears all intermediates. Requires admin. + * @description Clears all intermediates */ delete: operations["clear_intermediates"]; options?: never; @@ -1103,11 +1103,7 @@ export type paths = { }; /** * Get Image Full - * @description Gets a full-resolution image file. - * - * This endpoint is intentionally unauthenticated because browsers load images - * via tags which cannot send Bearer tokens. Image names are UUIDs, - * providing security through unguessability. + * @description Gets a full-resolution image file */ get: operations["get_image_full"]; put?: never; @@ -1116,11 +1112,7 @@ export type paths = { options?: never; /** * Get Image Full - * @description Gets a full-resolution image file. - * - * This endpoint is intentionally unauthenticated because browsers load images - * via tags which cannot send Bearer tokens. Image names are UUIDs, - * providing security through unguessability. + * @description Gets a full-resolution image file */ head: operations["get_image_full_head"]; patch?: never; @@ -1135,11 +1127,7 @@ export type paths = { }; /** * Get Image Thumbnail - * @description Gets a thumbnail image file. - * - * This endpoint is intentionally unauthenticated because browsers load images - * via tags which cannot send Bearer tokens. Image names are UUIDs, - * providing security through unguessability. + * @description Gets a thumbnail image file */ get: operations["get_image_thumbnail"]; put?: never; @@ -1199,7 +1187,7 @@ export type paths = { post?: never; /** * Delete Uncategorized Images - * @description Deletes all uncategorized images owned by the current user (or all if admin) + * @description Deletes all images that are uncategorized */ delete: operations["delete_uncategorized_images"]; options?: never; @@ -1739,7 +1727,7 @@ export type paths = { }; /** * Get Queue Item Ids - * @description Gets all queue item ids that match the given parameters. Non-admin users only see their own items. + * @description Gets all queue item ids that match the given parameters */ get: operations["get_queue_item_ids"]; put?: never; @@ -1999,7 +1987,7 @@ export type paths = { }; /** * Get Queue Status - * @description Gets the status of the session queue. Non-admin users see only their own counts and cannot see current item details unless they own it. + * @description Gets the status of the session queue */ get: operations["get_queue_status"]; put?: never; @@ -2019,7 +2007,7 @@ export type paths = { }; /** * Get Batch Status - * @description Gets the status of a batch. Non-admin users only see their own batches. + * @description Gets the status of the session queue */ get: operations["get_batch_status"]; put?: never; @@ -2083,7 +2071,7 @@ export type paths = { }; /** * Counts By Destination - * @description Gets the counts of queue items by destination. Non-admin users only see their own items. + * @description Gets the counts of queue items by destination */ get: operations["counts_by_destination"]; put?: never; @@ -2175,11 +2163,7 @@ export type paths = { }; /** * Get Workflow Thumbnail - * @description Gets a workflow's thumbnail image. - * - * This endpoint is intentionally unauthenticated because browsers load images - * via tags which cannot send Bearer tokens. Workflow IDs are UUIDs, - * providing security through unguessability. + * @description Gets a workflow's thumbnail image */ get: operations["get_workflow_thumbnail"]; /** @@ -2198,26 +2182,6 @@ export type paths = { patch?: never; trace?: never; }; - "/api/v1/workflows/i/{workflow_id}/is_public": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - /** - * Update Workflow Is Public - * @description Updates whether a workflow is shared publicly - */ - patch: operations["update_workflow_is_public"]; - trace?: never; - }; "/api/v1/workflows/tags": { parameters: { query?: never; @@ -3623,8 +3587,6 @@ export type components = { * @description Whether or not the board is archived */ archived?: boolean | null; - /** @description The visibility of the board. */ - board_visibility?: components["schemas"]["BoardVisibility"] | null; }; /** * BoardDTO @@ -3671,11 +3633,6 @@ export type components = { * @description Whether or not the board is archived. */ archived: boolean; - /** - * @description The visibility of the board. - * @default private - */ - board_visibility?: components["schemas"]["BoardVisibility"]; /** * Image Count * @description The number of images in the board. @@ -3709,12 +3666,6 @@ export type components = { * @enum {string} */ BoardRecordOrderBy: "created_at" | "board_name"; - /** - * BoardVisibility - * @description The visibility options for a board. - * @enum {string} - */ - BoardVisibility: "private" | "shared" | "public"; /** Body_add_image_to_board */ Body_add_image_to_board: { /** @@ -3967,14 +3918,6 @@ export type components = { /** @description The updated workflow */ workflow: components["schemas"]["Workflow"]; }; - /** Body_update_workflow_is_public */ - Body_update_workflow_is_public: { - /** - * Is Public - * @description Whether the workflow should be shared publicly - */ - is_public: boolean; - }; /** Body_upload_image */ Body_upload_image: { /** @@ -23781,6 +23724,11 @@ export type components = { * @description List of IP Adapters with their settings */ ip_adapters?: components["schemas"]["IPAdapterRecallParameter"][] | null; + /** + * Reference Images + * @description List of model-free reference images for architectures that consume reference images directly (FLUX.2 Klein, FLUX Kontext, Qwen Image Edit). The frontend picks the correct config type based on the currently-selected main model. + */ + reference_images?: components["schemas"]["ReferenceImageRecallParameter"][] | null; }; /** * RecallParametersUpdatedEvent @@ -23797,11 +23745,6 @@ export type components = { * @description The ID of the queue */ queue_id: string; - /** - * User Id - * @description The ID of the user whose recall parameters were updated - */ - user_id: string; /** * Parameters * @description The recall parameters that were updated @@ -23880,6 +23823,24 @@ export type components = { */ type: "rectangle_mask"; }; + /** + * ReferenceImageRecallParameter + * @description Global reference-image configuration for recall. + * + * Used for reference images that feed directly into the main model rather + * than through a separate IP-Adapter / ControlNet model — for example + * FLUX.2 Klein, FLUX Kontext, and Qwen Image Edit. The receiving frontend + * picks the correct config type (``flux2_reference_image`` / + * ``qwen_image_reference_image`` / ``flux_kontext_reference_image``) based + * on the currently-selected main model. + */ + ReferenceImageRecallParameter: { + /** + * Image Name + * @description The filename of the reference image in outputs/images + */ + image_name: string; + }; /** * RemoteModelFile * @description Information about a downloadable file that forms part of a model. @@ -25402,6 +25363,16 @@ export type components = { * @description Total number of queue items */ total: number; + /** + * User Pending + * @description Number of queue items with status 'pending' for the current user + */ + user_pending?: number | null; + /** + * User In Progress + * @description Number of queue items with status 'in_progress' for the current user + */ + user_in_progress?: number | null; }; /** * SetupRequest @@ -25457,11 +25428,6 @@ export type components = { * @description Whether strict password requirements are enforced */ strict_password_checking: boolean; - /** - * Admin Email - * @description Email of the first active admin user, if any - */ - admin_email?: string | null; }; /** * Show Image @@ -28725,16 +28691,6 @@ export type components = { * @description The opened timestamp of the workflow. */ opened_at?: string | null; - /** - * User Id - * @description The id of the user who owns this workflow. - */ - user_id: string; - /** - * Is Public - * @description Whether this workflow is shared with all users. - */ - is_public: boolean; /** @description The workflow. */ workflow: components["schemas"]["Workflow"]; }; @@ -28765,16 +28721,6 @@ export type components = { * @description The opened timestamp of the workflow. */ opened_at?: string | null; - /** - * User Id - * @description The id of the user who owns this workflow. - */ - user_id: string; - /** - * Is Public - * @description Whether this workflow is shared with all users. - */ - is_public: boolean; /** * Description * @description The description of the workflow. @@ -28798,7 +28744,7 @@ export type components = { * @description The order by options for workflow records * @enum {string} */ - WorkflowRecordOrderBy: "created_at" | "updated_at" | "opened_at" | "name" | "is_public"; + WorkflowRecordOrderBy: "created_at" | "updated_at" | "opened_at" | "name"; /** WorkflowRecordWithThumbnailDTO */ WorkflowRecordWithThumbnailDTO: { /** @@ -28826,16 +28772,6 @@ export type components = { * @description The opened timestamp of the workflow. */ opened_at?: string | null; - /** - * User Id - * @description The id of the user who owns this workflow. - */ - user_id: string; - /** - * Is Public - * @description Whether this workflow is shared with all users. - */ - is_public: boolean; /** @description The workflow. */ workflow: components["schemas"]["Workflow"]; /** @@ -33966,8 +33902,6 @@ export interface operations { query?: string | null; /** @description Whether to include/exclude recent workflows */ has_been_opened?: boolean | null; - /** @description Filter by public/shared status */ - is_public?: boolean | null; }; header?: never; path?: never; @@ -34142,49 +34076,11 @@ export interface operations { }; }; }; - update_workflow_is_public: { - parameters: { - query?: never; - header?: never; - path: { - /** @description The workflow to update */ - workflow_id: string; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["Body_update_workflow_is_public"]; - }; - }; - responses: { - /** @description Successful Response */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["WorkflowRecordDTO"]; - }; - }; - /** @description Validation Error */ - 422: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["HTTPValidationError"]; - }; - }; - }; - }; get_all_tags: { parameters: { query?: { /** @description The categories to include */ categories?: components["schemas"]["WorkflowCategory"][] | null; - /** @description Filter by public/shared status */ - is_public?: boolean | null; }; header?: never; path?: never; @@ -34221,8 +34117,6 @@ export interface operations { categories?: components["schemas"]["WorkflowCategory"][] | null; /** @description Whether to include/exclude recent workflows */ has_been_opened?: boolean | null; - /** @description Filter by public/shared status */ - is_public?: boolean | null; }; header?: never; path?: never; @@ -34259,8 +34153,6 @@ export interface operations { categories: components["schemas"]["WorkflowCategory"][]; /** @description Whether to include/exclude recent workflows */ has_been_opened?: boolean | null; - /** @description Filter by public/shared status */ - is_public?: boolean | null; }; header?: never; path?: never;