{"openapi":"3.1.0","info":{"title":"Shopify Service","version":"0.1.0"},"paths":{"/api/v1/training/train":{"post":{"tags":["training"],"summary":"Train","description":"Start a training job for a project.\n\nCreates a training job on Replicate (Flux1) or fal.ai (Flux2/Qwen Image),\nuploads training images, and records the training in the database.\nAlso creates a transaction for the training cost.","operationId":"train_api_v1_training_train_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_TrainResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/training/training/zip-images":{"post":{"tags":["training"],"summary":"Zip Training Images","description":"Create a zip file of training images with captions.\n\nDownloads images from URLs, resizes them to 1024px, and creates a zip file\ncontaining PNG images and corresponding caption text files. The zip is uploaded\nto Firebase Storage and a public URL is returned.","operationId":"zip_training_images_api_v1_training_training_zip_images_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZipTrainingImagesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ZipTrainingImagesResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/training/get-status/{training_id}":{"post":{"tags":["training"],"summary":"Get Training Status","description":"Check training status and update database.","operationId":"get_training_status_api_v1_training_get_status__training_id__post","parameters":[{"name":"training_id","in":"path","required":true,"schema":{"type":"string","title":"Training Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/training/describe-image":{"post":{"tags":["training"],"summary":"Describe Training Image","description":"Generate a LoRA training caption for an image (type-aware, trigger-word injection).","operationId":"describe_training_image_api_v1_training_describe_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingCaptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_TrainingCaptionResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/thefluxtrain/story-agent/stream/v3":{"post":{"tags":["story-agent"],"summary":"Story Agent Stream V3","description":"Stream continuous story agent updates via Server-Sent Events (V3).","operationId":"story_agent_stream_v3_api_v1_thefluxtrain_story_agent_stream_v3_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryAgentStreamRequestV3"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/thefluxtrain/story-agent/infer-project":{"post":{"tags":["story-agent"],"summary":"Infer Project","description":"Infer a ProjectV3 object from legacy metadata or outdated ProjectV3.\n\nIf legacy_data contains an agent_version field, it will be removed before inference\nto ensure the project is reinferred in the current format.","operationId":"infer_project_api_v1_thefluxtrain_story_agent_infer_project_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Legacy Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectV3"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-manipulation/resize-image":{"post":{"tags":["image-manipulation"],"summary":"Resize Image","description":"Resize an image from URL or base64 data URI.\n\nTakes an image URL or base64 data URI, resizes it to the specified maximum\nside length (maintaining aspect ratio), composites it on a white background\nif it has transparency, and returns the result as a base64 data URI.","operationId":"resize_image_api_v1_image_manipulation_resize_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResizeImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ResizeImageResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-manipulation/image-analyzer/analyze":{"post":{"tags":["image-manipulation"],"summary":"Analyze Image","description":"Analyze image using OpenAI vision API.\n\nAction types: cartoon_info (JSON), general_description (text)","operationId":"analyze_image_api_v1_image_manipulation_image_analyzer_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageAnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ImageAnalyzeResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/upscale/image":{"post":{"tags":["upscale"],"summary":"Upscale Image","description":"Upscale an image using Topaz Labs model.","operationId":"upscale_image_api_v1_upscale_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/upscale/video":{"post":{"tags":["upscale"],"summary":"Upscale Video","description":"Upscale a video using Topaz Labs model.","operationId":"upscale_video_api_v1_upscale_video_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-manipulation/vision/prompt":{"post":{"tags":["image-manipulation"],"summary":"Vision Prompt","description":"Resize image (max_side, default 200), run OpenAI vision with system_prompt, return text.\n\nRequires login. No credits charged; nothing is stored.","operationId":"vision_prompt_api_v1_image_manipulation_vision_prompt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisionPromptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_VisionPromptResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/voices":{"get":{"tags":["audio-generate"],"summary":"List Elevenlabs Voices","operationId":"list_elevenlabs_voices_api_v1_audio_generate_voices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ElevenLabsVoicesResponse_"}}}}}}},"/api/v1/audio-generate/text-to-speech":{"post":{"tags":["audio-generate"],"summary":"Text To Speech","operationId":"text_to_speech_api_v1_audio_generate_text_to_speech_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextToSpeechRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_AudioGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/speech-to-speech":{"post":{"tags":["audio-generate"],"summary":"Speech To Speech","operationId":"speech_to_speech_api_v1_audio_generate_speech_to_speech_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechToSpeechRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_AudioGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/isolation":{"post":{"tags":["audio-generate"],"summary":"Isolation","operationId":"isolation_api_v1_audio_generate_isolation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioIsolationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_AudioGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/dubbing/start":{"post":{"tags":["audio-generate"],"summary":"Dubbing Start","operationId":"dubbing_start_api_v1_audio_generate_dubbing_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_AudioGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/sound-effects":{"post":{"tags":["audio-generate"],"summary":"Sound Effects","operationId":"sound_effects_api_v1_audio_generate_sound_effects_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoundEffectsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_AudioGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/speech-to-text":{"post":{"tags":["audio-generate"],"summary":"Speech To Text","operationId":"speech_to_text_api_v1_audio_generate_speech_to_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechToTextRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_SpeechToTextResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio-generate/transcribe-words":{"post":{"tags":["audio-generate"],"summary":"Transcribe Words","operationId":"transcribe_words_api_v1_audio_generate_transcribe_words_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscribeWordsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_TranscribeWordsResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/llm/chat-completion":{"post":{"tags":["llm"],"summary":"Chat Completion","description":"Run OpenAI chat completion with system prompt, instruction, and messages.","operationId":"chat_completion_api_v1_llm_chat_completion_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMCompletionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_LLMCompletionResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/llm/describe-image":{"post":{"tags":["llm"],"summary":"Describe Image","description":"Describe an image using an OpenAI vision model (URL or base64).","operationId":"describe_image_api_v1_llm_describe_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageDescriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_LLMCompletionResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-generate/lora":{"post":{"tags":["image-generate"],"summary":"Lora Generate","description":"Generate image using LoRA models.\n\nSupports single LoRA, multiple LoRAs (via extra_lora or multi-LoRA API),\nand Runpod API when use_oyecartoon=True with mask and image.","operationId":"lora_generate_api_v1_image_generate_lora_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoraGenerateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_LoraGenerateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-generate/cartoon-converter/convert":{"post":{"tags":["image-generate"],"summary":"Cartoon Convert","description":"Convert image to cartoon style using Flux Kontext Pro model.\n\nSupports multiple action types:\n- cartoonify: 3D pixar style cartoon\n- plain: White T-shirt and jeans\n- adventurer: Adventurer with backpack\n- knight: Knight with sword and shield\n- futuristic: Futuristic character\n- schoolkid: Schoolkid with uniform\n- superhero: Superhero with cape and mask\n- spider-boy: Spider-boy character\n- spider-girl: Spider-girl character\n- super-boy: Super-boy character\n- super-girl: Super-girl character","operationId":"cartoon_convert_api_v1_image_generate_cartoon_converter_convert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartoonConvertRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CartoonConvertResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-generate/generate":{"post":{"tags":["image-generate"],"summary":"Image Generate","description":"Generate image using Flux 2 Pro model.\n\nSupports text-to-image (prompt only), image-to-image (input_images only),\nor combined text and image inputs.\n\nPricing is calculated dynamically based on:\n- Resolution multiplier: 25 * megapixels\n- Input images: 25 * number of input images\n\nExample: 2 MP resolution with 2 input images = (25 * 2) + (25 * 2) = 100","operationId":"image_generate_api_v1_image_generate_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ImageGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-generate/client/generate":{"post":{"tags":["image-generate"],"summary":"Client Image Generate","description":"Generate image using Flux 2 Pro model.\n\nSupports text-to-image (prompt only), image-to-image (input_images only),\nor combined text and image inputs.\n\nPricing is calculated dynamically based on:\n- Resolution multiplier: 25 * megapixels\n- Input images: 25 * number of input images\n\nExample: 2 MP resolution with 2 input images = (25 * 2) + (25 * 2) = 100","operationId":"client_image_generate_api_v1_image_generate_client_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ImageGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/image-generate/product-photography/generate":{"post":{"tags":["image-generate"],"summary":"Product Photography Generate","description":"Generate product photo with background replacement.","operationId":"product_photography_generate_api_v1_image_generate_product_photography_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPhotoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProductPhotoResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/product-photography/generate":{"post":{"tags":["image-generate"],"summary":"Product Photography Generate Legacy","description":"Generate product photo with background replacement (legacy endpoint).","operationId":"product_photography_generate_legacy_api_v1_product_photography_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPhotoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProductPhotoResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/video-generate/generate":{"post":{"tags":["video-generate"],"summary":"Video Generate","description":"Generate video using Veo models.\n\nSupports multiple models:\n- veo-3.1-fast / veo-3.1: Replicate-backed video generation\n- kling-o3-*: fal.ai-backed video generation (image/text/reference/edit/video-reference)\n- creatify-aurora: fal.ai-backed image + reference_audios (exactly 1) to video\n- podcaster-v1: TheFluxTrain pipeline provider (image + reference_audios exactly 1, 720p/1080p)\n- seedance-v1.5-pro-image-to-video / seedance-v1.5-pro-text-to-video: fal.ai Seedance 1.5 Pro\n- seedance-2.0-fast-text-to-video / seedance-2.0-text-to-video / seedance-2.0-fast-image-to-video /\n  seedance-2.0-image-to-video / seedance-2.0-fast-reference-to-video / seedance-2.0-reference-to-video:\n  fal.ai ByteDance Seedance 2.0 (fast and quality tiers are separate model ids).\n  Reference-to-video accepts reference_images (max 9), reference_videos (max 3),\n  reference_audios (max 3), up to 12 reference files total.\n- happy-horse-image-to-video / happy-horse-reference-to-video / happy-horse-text-to-video /\n  happy-horse-video-edit: fal.ai Alibaba Happy Horse 1.0\n- gemini-omni-flash-text-to-video / gemini-omni-flash-image-to-video /\n  gemini-omni-flash-reference-to-video / gemini-omni-flash-video-edit:\n  fal.ai Google Gemini Omni Flash (720p, synced audio, 3–10s for generation modalities)\n- wan-2-7-pro-text-to-video / wan-2-7-pro-image-to-video /\n  wan-2-7-pro-reference-to-video / wan-2-7-pro-video-edit:\n  fal.ai Alibaba Wan 2.7 Pro (720p/1080p; T2V/I2V 2–15s, R2V 2–10s, edit 0–10s)\n- ltx-2.3-text-to-video / ltx-2.3-image-to-video / ltx-2.3-audio-to-video /\n  ltx-2.3-video-to-video / ltx-2.3-reference-video-to-video / ltx-2.3-extend-video:\n  fal.ai LTX-2.3 22B (pass loras + lora_scales to use /lora endpoint)\n\nPricing is calculated dynamically based on:\n- Duration: 25 credits per second (base)\n- Resolution: 1.0x for 720p, 1.5x for 1080p\n- Model: 1.0x for veo-3.1-fast, 1.5x for veo-3.1\n\nExample: 8s video at 1080p with veo-3.1 = (25 * 8 * 1.5 * 1.5) = 450 credits","operationId":"video_generate_api_v1_video_generate_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoGenerationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_VideoGenerationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/video-generate/create-prompt":{"post":{"tags":["video-generate"],"summary":"Create Video Prompt","description":"Create a model-ready video prompt from a brief instruction.\n\nUses a prompt skill guide for the chosen model. Seedance 2.0 models use the\nSeedance 2.0 cinematic guide; other models use a generic video guide.\nNo credits charged; nothing is stored.","operationId":"create_video_prompt_api_v1_video_generate_create_prompt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoPromptCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_VideoPromptCreateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/motion-control/animate":{"post":{"tags":["motion-control"],"summary":"Motion Control Animate","description":"Animate an image based on motion from a reference video.\n\nThis endpoint uses Kling v2.6 motion control to animate a static image\nby applying motion patterns from a reference video. The service:\n- Takes an image URL and a video URL as inputs\n- Applies the motion from the video to the image\n- Returns an animated video with the image following the motion pattern\n\nRequired parameters:\n- image: URL of the image to animate (for Kling) or character image to replace (for Wan)\n- video: URL of the reference video containing the desired motion\n\nOptional parameters:\n- model_variant: Model variant - \"std\" ($0.07/sec), \"pro\" ($0.12/sec), or \"wan-2.2-animate-replace\" ($0.2/sec) (default: \"pro\")\n- duration: Estimated video duration in seconds for pricing calculation (default: 5.0)\n- prompt: Text prompt to guide the animation (default: \"\")\n- keep_original_sound: Whether to preserve audio from reference video (default: True)\n- character_orientation: Orientation preference (default: \"video\")\n- refert_num: Number of reference frames (for Wan)\n- frames_per_second: Output video FPS (for Wan)\n- go_fast: Fast processing (for Wan)\n- resolution: Video resolution (for Wan)\n\nPricing:\n- std: $0.07 per second of output video (~14 seconds for $1)\n- pro: $0.12 per second of output video\n- wan-2.2-animate-replace: $0.2 per second of output video","operationId":"motion_control_animate_api_v1_motion_control_animate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MotionControlRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_MotionControlResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe/paymentlink":{"post":{"tags":["stripe"],"summary":"Create Payment Link","description":"Return checkout URL in the legacy format { \"url\": \"...\" }.","operationId":"create_payment_link_api_v1_stripe_paymentlink_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentLinkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Payment Link Api V1 Stripe Paymentlink Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe/webhook":{"post":{"tags":["stripe"],"summary":"Stripe Webhook","description":"Receive and process Stripe webhook callbacks.\nSupports checkout, invoices (recurring), and subscription lifecycle events.","operationId":"stripe_webhook_api_v1_stripe_webhook_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stripe Webhook Api V1 Stripe Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe/billing-portal":{"get":{"tags":["stripe"],"summary":"Get Billing Portal","description":"Get Stripe billing portal link for subscription management.","operationId":"get_billing_portal_api_v1_stripe_billing_portal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Billing Portal Api V1 Stripe Billing Portal Get"}}}}}}},"/api/v1/stripe/subscription":{"get":{"tags":["stripe"],"summary":"Get Subscription","description":"Get current subscription or credit-pass status for the authenticated user.","operationId":"get_subscription_api_v1_stripe_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatusResponse"}}}}}}},"/api/v1/stripe/session":{"get":{"tags":["stripe"],"summary":"Get Session","description":"Get session status and amount paid.","operationId":"get_session_api_v1_stripe_session_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Session Api V1 Stripe Session Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/share/storybook/{folder_id}":{"get":{"tags":["share","share"],"summary":"Get Public Storybook","description":"Get a ProjectV3 by folder ID.\n- If story is public: returns regardless of authentication\n- If user is authenticated and owns the story: returns even if not public\n- Otherwise: returns 404","operationId":"get_public_storybook_api_v1_share_storybook__folder_id__get","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","description":"Folder ID","title":"Folder Id"},"description":"Folder ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectV3"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/editor/generations":{"get":{"tags":["editor"],"summary":"Get Editor Generations","description":"Fetch editor generations for the authenticated user with filtering and pagination.","operationId":"get_editor_generations_api_v1_editor_generations_get","parameters":[{"name":"media_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by media type: image, video, or all","title":"Media Type"},"description":"Filter by media type: image, video, or all"},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by folder ID or comma-separated folder IDs","title":"Folder Id"},"description":"Filter by folder ID or comma-separated folder IDs"},{"name":"is_liked","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by liked status","title":"Is Liked"},"description":"Filter by liked status"},{"name":"is_deleted","in":"query","required":false,"schema":{"type":"boolean","description":"Filter by deleted status","default":false,"title":"Is Deleted"},"description":"Filter by deleted status"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Number of items per page","default":100,"title":"Page Size"},"description":"Number of items per page"},{"name":"last_created_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination: get items created before this timestamp","title":"Last Created At"},"description":"Pagination: get items created before this timestamp"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_List_EditorGeneration__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/editor/generations/delete":{"post":{"tags":["editor"],"summary":"Delete Editor Generations","description":"Permanently delete editor generations (typically used for clearing trash).\nOnly deletes records owned by the authenticated user.","operationId":"delete_editor_generations_api_v1_editor_generations_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteEditorGenerationsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/editor-generations":{"get":{"tags":["admin"],"summary":"Admin List Editor Generations","description":"List rows in the `editor` table. Optionally filter by owner_id.\n\nWhen `owner_id` is set, the response includes `owner_folders`: non-deleted\nfolders for that user (for filter UI).\n\nSorted by `created_at` descending, then `id` descending.\n\nRequires Supabase `app_metadata.role` of `admin` on the authenticated user.","operationId":"admin_list_editor_generations_api_v1_admin_editor_generations_get","parameters":[{"name":"owner_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by owner user id; omit to list all owners (subject to filters)","title":"Owner Id"},"description":"Filter by owner user id; omit to list all owners (subject to filters)"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by media type (image, video, audio), or 'all' for any","title":"Type"},"description":"Filter by media type (image, video, audio), or 'all' for any"},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO-8601 lower bound on created_at (inclusive)","title":"Created After"},"description":"ISO-8601 lower bound on created_at (inclusive)"},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO-8601 upper bound on created_at (inclusive)","title":"Created Before"},"description":"ISO-8601 upper bound on created_at (inclusive)"},{"name":"is_deleted","in":"query","required":false,"schema":{"type":"boolean","description":"When include_deleted is false, restrict to this deleted flag","default":false,"title":"Is Deleted"},"description":"When include_deleted is false, restrict to this deleted flag"},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean","description":"If true, do not filter by is_deleted (show trashed and active)","default":false,"title":"Include Deleted"},"description":"If true, do not filter by is_deleted (show trashed and active)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Page Size"}},{"name":"last_created_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor: return rows with created_at strictly before this timestamp","title":"Last Created At"},"description":"Pagination cursor: return rows with created_at strictly before this timestamp"},{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"When set, only generations in this folder (editor.folder_id)","title":"Folder Id"},"description":"When set, only generations in this folder (editor.folder_id)"},{"name":"unfiled_only","in":"query","required":false,"schema":{"type":"boolean","description":"When true, only rows with null folder_id (ignored if folder_id is set)","default":false,"title":"Unfiled Only"},"description":"When true, only rows with null folder_id (ignored if folder_id is set)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_List_EditorGeneration__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/pipeline-jobs":{"get":{"tags":["admin"],"summary":"Admin List Pipeline Jobs","description":"List rows in the `pipeline_jobs` table.\n\nSorted by `created_at` descending, then `id` descending.\n\nRequires Supabase `app_metadata.role` of `admin` on the authenticated user.","operationId":"admin_list_pipeline_jobs_api_v1_admin_pipeline_jobs_get","parameters":[{"name":"owner_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by owner user id","title":"Owner Id"},"description":"Filter by owner user id"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by job status (pending, running, succeeded, failed), or 'all'","title":"Status"},"description":"Filter by job status (pending, running, succeeded, failed), or 'all'"},{"name":"job_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive substring match on job_name","title":"Job Name"},"description":"Case-insensitive substring match on job_name"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}},{"name":"last_created_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor: return rows with created_at strictly before this timestamp","title":"Last Created At"},"description":"Pagination cursor: return rows with created_at strictly before this timestamp"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_List_PipelineJob__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/pipeline-jobs/{job_id}/retry-from-failed-stage":{"post":{"tags":["admin"],"summary":"Admin Retry Pipeline Job From Failed Stage","description":"Reset a failed pipeline job to rerun from the failed stage.\n\nClears failed step state, re-charges credits, and schedules an immediate tick.","operationId":"admin_retry_pipeline_job_from_failed_stage_api_v1_admin_pipeline_jobs__job_id__retry_from_failed_stage_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_PipelineJob_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/pipeline-jobs/{job_id}/rerun-whole-pipeline":{"post":{"tags":["admin"],"summary":"Admin Rerun Whole Pipeline Job","description":"Reset all pipeline stages and rerun the job from stage 1.\n\nClears all step state, re-charges credits, and schedules an immediate tick.","operationId":"admin_rerun_whole_pipeline_job_api_v1_admin_pipeline_jobs__job_id__rerun_whole_pipeline_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_PipelineJob_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/jobs/tick":{"post":{"tags":["jobs"],"summary":"Tick Pipeline Jobs","description":"Process due pipeline jobs — called by Google Cloud Scheduler.","operationId":"tick_pipeline_jobs_api_v1_jobs_tick_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_PipelineTickResponse_"}}}}}}},"/api/v1/jobs/check-status/{editor_id}":{"post":{"tags":["jobs"],"summary":"Check Job Status","description":"Check the status of any asynchronous generation job and update the record.","operationId":"check_job_status_api_v1_jobs_check_status__editor_id__post","parameters":[{"name":"editor_id","in":"path","required":true,"schema":{"type":"string","title":"Editor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/":{"post":{"tags":["api-keys"],"summary":"Create Api Key","description":"Create a new API key; the plaintext secret is returned only in this response.","operationId":"create_api_key_api_v1_api_keys__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ApiKeyCreated_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Delete Api Key","description":"Permanently delete an API key owned by the authenticated user.","operationId":"delete_api_key_api_v1_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cli/manifest":{"get":{"tags":["cli"],"summary":"Get Cli Manifest","description":"Return the CLI command catalog (session or API key required).","operationId":"get_cli_manifest_api_v1_cli_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/cli/skills":{"get":{"tags":["cli"],"summary":"List Cli Skills","description":"List bundled TFT CLI agent skills.","operationId":"list_cli_skills_api_v1_cli_skills_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_SkillListResponse_"}}}}}}},"/api/v1/cli/skills/{skill_name}":{"get":{"tags":["cli"],"summary":"Get Cli Skill","description":"Return one bundled skill file as text.","operationId":"get_cli_skill_api_v1_cli_skills__skill_name__get","parameters":[{"name":"skill_name","in":"path","required":true,"schema":{"type":"string","title":"Skill Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_SkillGetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cli/auth/device":{"post":{"tags":["cli-auth"],"summary":"Start Cli Device Auth","description":"Start device-code login for thefluxtrain-cli (no auth required).","operationId":"start_cli_device_auth_api_v1_cli_auth_device_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliDeviceStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CliDeviceStartResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cli/auth/token":{"post":{"tags":["cli-auth"],"summary":"Poll Cli Device Token","description":"Poll for CLI authorization completion (no auth required).","operationId":"poll_cli_device_token_api_v1_cli_auth_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliDeviceTokenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_Union_CliDeviceTokenPending__CliDeviceTokenApproved__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cli/auth/approve":{"post":{"tags":["cli-auth"],"summary":"Approve Cli Device Auth","description":"Approve a CLI device code (website session required).","operationId":"approve_cli_device_auth_api_v1_cli_auth_approve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliDeviceApproveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CliDeviceApproveResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cli/auth/revoke":{"post":{"tags":["cli-auth"],"summary":"Revoke Cli Device Auth","description":"Revoke the current CLI API key (``x-api-key`` header required).","operationId":"revoke_cli_device_auth_api_v1_cli_auth_revoke_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CliDeviceRevokeResponse_"}}}}}}},"/api/v1/cli/auth/deny":{"post":{"tags":["cli-auth"],"summary":"Deny Cli Device Auth","description":"Deny a CLI device code (website session required).","operationId":"deny_cli_device_auth_api_v1_cli_auth_deny_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliDeviceDenyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CliDeviceApproveResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flow-studio/flows":{"get":{"tags":["flow-studio"],"summary":"List Flows","description":"List saved flows for the authenticated user.","operationId":"list_flows_api_v1_flow_studio_flows_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowListResponse_"}}}}}},"post":{"tags":["flow-studio"],"summary":"Create Flow Endpoint","description":"Create a new flow or duplicate an existing one.","operationId":"create_flow_endpoint_api_v1_flow_studio_flows_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowCreateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flow-studio/flows/{flow_id}":{"get":{"tags":["flow-studio"],"summary":"Get Flow","description":"Fetch one flow by id (metadata and graph state).","operationId":"get_flow_api_v1_flow_studio_flows__flow_id__get","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","title":"Flow Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowGetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["flow-studio"],"summary":"Update Flow Metadata Endpoint","description":"Update flow name/description without changing graph state.","operationId":"update_flow_metadata_endpoint_api_v1_flow_studio_flows__flow_id__patch","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","title":"Flow Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowUpdateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flow-studio/flows/{flow_id}/apply":{"post":{"tags":["flow-studio"],"summary":"Apply Flow Actions","description":"Apply ordered graph mutations to a flow.","operationId":"apply_flow_actions_api_v1_flow_studio_flows__flow_id__apply_post","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"string","title":"Flow Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowApplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowApplyResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flow-studio/agent":{"post":{"tags":["flow-studio"],"summary":"Run Flow Studio Agent","description":"Plan graph edits and return validated apply actions in one request.","operationId":"run_flow_studio_agent_api_v1_flow_studio_agent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowStudioAgentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowStudioAgentResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flow-studio/nodes":{"get":{"tags":["flow-studio"],"summary":"List Flow Nodes","description":"Full catalog of node types (definitionId, ports, when to use).","operationId":"list_flow_nodes_api_v1_flow_studio_nodes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowNodesResponse_"}}}}}}},"/api/v1/flow-studio/collections":{"get":{"tags":["flow-studio"],"summary":"List Flow Collections","description":"List collections available to the user (owned + public library).","operationId":"list_flow_collections_api_v1_flow_studio_collections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FlowCollectionsResponse_"}}}}}}},"/api/v1/video-editor/projects":{"get":{"tags":["video-editor"],"summary":"List Projects","operationId":"list_projects_api_v1_video_editor_projects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProjectListResponse_"}}}}}},"post":{"tags":["video-editor"],"summary":"Create Project Endpoint","operationId":"create_project_endpoint_api_v1_video_editor_projects_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProjectCreateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/video-editor/projects/{project_id}":{"get":{"tags":["video-editor"],"summary":"Get Project","operationId":"get_project_api_v1_video_editor_projects__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProjectGetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["video-editor"],"summary":"Update Project Metadata Endpoint","description":"Update project name/description without changing timeline state.","operationId":"update_project_metadata_endpoint_api_v1_video_editor_projects__project_id__patch","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProjectUpdateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["video-editor"],"summary":"Delete Project Endpoint","operationId":"delete_project_endpoint_api_v1_video_editor_projects__project_id__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProjectDeleteResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/video-editor/projects/{project_id}/apply":{"post":{"tags":["video-editor"],"summary":"Apply Project Actions","operationId":"apply_project_actions_api_v1_video_editor_projects__project_id__apply_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectApplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_ProjectApplyResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/video-editor/agent":{"post":{"tags":["video-editor"],"summary":"Run Video Editor Agent","description":"Plan timeline edits and return validated apply actions in one request.","operationId":"run_video_editor_agent_api_v1_video_editor_agent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoEditorAgentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_VideoEditorAgentResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters":{"get":{"tags":["characters"],"summary":"List Characters","description":"List user-owned characters and public library entries.","operationId":"list_characters_api_v1_characters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterListResponse_"}}}}}},"post":{"tags":["characters"],"summary":"Create Character Endpoint","description":"Create an empty character or product folder.","operationId":"create_character_endpoint_api_v1_characters_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterCreateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{character_id}":{"get":{"tags":["characters"],"summary":"Get Character","description":"Fetch one character by id (user-owned UUID or public:ID).","operationId":"get_character_api_v1_characters__character_id__get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterGetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{character_id}/add-preview":{"post":{"tags":["characters"],"summary":"Add Preview","description":"Register an uploaded image URL as a preview without AI generation.","operationId":"add_preview_api_v1_characters__character_id__add_preview_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterAddPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterAddPreviewResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{character_id}/generate-preview":{"post":{"tags":["characters"],"summary":"Generate Preview","description":"Generate a 3:4 preview mug shot with nano-banana and save to folder meta.","operationId":"generate_preview_api_v1_characters__character_id__generate_preview_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterGeneratePreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterGeneratePreviewResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{character_id}/sheet-prompt":{"post":{"tags":["characters"],"summary":"Sheet Prompt","description":"Derive a character/product sheet generation prompt from a preview image.","operationId":"sheet_prompt_api_v1_characters__character_id__sheet_prompt_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterSheetPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterSheetPromptResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{character_id}/generate-sheet":{"post":{"tags":["characters"],"summary":"Generate Sheet","description":"Generate a 16:9 character/product sheet with gpt-image-2 and save to folder meta.","operationId":"generate_sheet_api_v1_characters__character_id__generate_sheet_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterGenerateSheetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_CharacterGenerateSheetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/files/upload":{"post":{"tags":["files"],"summary":"Upload File","description":"Upload a file and return its public URL.\n\nAgent/CLI only — the frontend site uploads directly to Firebase Storage.","operationId":"upload_file_api_v1_files_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_files_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIResponse_FileUploadResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/status":{"get":{"summary":"Status Root","description":"Global status endpoint (no auth).","operationId":"status_root_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Status Root Status Get"}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Health check endpoint (no auth required).\nVerifies database connectivity before returning OK.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/version":{"get":{"summary":"Version","description":"Return service version information.","operationId":"version_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Version Version Get"}}}}}}},"/metrics":{"get":{"summary":"Metrics","description":"Prometheus-compatible metrics endpoint.","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Metrics Metrics Get"}}}}}}}},"components":{"schemas":{"APIResponse":{"properties":{"data":{"anyOf":[{},{"type":"null"}],"title":"Data"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse","description":"Standard API response wrapper."},"APIResponse_ApiKeyCreated_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ApiKeyCreated"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ApiKeyCreated]"},"APIResponse_AudioGenerationResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/AudioGenerationResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[AudioGenerationResponse]"},"APIResponse_CartoonConvertResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CartoonConvertResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CartoonConvertResponse]"},"APIResponse_CharacterAddPreviewResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterAddPreviewResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterAddPreviewResponse]"},"APIResponse_CharacterCreateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterCreateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterCreateResponse]"},"APIResponse_CharacterGeneratePreviewResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterGeneratePreviewResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterGeneratePreviewResponse]"},"APIResponse_CharacterGenerateSheetResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterGenerateSheetResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterGenerateSheetResponse]"},"APIResponse_CharacterGetResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterGetResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterGetResponse]"},"APIResponse_CharacterListResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterListResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterListResponse]"},"APIResponse_CharacterSheetPromptResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CharacterSheetPromptResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CharacterSheetPromptResponse]"},"APIResponse_CliDeviceApproveResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CliDeviceApproveResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CliDeviceApproveResponse]"},"APIResponse_CliDeviceRevokeResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CliDeviceRevokeResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CliDeviceRevokeResponse]"},"APIResponse_CliDeviceStartResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CliDeviceStartResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[CliDeviceStartResponse]"},"APIResponse_ElevenLabsVoicesResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ElevenLabsVoicesResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ElevenLabsVoicesResponse]"},"APIResponse_FileUploadResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FileUploadResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FileUploadResponse]"},"APIResponse_FlowApplyResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowApplyResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowApplyResponse]"},"APIResponse_FlowCollectionsResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowCollectionsResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowCollectionsResponse]"},"APIResponse_FlowCreateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowCreateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowCreateResponse]"},"APIResponse_FlowGetResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowGetResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowGetResponse]"},"APIResponse_FlowListResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowListResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowListResponse]"},"APIResponse_FlowNodesResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowNodesResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowNodesResponse]"},"APIResponse_FlowStudioAgentResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowStudioAgentResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowStudioAgentResponse]"},"APIResponse_FlowUpdateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/FlowUpdateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[FlowUpdateResponse]"},"APIResponse_ImageAnalyzeResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ImageAnalyzeResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ImageAnalyzeResponse]"},"APIResponse_ImageGenerationResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ImageGenerationResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ImageGenerationResponse]"},"APIResponse_LLMCompletionResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/LLMCompletionResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[LLMCompletionResponse]"},"APIResponse_List_EditorGeneration__":{"properties":{"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/EditorGeneration"},"type":"array"},{"type":"null"}],"title":"Data"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[List[EditorGeneration]]"},"APIResponse_List_PipelineJob__":{"properties":{"data":{"anyOf":[{"items":{"$ref":"#/components/schemas/PipelineJob"},"type":"array"},{"type":"null"}],"title":"Data"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[List[PipelineJob]]"},"APIResponse_LoraGenerateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/LoraGenerateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[LoraGenerateResponse]"},"APIResponse_MotionControlResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/MotionControlResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[MotionControlResponse]"},"APIResponse_PipelineJob_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/PipelineJob"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[PipelineJob]"},"APIResponse_PipelineTickResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/PipelineTickResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[PipelineTickResponse]"},"APIResponse_ProductPhotoResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProductPhotoResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProductPhotoResponse]"},"APIResponse_ProjectApplyResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProjectApplyResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProjectApplyResponse]"},"APIResponse_ProjectCreateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProjectCreateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProjectCreateResponse]"},"APIResponse_ProjectDeleteResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProjectDeleteResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProjectDeleteResponse]"},"APIResponse_ProjectGetResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProjectGetResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProjectGetResponse]"},"APIResponse_ProjectListResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProjectListResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProjectListResponse]"},"APIResponse_ProjectUpdateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ProjectUpdateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ProjectUpdateResponse]"},"APIResponse_ResizeImageResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ResizeImageResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ResizeImageResponse]"},"APIResponse_SkillGetResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/SkillGetResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[SkillGetResponse]"},"APIResponse_SkillListResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/SkillListResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[SkillListResponse]"},"APIResponse_SpeechToTextResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/SpeechToTextResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[SpeechToTextResponse]"},"APIResponse_TrainResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/TrainResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[TrainResponse]"},"APIResponse_TrainingCaptionResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/TrainingCaptionResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[TrainingCaptionResponse]"},"APIResponse_TranscribeWordsResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/TranscribeWordsResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[TranscribeWordsResponse]"},"APIResponse_Union_CliDeviceTokenPending__CliDeviceTokenApproved__":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/CliDeviceTokenPending"},{"$ref":"#/components/schemas/CliDeviceTokenApproved"},{"type":"null"}],"title":"Data"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[Union[CliDeviceTokenPending, CliDeviceTokenApproved]]"},"APIResponse_VideoEditorAgentResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/VideoEditorAgentResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[VideoEditorAgentResponse]"},"APIResponse_VideoGenerationResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/VideoGenerationResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[VideoGenerationResponse]"},"APIResponse_VideoPromptCreateResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/VideoPromptCreateResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[VideoPromptCreateResponse]"},"APIResponse_VisionPromptResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/VisionPromptResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[VisionPromptResponse]"},"APIResponse_ZipTrainingImagesResponse_":{"properties":{"data":{"anyOf":[{"$ref":"#/components/schemas/ZipTrainingImagesResponse"},{"type":"null"}]},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[ZipTrainingImagesResponse]"},"APIResponse_dict_":{"properties":{"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"type":"null"}]},"owner_folders":{"anyOf":[{"items":{"$ref":"#/components/schemas/OwnerFolderItem"},"type":"array"},{"type":"null"}],"title":"Owner Folders"}},"type":"object","title":"APIResponse[dict]"},"ApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":256,"minLength":1,"title":"Name"},"expiry":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiry"}},"type":"object","required":["name"],"title":"ApiKeyCreate","description":"Payload to create an API key (secret is generated server-side)."},"ApiKeyCreated":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"key":{"type":"string","title":"Key"},"expiry":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expiry"}},"type":"object","required":["id","key"],"title":"ApiKeyCreated","description":"Response right after creation; includes the plaintext secret once."},"AudioGenerationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated audio"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input/output and provider info"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"Update timestamp"},"media_type":{"type":"string","title":"Media Type","description":"Media type (AUDIO)","default":"AUDIO"},"status":{"type":"string","title":"Status","description":"Generation status","default":"SUCCESS"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Provider name"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider record ID"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"AudioGenerationResponse","description":"Response model for audio generation (editor record)."},"AudioIsolationRequest":{"properties":{"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"audio_url":{"type":"string","minLength":1,"title":"Audio Url","description":"Source audio URL"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Optional filename hint for provider"}},"type":"object","required":["audio_url"],"title":"AudioIsolationRequest"},"BeatOutlineV3":{"properties":{"order":{"type":"integer","title":"Order"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"}},"type":"object","required":["order","title","summary"],"title":"BeatOutlineV3","description":"Outline-only representation of a beat (no content)."},"Body_upload_file_api_v1_files_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_api_v1_files_upload_post"},"CartoonConvertRequest":{"properties":{"image":{"type":"string","title":"Image","description":"Input image URL or base64 data URI"},"action":{"type":"string","title":"Action","description":"Action type: cartoonify, plain, adventurer, knight, futuristic, schoolkid, superhero, spider-boy, spider-girl, super-boy, super-girl"},"gender":{"anyOf":[{"type":"string","enum":["male","female"]},{"type":"null"}],"title":"Gender","description":"Gender filter: 'male' or 'female'. Filters available actions based on gender compatibility. If not provided, will infer from action or allow actions that support both genders.","default":"male"},"aspect_ratio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aspect Ratio","description":"Aspect ratio for the generated image","default":"match_input_image"},"output_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format","description":"Output image format (jpg, png)","default":"png"},"safety_tolerance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Safety Tolerance","description":"Safety tolerance level (0-5)","default":2},"prompt_upsampling":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prompt Upsampling","description":"Enable prompt upsampling","default":false},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID (for character-builder screen)"},"_screen":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen","description":"Screen context (e.g., 'character-builder')"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"API version","default":"v1"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"}},"type":"object","required":["image","action"],"title":"CartoonConvertRequest","description":"Request model for cartoon image conversion."},"CartoonConvertResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated cartoon image"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input and output"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"CartoonConvertResponse","description":"Response model for cartoon image conversion."},"CharacterAddPreviewRequest":{"properties":{"image_url":{"type":"string","minLength":1,"title":"Image Url","description":"Public image URL (upload via tft files upload)."}},"type":"object","required":["image_url"],"title":"CharacterAddPreviewRequest"},"CharacterAddPreviewResponse":{"properties":{"preview_url":{"type":"string","title":"Preview Url"},"character":{"$ref":"#/components/schemas/CharacterDetail"}},"type":"object","required":["preview_url","character"],"title":"CharacterAddPreviewResponse"},"CharacterCreateRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"Display name for the new character or product."}},"type":"object","required":["name"],"title":"CharacterCreateRequest"},"CharacterCreateResponse":{"properties":{"character_id":{"type":"string","title":"Character Id"},"name":{"type":"string","title":"Name"},"character":{"$ref":"#/components/schemas/CharacterDetail"}},"type":"object","required":["character_id","name","character"],"title":"CharacterCreateResponse"},"CharacterDetail":{"properties":{"character_id":{"type":"string","title":"Character Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source":{"type":"string","enum":["user","public"],"title":"Source"},"previews":{"items":{"$ref":"#/components/schemas/CharacterImageRef"},"type":"array","title":"Previews"},"character_sheets":{"items":{"$ref":"#/components/schemas/CharacterImageRef"},"type":"array","title":"Character Sheets"},"canonical_folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Folder Id"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["character_id","name","source"],"title":"CharacterDetail"},"CharacterGeneratePreviewRequest":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Character or product description for text-to-image preview generation."},"source_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Image","description":"Reference image URL for image-guided preview generation."},"locked_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locked Preview","description":"Existing preview URL to include as an edit reference."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Preview model: nano-banana or nano-banana-2.","default":"nano-banana-2"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Resolution for nano-banana models (e.g. 1K, 2K, 4K).","default":"2K"}},"type":"object","title":"CharacterGeneratePreviewRequest"},"CharacterGeneratePreviewResponse":{"properties":{"preview_url":{"type":"string","title":"Preview Url"},"character":{"$ref":"#/components/schemas/CharacterDetail"}},"type":"object","required":["preview_url","character"],"title":"CharacterGeneratePreviewResponse"},"CharacterGenerateSheetRequest":{"properties":{"prompt":{"type":"string","minLength":1,"title":"Prompt","description":"Sheet generation prompt."},"preview_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Image Url","description":"Locked preview URL passed as an input image."},"sheet_reference_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sheet Reference Image Url","description":"Optional layout/format reference image URL."},"locked_sheet_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locked Sheet Url","description":"Existing sheet URL to include as an edit reference."}},"type":"object","required":["prompt"],"title":"CharacterGenerateSheetRequest"},"CharacterGenerateSheetResponse":{"properties":{"sheet_url":{"type":"string","title":"Sheet Url"},"character":{"$ref":"#/components/schemas/CharacterDetail"}},"type":"object","required":["sheet_url","character"],"title":"CharacterGenerateSheetResponse"},"CharacterGetResponse":{"properties":{"character":{"$ref":"#/components/schemas/CharacterDetail"}},"type":"object","required":["character"],"title":"CharacterGetResponse"},"CharacterImageMetadata":{"properties":{"clothing":{"type":"string","title":"Clothing","description":"Detailed description of the character's clothing and attire"},"background":{"type":"string","title":"Background","description":"Description of the background or setting in the image"},"hair_style":{"type":"string","title":"Hair Style","description":"Description of the character's hair style, color, and appearance"},"accessories":{"type":"string","title":"Accessories","description":"Description of any accessories, jewelry, or items the character is wearing or holding"},"gender":{"type":"string","enum":["male","female","neutral","non-binary"],"title":"Gender","description":"Character's gender presentation"},"image_style":{"type":"string","title":"Image Style","description":"Description of the artistic style of the image (e.g., '3D Pixar', '2D cartoon', 'watercolor', 'digital art')"}},"type":"object","required":["clothing","background","hair_style","accessories","gender","image_style"],"title":"CharacterImageMetadata","description":"Structured response model for character image metadata extraction."},"CharacterImageRef":{"properties":{"url":{"type":"string","title":"Url"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["url"],"title":"CharacterImageRef"},"CharacterListResponse":{"properties":{"characters":{"items":{"$ref":"#/components/schemas/CharacterSummary"},"type":"array","title":"Characters"},"selection_guidance":{"type":"string","title":"Selection Guidance","default":"User-owned characters can be edited with create, generate-preview, sheet-prompt, and generate-sheet. Public library entries (source=public, id prefix public:) are read-only references."}},"type":"object","required":["characters"],"title":"CharacterListResponse"},"CharacterSheetPromptRequest":{"properties":{"preview_image_url":{"type":"string","minLength":1,"title":"Preview Image Url","description":"Locked preview image URL to analyze for sheet prompt generation."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional character name; defaults to the folder name."},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions","description":"Optional extra requirements for the sheet layout, poses, panels, or style. Combined with the default sheet template when generating the vision prompt."}},"type":"object","required":["preview_image_url"],"title":"CharacterSheetPromptRequest"},"CharacterSheetPromptResponse":{"properties":{"prompt":{"type":"string","title":"Prompt"},"warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warning"}},"type":"object","required":["prompt"],"title":"CharacterSheetPromptResponse"},"CharacterSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source":{"type":"string","enum":["user","public"],"title":"Source"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","source"],"title":"CharacterSummary"},"CharacterV3":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","default":""},"traits":{"items":{"type":"string"},"type":"array","title":"Traits"},"goals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goals"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"image_metadata":{"anyOf":[{"$ref":"#/components/schemas/CharacterImageMetadata"},{"type":"null"}],"description":"Extracted metadata from character image including clothing, background, hair_style, accessories, gender, and image_style"}},"type":"object","required":["name"],"title":"CharacterV3","description":"Character model with stable ID."},"CliDeviceApproveRequest":{"properties":{"user_code":{"type":"string","maxLength":16,"minLength":4,"title":"User Code"}},"type":"object","required":["user_code"],"title":"CliDeviceApproveRequest"},"CliDeviceApproveResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"message":{"type":"string","title":"Message","default":"CLI authorized. Return to your terminal."}},"type":"object","title":"CliDeviceApproveResponse"},"CliDeviceDenyRequest":{"properties":{"user_code":{"type":"string","maxLength":16,"minLength":4,"title":"User Code"}},"type":"object","required":["user_code"],"title":"CliDeviceDenyRequest"},"CliDeviceRevokeResponse":{"properties":{"deleted_id":{"type":"integer","title":"Deleted Id"}},"type":"object","required":["deleted_id"],"title":"CliDeviceRevokeResponse"},"CliDeviceStartRequest":{"properties":{"client_label":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Client Label","description":"Optional label for the machine running the CLI"}},"type":"object","title":"CliDeviceStartRequest"},"CliDeviceStartResponse":{"properties":{"device_code":{"type":"string","title":"Device Code"},"user_code":{"type":"string","title":"User Code"},"verification_url":{"type":"string","title":"Verification Url"},"verification_url_complete":{"type":"string","title":"Verification Url Complete"},"expires_in":{"type":"integer","title":"Expires In"},"interval":{"type":"integer","title":"Interval","default":5}},"type":"object","required":["device_code","user_code","verification_url","verification_url_complete","expires_in"],"title":"CliDeviceStartResponse"},"CliDeviceTokenApproved":{"properties":{"status":{"type":"string","title":"Status","default":"approved"},"api_key":{"type":"string","title":"Api Key"},"email":{"type":"string","title":"Email"},"key_id":{"type":"integer","title":"Key Id"}},"type":"object","required":["api_key","email","key_id"],"title":"CliDeviceTokenApproved"},"CliDeviceTokenPending":{"properties":{"status":{"type":"string","title":"Status","default":"pending"}},"type":"object","title":"CliDeviceTokenPending"},"CliDeviceTokenRequest":{"properties":{"device_code":{"type":"string","minLength":16,"title":"Device Code"}},"type":"object","required":["device_code"],"title":"CliDeviceTokenRequest"},"DeleteEditorGenerationsRequest":{"properties":{"ids":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Ids","description":"Editor generation IDs"},"require_trashed":{"type":"boolean","title":"Require Trashed","description":"Only delete items already in trash (is_deleted=true)","default":true},"delete_files":{"type":"boolean","title":"Delete Files","description":"Attempt to delete Firebase Storage objects","default":true}},"type":"object","required":["ids"],"title":"DeleteEditorGenerationsRequest"},"DubbingStartRequest":{"properties":{"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"audio_url":{"type":"string","minLength":1,"title":"Audio Url","description":"Source audio URL"},"target_lang":{"type":"string","maxLength":10,"minLength":2,"title":"Target Lang","description":"Target language"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Optional filename hint for provider"}},"type":"object","required":["audio_url","target_lang"],"title":"DubbingStartRequest"},"EditorGeneration":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"owner_id":{"type":"string","title":"Owner Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"is_downloaded":{"type":"boolean","title":"Is Downloaded","default":false},"meta":{"title":"Meta","default":{}},"is_liked":{"type":"boolean","title":"Is Liked","default":false},"is_deleted":{"type":"boolean","title":"Is Deleted","default":false},"source":{"type":"string","title":"Source","default":"flux-toolkit"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id"},"fb_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fb Url"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"screen":{"type":"string","title":"Screen","default":"studio"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"media_type":{"$ref":"#/components/schemas/MediaType","default":"IMAGE"},"status":{"$ref":"#/components/schemas/EditorStatus","default":"SUCCESS"},"provider":{"$ref":"#/components/schemas/EditorProvider","default":"REPLICATE"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"}},"type":"object","required":["id","created_at","owner_id"],"title":"EditorGeneration","description":"Schema for returning editor generations."},"EditorProvider":{"type":"string","enum":["REPLICATE","FAL","ELEVENLABS","TheFluxTrain"],"title":"EditorProvider","description":"Editor provider enum for editor table."},"EditorStatus":{"type":"string","enum":["PENDING","PROCESSING","SUCCESS","FAILED"],"title":"EditorStatus","description":"Editor status enum for editor table."},"ElevenLabsVoiceSummary":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"}},"type":"object","required":["id","label","description"],"title":"ElevenLabsVoiceSummary"},"ElevenLabsVoicesResponse":{"properties":{"voices":{"items":{"$ref":"#/components/schemas/ElevenLabsVoiceSummary"},"type":"array","title":"Voices"},"selection_guidance":{"type":"string","title":"Selection Guidance","default":"Use `id` as --voice-id for text-to-speech and speech-to-speech. Read label and description to pick the best voice for the script tone."}},"type":"object","required":["voices"],"title":"ElevenLabsVoicesResponse"},"ErrorResponse":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","message"],"title":"ErrorResponse","description":"Error response structure."},"ExecutionPlan":{"properties":{"id":{"type":"string","title":"Id"},"steps":{"items":{"$ref":"#/components/schemas/ExecutionStep"},"type":"array","title":"Steps"},"preservation_rules":{"items":{"type":"string"},"type":"array","title":"Preservation Rules"},"goal":{"type":"string","title":"Goal","description":"A clear description of what success looks like after executing all steps. This should describe the desired end state and can be used to validate if the plan was executed successfully.","default":""},"validation_criteria":{"items":{"type":"string"},"type":"array","title":"Validation Criteria","description":"List of specific, measurable criteria to check if the goal has been achieved. Each criterion should be a clear statement that can be verified (e.g., 'Beat with id beat-4 has been modified', 'Scene for beat-2 has been created')."},"user_plan_title":{"type":"string","title":"User Plan Title","description":"Short user-friendly title for this plan (max ~8 words). Must avoid technical terms and IDs.","default":""},"user_plan_summary":{"items":{"type":"string"},"type":"array","title":"User Plan Summary","description":"3–6 short bullet points describing the plan for an end user. Must avoid technical terms (beats/ids/etc.) and should use character names when relevant."},"user_execution_start_message":{"type":"string","title":"User Execution Start Message","description":"User-friendly message to show when plan execution begins (1–2 sentences). Must avoid technical terms and IDs; use character names when relevant.","default":""},"user_execution_complete_message":{"type":"string","title":"User Execution Complete Message","description":"User-friendly summary to show after the plan finishes executing (2–4 sentences). Summarize what changed in the storybook without technical terms or IDs; use character names when relevant.","default":""}},"type":"object","title":"ExecutionPlan","description":"Full list of steps to fulfill an edit intent."},"ExecutionStep":{"properties":{"id":{"type":"string","title":"Id","description":"Auto-generated unique identifier for this execution step. Do not set manually."},"state":{"type":"string","enum":["queued","executing","completed"],"title":"State","description":"Execution state of this step for UI progress tracking.","default":"queued"},"action":{"type":"string","title":"Action","description":"The action to perform. Must be one of: 'generate_ideas', 'develop_full_story', 'sync_story_and_beats', 'integrate_character_into_beats', 'modify_beat', 'update_scene_from_beat', 'update_shot_description', 'regenerate_image', 'add_beat', 'remove_beat', 'create_scene_for_beat', 'generate_character_image', 'update_character', 'update_style', 'validate_characters', 'extract_character_image_metadata', 'set_style_from_character_image'."},"target_id":{"type":"string","title":"Target Id","description":"The ID of the entity being targeted (beat ID, scene ID, shot ID, etc.). Use 'all_beats' or 'all' for operations that apply to multiple entities. Use specific entity IDs from the project state when known."},"parameters":{"items":{"$ref":"#/components/schemas/ParameterV3"},"type":"array","title":"Parameters","description":"List of parameters needed for this action. Common parameters: 'idea' (for develop_full_story), 'instructions' (for modify_beat, update_shot_description, update_character), 'summary' (for add_beat). Extract values from the intent parameters or generate appropriate defaults."},"reason":{"type":"string","title":"Reason","description":"Brief explanation (1-2 sentences) of why this step is necessary and how it contributes to fulfilling the intent."},"execution_summary":{"type":"string","title":"Execution Summary","description":"A detailed summary (2-4 sentences) describing what change or action will be performed on the story. This should explain: what entity is being modified, what the change entails, and how it affects the story. Use this to provide context for the execution phase.","default":""},"user_facing_summary":{"type":"string","title":"User Facing Summary","description":"Short, user-friendly description of this step (1 sentence). Must avoid technical terms (e.g., beats, ids, schemas, tools) and should use character names when relevant.","default":""},"user_facing_update":{"type":"string","title":"User Facing Update","description":"User-friendly progress update to show when this step starts executing (1–2 sentences). Must avoid technical terms and IDs; use character names and story terms where natural.","default":""},"user_facing_completion":{"type":"string","title":"User Facing Completion","description":"User-friendly message to show after this step completes (1 sentence). Must avoid technical terms and IDs.","default":""}},"type":"object","required":["action","target_id","reason"],"title":"ExecutionStep","description":"Atomic step in the execution plan."},"FileUploadResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"FileUploadResponse"},"FlowApplyRequest":{"properties":{"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions","description":"Ordered graph mutations. Each object uses op = create | update | delete | connect with camelCase property names matching persisted graph state."}},"type":"object","title":"FlowApplyRequest"},"FlowApplyResponse":{"properties":{"flow_id":{"type":"string","title":"Flow Id"},"flow":{"additionalProperties":true,"type":"object","title":"Flow"}},"type":"object","required":["flow_id","flow"],"title":"FlowApplyResponse"},"FlowCollectionItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source":{"type":"string","title":"Source"}},"type":"object","required":["id","name","source"],"title":"FlowCollectionItem"},"FlowCollectionsResponse":{"properties":{"collections":{"items":{"$ref":"#/components/schemas/FlowCollectionItem"},"type":"array","title":"Collections"},"selection_guidance":{"type":"string","title":"Selection Guidance"}},"type":"object","required":["collections","selection_guidance"],"title":"FlowCollectionsResponse"},"FlowCreateRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Display name of the new flow."},"source_flow_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Flow Id","description":"Optional flow id to duplicate; must belong to the same user."}},"type":"object","required":["name"],"title":"FlowCreateRequest"},"FlowCreateResponse":{"properties":{"flow_id":{"type":"string","title":"Flow Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"flow":{"additionalProperties":true,"type":"object","title":"Flow"}},"type":"object","required":["flow_id","name","flow"],"title":"FlowCreateResponse"},"FlowGetResponse":{"properties":{"flow_id":{"type":"string","title":"Flow Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"flow":{"additionalProperties":true,"type":"object","title":"Flow"}},"type":"object","required":["flow_id","name","flow"],"title":"FlowGetResponse"},"FlowListResponse":{"properties":{"flows":{"items":{"$ref":"#/components/schemas/FlowSummary"},"type":"array","title":"Flows"}},"type":"object","required":["flows"],"title":"FlowListResponse"},"FlowNodesResponse":{"properties":{"nodes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Nodes"}},"type":"object","required":["nodes"],"title":"FlowNodesResponse"},"FlowStudioAgentRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"Natural-language edit or create request."},"state_dump":{"additionalProperties":true,"type":"object","title":"State Dump","description":"Current flow graph state from the frontend."},"chat_history":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Chat History","description":"Prior turns: {role: user|assistant, content: str}"},"model":{"type":"string","title":"Model","description":"OpenAI model to use.","default":"gpt-5.2"},"agent_mode":{"type":"string","enum":["plan","update"],"title":"Agent Mode","description":"plan = reasoning-only; update = plan then apply actions.","default":"plan"},"plan_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Plan Context","description":"Plan-mode pipeline state from prior response; omit on first call."}},"type":"object","required":["query","state_dump"],"title":"FlowStudioAgentRequest"},"FlowStudioAgentResponse":{"properties":{"plan":{"type":"string","title":"Plan","description":"current_plan for this batch (shown in UI)."},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions","description":"Validated graph mutation actions for POST /flows/{id}/apply."},"followup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Followup","description":"When set, client should re-request with this as query after applying actions."},"plan_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Plan Context","description":"Updated plan-mode state; pass back when followup is set."}},"type":"object","required":["plan","actions"],"title":"FlowStudioAgentResponse"},"FlowSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"FlowSummary"},"FlowUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Updated display name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Updated description."}},"type":"object","title":"FlowUpdateRequest"},"FlowUpdateResponse":{"properties":{"flow_id":{"type":"string","title":"Flow Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"flow":{"additionalProperties":true,"type":"object","title":"Flow"}},"type":"object","required":["flow_id","name","flow"],"title":"FlowUpdateResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageAnalyzeRequest":{"properties":{"image":{"type":"string","title":"Image","description":"Image URL to analyze"},"action":{"type":"string","title":"Action","description":"Analysis action type: cartoon_info, general_description"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID for context"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"}},"type":"object","required":["image","action"],"title":"ImageAnalyzeRequest","description":"Request model for image analysis."},"ImageAnalyzeResponse":{"properties":{"description":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"}],"title":"Description","description":"Analysis description (dict for structured format, str for text)"},"action":{"type":"string","title":"Action","description":"Action type used for analysis"},"image_url":{"type":"string","title":"Image Url","description":"URL of the analyzed image"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["description","action","image_url"],"title":"ImageAnalyzeResponse","description":"Response model for image analysis."},"ImageAssetV3":{"properties":{"id":{"type":"string","title":"Id"},"url":{"type":"string","title":"Url"},"prompt":{"type":"string","title":"Prompt"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"status":{"type":"string","enum":["active","deprecated"],"title":"Status","default":"active"}},"type":"object","required":["url","prompt"],"title":"ImageAssetV3","description":"Immutable image output reference."},"ImageDescriptionRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"HTTPS/HTTP image URL, or data:image/...;base64,... data URI"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"User instruction; defaults to a generic describe prompt"},"model":{"type":"string","title":"Model","description":"OpenAI vision-capable model","default":"gpt-4o"},"max_side":{"type":"integer","maximum":1024.0,"minimum":32.0,"title":"Max Side","description":"Resize image so the longest side is at most this many pixels before vision.","default":400}},"type":"object","required":["image_url"],"title":"ImageDescriptionRequest","description":"Vision request: image as an HTTP(S) URL or a data:image/...;base64,... URI."},"ImageGenerationRequest":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Text prompt for image generation (required if input_images not provided)"},"input_images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Input Images","description":"List of input image URLs or base64 data URIs (required if prompt not provided)"},"mask":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mask","description":"Mask image URL or base64 data URI for inpainting"},"steps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Steps","description":"Number of inference steps","default":50},"guidance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Guidance","description":"Guidance scale","default":60.0},"outpaint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outpaint","description":"Outpaint mode","default":"None"},"prompt_upsampling":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Prompt Upsampling","description":"Enable prompt upsampling","default":false},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Resolution for the generated image (e.g., '2 MP', '1 MP')","default":"2 MP"},"aspect_ratio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aspect Ratio","description":"Aspect ratio for the generated image (e.g., '1:1', '16:9', '9:16')","default":"1:1"},"output_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format","description":"Output image format (png, jpg)","default":"png"},"output_quality":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Output Quality","description":"Output image quality (0-100)","default":81},"quality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quality","description":"Quality tier for models that support it (e.g., gpt-image-2: auto|low|medium|high)"},"safety_tolerance":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":0.0},{"type":"null"}],"title":"Safety Tolerance","description":"Safety tolerance level (0-5)","default":2},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"training_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Training Id","description":"Training ID"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"API version","default":"v1"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for image generation (e.g., 'flux-2-pro', 'nano-banana', 'nano-banana-2', 'z-image-base', 'wan-2-7-pro', 'gpt-image-2')","default":"flux-2-pro"},"enable_web_search":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Web Search","description":"Enable web search for Nano Banana 2 (adds $0.015 per image)","default":false},"negative_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt","description":"Content to avoid in the generated image (WAN 2.7 Pro; max 500 chars on API)"}},"type":"object","title":"ImageGenerationRequest","description":"Request model for image generation."},"ImageGenerationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated image"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input and output"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"Update timestamp"},"is_downloaded":{"type":"boolean","title":"Is Downloaded","description":"Whether image is downloaded","default":false},"is_liked":{"type":"boolean","title":"Is Liked","description":"Whether image is liked","default":false},"is_deleted":{"type":"boolean","title":"Is Deleted","description":"Whether image is deleted","default":false},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"fb_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fb Url","description":"Firebase URL"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags","description":"Comma-separated tags"},"media_type":{"type":"string","title":"Media Type","description":"Media type","default":"IMAGE"},"status":{"type":"string","title":"Status","description":"Generation status","default":"SUCCESS"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Provider name"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider record ID"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"ImageGenerationResponse","description":"Response model for image generation."},"KlingV3ComboElementInput":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Name of the element (e.g., @Image1)"},"reference_image_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Image Urls","description":"Reference images for style/appearance"},"frontal_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frontal Image Url","description":"Frontal image of the element"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url","description":"Reference video for the element"}},"type":"object","title":"KlingV3ComboElementInput","description":"Kling V3 element input (character/object)."},"KlingV3MultiPromptElement":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"The prompt for this shot"},"duration":{"type":"integer","title":"Duration","description":"The duration of this shot in seconds","default":5}},"type":"object","required":["prompt"],"title":"KlingV3MultiPromptElement","description":"Kling V3 multi-prompt element."},"LLMCompletionRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/MessageItem"},"type":"array","minItems":1,"title":"Messages","description":"Message array in OpenAI format: [{role, content}, ...]"},"model":{"type":"string","title":"Model","description":"OpenAI model to use","default":"gpt-4o"}},"type":"object","required":["messages"],"title":"LLMCompletionRequest","description":"Request for LLM chat completion. Messages in OpenAI format."},"LLMCompletionResponse":{"properties":{"content":{"type":"string","title":"Content","description":"Generated text response"}},"type":"object","required":["content"],"title":"LLMCompletionResponse","description":"Response from LLM chat completion."},"LoraGenerateRequest":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Text prompt for image generation"},"loras":{"items":{"type":"string"},"type":"array","title":"Loras","description":"List of LoRA identifiers (HF repo names or URLs)"},"lora_scales":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Lora Scales","description":"LoRA scale values (0.0-2.0)","default":[1.0]},"aspect_ratio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aspect Ratio","description":"Aspect ratio for the generated image","default":"1:1"},"prompt_strength":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prompt Strength","description":"Prompt strength","default":0.8},"num_outputs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Outputs","description":"Number of output images","default":1},"num_inference_steps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Inference Steps","description":"Number of inference steps","default":28},"guidance_scale":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Guidance Scale","description":"Guidance scale","default":3.5},"output_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format","description":"Output image format","default":"png"},"output_quality":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Quality","description":"Output image quality","default":80},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Input image URL or base64 data URI"},"mask":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mask","description":"Mask image URL or base64 data URI"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed for reproducibility"},"use_oyecartoon":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Oyecartoon","description":"Use Runpod API with oye-cartoon","default":false},"should_paste_reference":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Should Paste Reference","description":"Should paste reference image","default":false},"strength":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Strength","description":"Image strength for img2img","default":0.9},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"training_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Training Id","description":"Training ID"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"API version","default":"v1"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"trainer_model":{"$ref":"#/components/schemas/TrainerModel","description":"Trainer model type: 'flux1' (Replicate), 'flux2' (FAL), or 'qwen_image' (FAL)"}},"type":"object","required":["prompt","loras","trainer_model"],"title":"LoraGenerateRequest","description":"Request model for LoRA image generation."},"LoraGenerateResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated image"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input and output"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"Update timestamp"},"is_downloaded":{"type":"boolean","title":"Is Downloaded","description":"Whether image is downloaded","default":false},"is_liked":{"type":"boolean","title":"Is Liked","description":"Whether image is liked","default":false},"is_deleted":{"type":"boolean","title":"Is Deleted","description":"Whether image is deleted","default":false},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"fb_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fb Url","description":"Firebase URL"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags","description":"Comma-separated tags"},"media_type":{"type":"string","title":"Media Type","description":"Media type","default":"IMAGE"},"status":{"type":"string","title":"Status","description":"Generation status","default":"SUCCESS"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Provider name"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider record ID"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"LoraGenerateResponse","description":"Response model for LoRA image generation."},"MediaType":{"type":"string","enum":["IMAGE","VIDEO","AUDIO"],"title":"MediaType","description":"Media type enum for editor table."},"MessageItem":{"properties":{"role":{"type":"string","enum":["system","user","assistant"],"title":"Role"},"content":{"type":"string","minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"MessageItem","description":"Single message in the conversation (OpenAI message format)."},"MotionControlRequest":{"properties":{"image":{"type":"string","title":"Image","description":"Image URL to animate (for Kling) or character image to replace (for Wan)"},"video":{"type":"string","title":"Video","description":"Video URL to use as motion reference or containing character to be replaced"},"model_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Variant","description":"Model variant (std, pro, or wan-2.2-animate-replace)","default":"pro"},"refert_num":{"type":"integer","title":"Refert Num","description":"Number of reference frames to use (1 or 5) for wan-2.2-animate-replace","default":1},"frames_per_second":{"type":"integer","title":"Frames Per Second","description":"Frames per second for output video (for Wan)","default":24},"go_fast":{"type":"boolean","title":"Go Fast","description":"Whether to use fast processing (for Wan)","default":true},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Video resolution. (e.g. '720' for Wan)"},"duration":{"anyOf":[{"type":"number","maximum":60.0,"minimum":0.1},{"type":"null"}],"title":"Duration","description":"Estimated video duration in seconds for pricing calculation","default":5.0},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Optional text prompt to guide the animation","default":""},"keep_original_sound":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Keep Original Sound","description":"Whether to keep the original sound from the reference video","default":true},"character_orientation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Orientation","description":"Character orientation preference (image or video)","default":"video"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"API version","default":"v1"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"}},"type":"object","required":["image","video"],"title":"MotionControlRequest","description":"Request model for motion control animation."},"MotionControlResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated animated video"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input and output"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"Update timestamp"},"is_downloaded":{"type":"boolean","title":"Is Downloaded","description":"Whether video is downloaded","default":false},"is_liked":{"type":"boolean","title":"Is Liked","description":"Whether video is liked","default":false},"is_deleted":{"type":"boolean","title":"Is Deleted","description":"Whether video is deleted","default":false},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"fb_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fb Url","description":"Firebase URL"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags","description":"Comma-separated tags"},"media_type":{"type":"string","title":"Media Type","description":"Media type (always 'VIDEO' for motion control)","default":"VIDEO"},"status":{"type":"string","title":"Status","description":"Generation status","default":"SUCCESS"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Provider name"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider record ID"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"MotionControlResponse","description":"Response model for motion control animation."},"OwnerFolderItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name","default":""},"type":{"type":"string","title":"Type","default":"folder"}},"type":"object","required":["id"],"title":"OwnerFolderItem","description":"Minimal folder row for admin generation filters."},"ParameterV3":{"properties":{"name":{"type":"string","title":"Name","description":"Parameter name. Common names: 'idea' (for story ideas), 'instructions' (for edit instructions), 'summary' (for beat summaries)."},"value":{"type":"string","title":"Value","description":"Parameter value. The actual content or instruction string."}},"type":"object","required":["name","value"],"title":"ParameterV3","description":"A simple key-value pair for parameters."},"PaymentLinkRequest":{"properties":{"price_id":{"type":"string","title":"Price Id","description":"Stripe price ID"},"email":{"type":"string","title":"Email","description":"Customer email address"},"mode":{"type":"string","title":"Mode","description":"Checkout session mode: 'payment' or 'subscription'"},"client_reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Reference Id","description":"Optional client reference ID"}},"type":"object","required":["price_id","email","mode"],"title":"PaymentLinkRequest","description":"Request model for creating a Stripe payment link."},"PipelineJob":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"owner_id":{"type":"string","title":"Owner Id"},"job_name":{"type":"string","title":"Job Name"},"status":{"$ref":"#/components/schemas/PipelineJobStatus","default":"pending"},"editor_id":{"type":"integer","title":"Editor Id"},"input":{"additionalProperties":true,"type":"object","title":"Input"},"output":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Output"},"cost":{"type":"integer","title":"Cost"},"meta":{"additionalProperties":true,"type":"object","title":"Meta"},"pipeline":{"items":{},"type":"array","title":"Pipeline"},"current_stage":{"type":"integer","title":"Current Stage","default":0},"locked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Locked At"},"locked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locked By"},"next_tick_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Tick At"}},"type":"object","required":["owner_id","job_name","editor_id","cost"],"title":"PipelineJob","description":"Pydantic model mirroring the `pipeline_jobs` table in Supabase."},"PipelineJobStatus":{"type":"string","enum":["pending","running","succeeded","failed"],"title":"PipelineJobStatus","description":"Pipeline job status enum for pipeline_jobs table."},"PipelineTickResponse":{"properties":{"processed":{"type":"integer","title":"Processed","default":0},"succeeded":{"type":"integer","title":"Succeeded","default":0},"failed":{"type":"integer","title":"Failed","default":0}},"type":"object","title":"PipelineTickResponse","description":"Response from POST /jobs/tick."},"ProductPhotoRequest":{"properties":{"product_photo":{"type":"string","title":"Product Photo","description":"Product image URL or base64 data URI"},"background_photo":{"type":"string","title":"Background Photo","description":"Background image URL or base64 data URI"},"prompt":{"type":"string","title":"Prompt","description":"Prompt describing the desired product photography"},"lora_strength":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lora Strength","description":"LoRA strength (0.0-1.0)","default":0.7},"guidance_scale":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Guidance Scale","description":"Guidance scale for generation","default":4.5},"output_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format","description":"Output image format (jpg, png)","default":"png"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"API version","default":"v1"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"}},"type":"object","required":["product_photo","background_photo","prompt"],"title":"ProductPhotoRequest","description":"Request model for product photography generation."},"ProductPhotoResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated product photo"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input and output"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"ProductPhotoResponse","description":"Response model for product photography generation."},"ProjectApplyRequest":{"properties":{"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions","description":"Ordered timeline mutations (createTrack, createAsset, updateAsset, etc.)."},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"Convenience for apply-story CLI: sets story when actions is empty."}},"type":"object","title":"ProjectApplyRequest"},"ProjectApplyResponse":{"properties":{"project_id":{"type":"string","title":"Project Id"},"project":{"additionalProperties":true,"type":"object","title":"Project"}},"type":"object","required":["project_id","project"],"title":"ProjectApplyResponse"},"ProjectCreateRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Display name of the new project."},"source_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Project Id","description":"Optional project id to duplicate; must belong to the same user."}},"type":"object","required":["name"],"title":"ProjectCreateRequest"},"ProjectCreateResponse":{"properties":{"project_id":{"type":"string","title":"Project Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"project":{"additionalProperties":true,"type":"object","title":"Project"}},"type":"object","required":["project_id","name","project"],"title":"ProjectCreateResponse"},"ProjectDeleteResponse":{"properties":{"project_id":{"type":"string","title":"Project Id"},"deleted":{"type":"boolean","title":"Deleted","default":true}},"type":"object","required":["project_id"],"title":"ProjectDeleteResponse"},"ProjectGetResponse":{"properties":{"project_id":{"type":"string","title":"Project Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"project":{"additionalProperties":true,"type":"object","title":"Project"}},"type":"object","required":["project_id","name","project"],"title":"ProjectGetResponse"},"ProjectListResponse":{"properties":{"projects":{"items":{"$ref":"#/components/schemas/ProjectSummary"},"type":"array","title":"Projects"}},"type":"object","required":["projects"],"title":"ProjectListResponse"},"ProjectSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"ProjectSummary"},"ProjectUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Updated display name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Updated description."}},"type":"object","title":"ProjectUpdateRequest"},"ProjectUpdateResponse":{"properties":{"project_id":{"type":"string","title":"Project Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"project":{"additionalProperties":true,"type":"object","title":"Project"}},"type":"object","required":["project_id","name","project"],"title":"ProjectUpdateResponse"},"ProjectV3":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title","default":"Untitled Story"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"agent_version":{"type":"string","title":"Agent Version","description":"Version of the story agent that created this project","default":"v3.01.0"},"idea":{"type":"string","title":"Idea","default":""},"potential_ideas":{"items":{"type":"string"},"type":"array","title":"Potential Ideas"},"characters":{"items":{"$ref":"#/components/schemas/CharacterV3"},"type":"array","title":"Characters"},"settings":{"items":{"$ref":"#/components/schemas/SettingV3"},"type":"array","title":"Settings"},"beats":{"items":{"$ref":"#/components/schemas/StoryBeat"},"type":"array","title":"Beats"},"storyboard":{"items":{"$ref":"#/components/schemas/StoryboardSceneV3"},"type":"array","title":"Storyboard"},"outline":{"anyOf":[{"$ref":"#/components/schemas/StoryOutlineV3"},{"type":"null"}]},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style","description":"Visual style for the story (e.g., '3D Pixar style cartoon', 'comic book style', '2D sketch style', 'Disney classic style', 'watercolor painting style', 'anime style'). Should match character image style unless user specifies otherwise."},"full_story_text":{"type":"string","title":"Full Story Text","default":""},"full_story_hash":{"type":"string","title":"Full Story Hash","default":""},"story_text_version":{"type":"integer","title":"Story Text Version","default":0},"story_text_user_edited":{"type":"boolean","title":"Story Text User Edited","default":false},"current_plan":{"anyOf":[{"$ref":"#/components/schemas/ExecutionPlan"},{"type":"null"}]},"actions_taken":{"type":"string","title":"Actions Taken","description":"Text field tracking actions taken based on impact analysis of storybook changes","default":""}},"type":"object","title":"ProjectV3","description":"Root container for the story project state."},"ResizeImageRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"URL or base64 data URI of the image to resize"},"max_side":{"type":"integer","title":"Max Side","description":"Maximum side length for the resized image","default":512}},"type":"object","required":["image_url"],"title":"ResizeImageRequest","description":"Request model for resizing an image."},"ResizeImageResponse":{"properties":{"image":{"type":"string","title":"Image","description":"Base64 data URI of the resized image"}},"type":"object","required":["image"],"title":"ResizeImageResponse","description":"Response model for resized image."},"SettingV3":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"visual_keywords":{"items":{"type":"string"},"type":"array","title":"Visual Keywords"}},"type":"object","required":["name","description"],"title":"SettingV3","description":"Setting/Location model with stable ID."},"SkillGetResponse":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"content":{"type":"string","title":"Content"}},"type":"object","required":["name","description","content"],"title":"SkillGetResponse"},"SkillListResponse":{"properties":{"skills":{"items":{"$ref":"#/components/schemas/SkillSummary"},"type":"array","title":"Skills"}},"type":"object","required":["skills"],"title":"SkillListResponse"},"SkillSummary":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"SkillSummary"},"SoundEffectsRequest":{"properties":{"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"text":{"type":"string","minLength":1,"title":"Text","description":"Sound effect prompt"},"duration_seconds":{"anyOf":[{"type":"number","maximum":30.0,"minimum":0.5},{"type":"null"}],"title":"Duration Seconds","description":"Duration in seconds"},"prompt_influence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Prompt Influence","description":"Prompt influence","default":0.3},"loop":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Loop","description":"Whether to create a sound effect that loops smoothly","default":false}},"type":"object","required":["text"],"title":"SoundEffectsRequest"},"SpeechToSpeechRequest":{"properties":{"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"audio_url":{"type":"string","minLength":1,"title":"Audio Url","description":"Source audio URL"},"voice_id":{"type":"string","minLength":1,"title":"Voice Id","description":"ElevenLabs voice id"},"model_id":{"type":"string","title":"Model Id","description":"ElevenLabs STS model id","default":"eleven_multilingual_sts_v2"},"output_format":{"type":"string","title":"Output Format","description":"ElevenLabs output format","default":"mp3_44100_128"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Optional filename hint for provider"}},"type":"object","required":["audio_url","voice_id"],"title":"SpeechToSpeechRequest"},"SpeechToTextRequest":{"properties":{"audio_url":{"type":"string","minLength":1,"title":"Audio Url","description":"Public URL of source audio"},"model_id":{"type":"string","title":"Model Id","description":"Speech-to-text model id","default":"grok-speech-to-text"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Optional BCP-47 language hint (e.g. en, es, fr)","default":"en"},"format_text":{"type":"boolean","title":"Format Text","description":"Apply punctuation and capitalization to the transcript","default":true}},"type":"object","required":["audio_url"],"title":"SpeechToTextRequest"},"SpeechToTextResponse":{"properties":{"text":{"type":"string","title":"Text","description":"Transcribed text"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Detected or hinted language"},"segments":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Segments","description":"Optional segments from the provider"}},"type":"object","required":["text"],"title":"SpeechToTextResponse"},"StoryAgentStreamRequestV3":{"properties":{"chat_history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Chat History","default":[]},"project":{"anyOf":[{"$ref":"#/components/schemas/ProjectV3"},{"type":"null"}]},"previous_project":{"anyOf":[{"$ref":"#/components/schemas/ProjectV3"},{"type":"null"}]},"story_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Story Id"}},"type":"object","title":"StoryAgentStreamRequestV3"},"StoryBeat":{"properties":{"id":{"type":"string","title":"Id"},"order":{"type":"integer","title":"Order"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"type":"string","title":"Content","default":""},"outline_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Outline Id"},"characters":{"items":{"type":"string"},"type":"array","title":"Characters"},"setting_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setting Id"},"emotional_tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emotional Tone"},"locked":{"type":"boolean","title":"Locked","default":false},"span_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Span Start"},"span_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Span End"},"anchor_prefix":{"type":"string","title":"Anchor Prefix","default":""},"anchor_suffix":{"type":"string","title":"Anchor Suffix","default":""},"content_hash":{"type":"string","title":"Content Hash","default":""},"last_synced_story_hash":{"type":"string","title":"Last Synced Story Hash","default":""}},"type":"object","required":["order"],"title":"StoryBeat","description":"Atomic narrative unit of the story."},"StoryOutlineV3":{"properties":{"idea":{"type":"string","title":"Idea"},"title":{"type":"string","title":"Title"},"characters":{"items":{"$ref":"#/components/schemas/CharacterV3"},"type":"array","title":"Characters"},"settings":{"items":{"$ref":"#/components/schemas/SettingV3"},"type":"array","title":"Settings"},"beats":{"items":{"$ref":"#/components/schemas/BeatOutlineV3"},"type":"array","title":"Beats"}},"type":"object","required":["idea","title","characters","settings","beats"],"title":"StoryOutlineV3","description":"Outline-only story development (beats contain title+summary only)."},"StoryboardSceneV3":{"properties":{"id":{"type":"string","title":"Id"},"source_beat_id":{"type":"string","title":"Source Beat Id"},"order":{"type":"integer","title":"Order"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"characters":{"items":{"type":"string"},"type":"array","title":"Characters"},"shots":{"items":{"$ref":"#/components/schemas/StoryboardShotV3"},"type":"array","title":"Shots"},"locked":{"type":"boolean","title":"Locked","default":false}},"type":"object","required":["source_beat_id","order","title","description"],"title":"StoryboardSceneV3","description":"Storyboard scene derived from a story beat."},"StoryboardShotV3":{"properties":{"id":{"type":"string","title":"Id"},"order":{"type":"integer","title":"Order"},"visual_description":{"type":"string","title":"Visual Description"},"shot_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shot Type"},"image":{"anyOf":[{"$ref":"#/components/schemas/ImageAssetV3"},{"type":"null"}]},"characters":{"items":{"type":"string"},"type":"array","title":"Characters"},"locked":{"type":"boolean","title":"Locked","default":false}},"type":"object","required":["order","visual_description"],"title":"StoryboardShotV3","description":"Specific shot within a scene, anchored to an image."},"SubscriptionStatusResponse":{"properties":{"has_subscription":{"type":"boolean","title":"Has Subscription","description":"Whether the user has an active plan or pass"},"is_recurring":{"type":"boolean","title":"Is Recurring","description":"Whether the user has a recurring Stripe subscription"},"plan_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Id","description":"Stripe product / plan ID"},"plan_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Name","description":"Human-readable plan name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Subscription status (ACTIVE, CANCELED, etc.)"},"billing_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Interval","description":"MONTHLY or YEARLY for subscriptions"},"end_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End At","description":"Subscription end or renewal boundary"},"next_credit_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Credit At","description":"Next scheduled credit grant (yearly plans)"},"credits_per_period":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Per Period","description":"Credits granted per billing period"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At","description":"Pass or subscription expiry timestamp"},"stripe_subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Subscription Id","description":"Stripe subscription ID when recurring"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","description":"payment or subscription checkout mode"}},"type":"object","required":["has_subscription","is_recurring"],"title":"SubscriptionStatusResponse","description":"Current subscription or pass status for the authenticated user."},"TextToSpeechRequest":{"properties":{"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"text":{"type":"string","minLength":1,"title":"Text","description":"Text to synthesize"},"voice_id":{"type":"string","minLength":1,"title":"Voice Id","description":"ElevenLabs voice id"},"model_id":{"type":"string","title":"Model Id","description":"ElevenLabs TTS model id","default":"eleven_multilingual_v2"},"output_format":{"type":"string","title":"Output Format","description":"ElevenLabs output format","default":"mp3_44100_128"}},"type":"object","required":["text","voice_id"],"title":"TextToSpeechRequest"},"TrainRequest":{"properties":{"project_id":{"type":"string","title":"Project Id","description":"ID of the project to train"},"steps":{"type":"integer","title":"Steps","description":"Number of training steps","default":1000},"lora_rank":{"type":"integer","title":"Lora Rank","description":"LoRA rank","default":16},"trigger_word":{"type":"string","title":"Trigger Word","description":"Trigger word for the model","default":"TOK"},"autocaption_suffix":{"type":"string","title":"Autocaption Suffix","description":"Suffix for auto-generated captions","default":""},"autocaption":{"type":"boolean","title":"Autocaption","description":"Whether to use auto-captioning","default":true},"learning_rate":{"type":"number","title":"Learning Rate","description":"Learning rate","default":0.0004},"assets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Assets","description":"Optional list of assets to use"},"custom_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Name","description":"Custom model name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"Display name for the training"},"skip_training_and_use_pretrained_hf_lora_url":{"type":"string","title":"Skip Training And Use Pretrained Hf Lora Url","description":"Skip training and use pretrained HuggingFace LoRA URL","default":""},"provider":{"$ref":"#/components/schemas/TrainingProvider","description":"Training provider: 'replicate' for Flux1 or 'fal' for Flux2/Qwen","default":"replicate"},"trainer_model":{"anyOf":[{"$ref":"#/components/schemas/TrainerModel"},{"type":"null"}],"description":"Trainer model: flux1, flux2, qwen_image, or ltx23_video"},"dataset_type":{"anyOf":[{"type":"string","enum":["video","image"]},{"type":"null"}],"title":"Dataset Type","description":"LTX23 dataset type (video or image only)"},"number_of_frames":{"type":"integer","title":"Number Of Frames","description":"LTX23 frames per sample","default":89},"frame_rate":{"type":"integer","title":"Frame Rate","description":"LTX23 target FPS","default":25},"resolution":{"type":"string","enum":["low","medium","high"],"title":"Resolution","description":"LTX23 training resolution","default":"medium"},"aspect_ratio":{"type":"string","enum":["16:9","1:1","9:16"],"title":"Aspect Ratio","description":"LTX23 aspect ratio","default":"1:1"},"auto_scale_input":{"type":"boolean","title":"Auto Scale Input","default":true},"split_input_into_scenes":{"type":"boolean","title":"Split Input Into Scenes","default":true},"split_input_duration_threshold":{"type":"number","title":"Split Input Duration Threshold","default":30},"with_audio":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"With Audio"},"debug_dataset":{"type":"boolean","title":"Debug Dataset","default":false},"validation":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Validation"}},"type":"object","required":["project_id"],"title":"TrainRequest","description":"Request model for starting a training job."},"TrainResponse":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Training data including id, status, etc."}},"type":"object","required":["data"],"title":"TrainResponse","description":"Response model for training job creation."},"TrainerModel":{"type":"string","enum":["flux1","flux2","qwen_image","ltx23_video"],"title":"TrainerModel","description":"Enum for trainer models."},"TrainingCaptionRequest":{"properties":{"image":{"type":"string","title":"Image","description":"HTTPS/HTTP image URL or data:image/... URI"},"name":{"type":"string","title":"Name","description":"Trigger word to inject into the caption","default":""},"type":{"type":"string","title":"Type","description":"Project/training type","default":"person"},"instruction":{"type":"string","title":"Instruction","description":"Optional caption instruction override","default":""},"hint":{"type":"string","title":"Hint","description":"Optional caption hint (style training)","default":""}},"type":"object","required":["image"],"title":"TrainingCaptionRequest","description":"Request to generate a LoRA training caption for an image."},"TrainingCaptionResponse":{"properties":{"description":{"type":"string","title":"Description","description":"Caption text for the training image"}},"type":"object","required":["description"],"title":"TrainingCaptionResponse","description":"Generated training caption."},"TrainingFile":{"properties":{"url":{"type":"string","title":"Url","description":"URL of the image file"},"caption":{"type":"string","title":"Caption","description":"Caption text for the image","default":""}},"type":"object","required":["url"],"title":"TrainingFile","description":"Model for a training file with URL and caption."},"TrainingProvider":{"type":"string","enum":["replicate","fal"],"title":"TrainingProvider","description":"Enum for training providers."},"TranscribeWordsRequest":{"properties":{"audio_url":{"type":"string","minLength":1,"title":"Audio Url","description":"Public URL of source audio"},"model_id":{"type":"string","title":"Model Id","description":"Word-level transcription model id","default":"whisperx"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"ISO language code; omit for auto-detection"},"task":{"type":"string","enum":["transcribe","translate"],"title":"Task","description":"Transcribe in source language or translate to English","default":"transcribe"},"align_output":{"type":"boolean","title":"Align Output","description":"Align output for accurate word-level timestamps","default":true},"initial_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Prompt","description":"Optional prompt for the first transcription window"},"batch_size":{"type":"integer","maximum":128.0,"minimum":1.0,"title":"Batch Size","description":"Parallelization batch size for WhisperX","default":64}},"type":"object","required":["audio_url"],"title":"TranscribeWordsRequest"},"TranscribeWordsResponse":{"properties":{"detected_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected Language","description":"Language detected or specified for the audio"},"segments":{"items":{"$ref":"#/components/schemas/TranscriptSegment"},"type":"array","title":"Segments","description":"Timestamped segments with optional word-level timing"},"text":{"type":"string","title":"Text","description":"Full transcript joined from segments"}},"type":"object","required":["text"],"title":"TranscribeWordsResponse"},"TranscriptSegment":{"properties":{"start":{"type":"number","title":"Start"},"end":{"type":"number","title":"End"},"text":{"type":"string","title":"Text"},"words":{"anyOf":[{"items":{"$ref":"#/components/schemas/WordTimestamp"},"type":"array"},{"type":"null"}],"title":"Words"},"avg_logprob":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Logprob"},"speaker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker"}},"type":"object","required":["start","end","text"],"title":"TranscriptSegment"},"UpscaleImageRequest":{"properties":{"image":{"type":"string","title":"Image","description":"URL or base64 data URI of the image to upscale"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for image upscaling","default":"topazlabs/image-upscale"},"enhance_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enhance Model","description":"Model to use: Standard V2, Low Resolution V2, CGI, High Fidelity V2, Text Refine","default":"Standard V2"},"upscale_factor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upscale Factor","description":"How much to upscale the image (e.g., '2x', '4x', '6x')","default":"4x"},"output_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format","description":"Output image format (jpg, png, webp)","default":"jpg"},"face_enhancement":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Face Enhancement","description":"Enhance faces in the image","default":false},"face_enhancement_creativity":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Face Enhancement Creativity","description":"Creativity for face enhancement (0-1)","default":0.5},"face_enhancement_strength":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Face Enhancement Strength","description":"Strength for face enhancement (0-1)","default":0.8},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"}},"type":"object","required":["image"],"title":"UpscaleImageRequest","description":"Request model for image upscaling."},"UpscaleVideoRequest":{"properties":{"video":{"type":"string","title":"Video","description":"URL of the video to upscale"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for video upscaling","default":"topazlabs/video-upscale"},"target_resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Resolution","description":"Target resolution (e.g., '720p', '1080p', '4k')","default":"1080p"},"target_fps":{"anyOf":[{"type":"integer","maximum":60.0,"minimum":15.0},{"type":"null"}],"title":"Target Fps","description":"Target FPS (15-60)","default":30},"duration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration","description":"Duration of the video in seconds"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"}},"type":"object","required":["video"],"title":"UpscaleVideoRequest","description":"Request model for video upscaling."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoEditorAgentRequest":{"properties":{"query":{"type":"string","minLength":1,"title":"Query","description":"Natural-language edit or create request."},"state_dump":{"additionalProperties":true,"type":"object","title":"State Dump","description":"Current video editor project state from the frontend."},"chat_history":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Chat History","description":"Prior turns: {role: user|assistant, content: str}"},"model":{"type":"string","title":"Model","description":"OpenAI model to use.","default":"gpt-5.2"},"agent_mode":{"type":"string","enum":["plan","update"],"title":"Agent Mode","description":"plan = reasoning-only; update = plan then apply actions.","default":"plan"},"plan_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Plan Context","description":"Plan-mode pipeline state from prior response; omit on first call."}},"type":"object","required":["query","state_dump"],"title":"VideoEditorAgentRequest"},"VideoEditorAgentResponse":{"properties":{"plan":{"type":"string","title":"Plan","description":"current_plan for this batch (shown in UI)."},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions","description":"Validated timeline mutation actions for POST /projects/{id}/apply."},"followup":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Followup","description":"When set, client should re-request with this as query after applying actions."},"plan_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Plan Context","description":"Updated plan-mode state; pass back when followup is set."}},"type":"object","required":["plan","actions"],"title":"VideoEditorAgentResponse"},"VideoGenerationRequest":{"properties":{"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to use for video generation","default":"veo-3.1-fast"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Text prompt for video generation"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Starting image URL (maps to image or image_url)"},"last_frame":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Frame","description":"Ending frame image URL (maps to last_frame or end_image_url)"},"reference_images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Images","description":"List of reference image URLs (maps to reference_images or image_urls)"},"reference_videos":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Videos","description":"Reference video URLs for Seedance 2.0 reference-to-video (maps to video_urls, max 3)"},"reference_audios":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reference Audios","description":"Reference audio URLs. Creatify Aurora and Podcaster v1: exactly 1. Seedance 2.0 reference-to-video: up to 3 (maps to audio_urls)."},"video":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video","description":"Reference video URL (maps to video_url)"},"duration":{"type":"integer","maximum":60.0,"minimum":1.0,"title":"Duration","description":"Video duration in seconds","default":5},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution","description":"Video resolution (e.g., '720p', '1080p')"},"aspect_ratio":{"type":"string","title":"Aspect Ratio","description":"Aspect ratio for the generated video","default":"16:9"},"generate_audio":{"type":"boolean","title":"Generate Audio","description":"Whether to generate or keep audio","default":true},"camera_fixed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Camera Fixed","description":"Seedance only: whether to fix the camera position"},"elements":{"anyOf":[{"items":{"$ref":"#/components/schemas/KlingV3ComboElementInput"},"type":"array"},{"type":"null"}],"title":"Elements","description":"Kling-specific elements (characters/objects)"},"multi_prompts":{"anyOf":[{"items":{"$ref":"#/components/schemas/KlingV3MultiPromptElement"},"type":"array"},{"type":"null"}],"title":"Multi Prompts","description":"Kling-specific multi-prompt shots"},"shot_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shot Type","description":"Type of multi-shot video generation","default":"customize"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID for organizing generations"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"API version","default":"v1"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID for tracking"},"loras":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Loras","description":"LoRA weight URLs (LTX 2.3 — routes to /lora fal endpoint)"},"lora_scales":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Lora Scales","description":"Scale per LoRA (default 1.0)"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed"},"negative_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt","description":"Negative prompt override"},"multi_shots":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Multi Shots","description":"Wan 2.7 reference-to-video: enable multi-shot segmentation"}},"type":"object","title":"VideoGenerationRequest","description":"Request model for video generation."},"VideoGenerationResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Generation record ID"},"owner_id":{"type":"string","title":"Owner Id","description":"Owner user ID"},"url":{"type":"string","title":"Url","description":"URL of the generated video"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Metadata including input and output"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","description":"Update timestamp"},"is_downloaded":{"type":"boolean","title":"Is Downloaded","description":"Whether video is downloaded","default":false},"is_liked":{"type":"boolean","title":"Is Liked","description":"Whether video is liked","default":false},"is_deleted":{"type":"boolean","title":"Is Deleted","description":"Whether video is deleted","default":false},"source":{"type":"string","title":"Source","description":"Source of generation","default":"flux-toolkit"},"folder_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder Id","description":"Folder ID"},"fb_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fb Url","description":"Firebase URL"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project ID"},"screen":{"type":"string","title":"Screen","description":"Screen context","default":"studio"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags","description":"Comma-separated tags"},"media_type":{"type":"string","title":"Media Type","description":"Media type (always 'VIDEO' for video generation)","default":"VIDEO"},"status":{"type":"string","title":"Status","description":"Generation status","default":"SUCCESS"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Provider name"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id","description":"Provider record ID"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id","description":"Message ID if provided"}},"type":"object","required":["id","owner_id","url","meta"],"title":"VideoGenerationResponse","description":"Response model for video generation."},"VideoPromptCreateRequest":{"properties":{"model":{"type":"string","title":"Model","description":"Video model ID (AVAILABLE_VIDEO_MODELS value)"},"instruction":{"type":"string","minLength":1,"title":"Instruction","description":"Rough scene description or creative brief"}},"type":"object","required":["model","instruction"],"title":"VideoPromptCreateRequest","description":"Request to create a model-ready video prompt from a brief."},"VideoPromptCreateResponse":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Model-ready video generation prompt"},"skill":{"type":"string","title":"Skill","description":"Skill guide used (e.g. seedance_2_0, generic_video)"}},"type":"object","required":["prompt","skill"],"title":"VideoPromptCreateResponse","description":"Generated video prompt."},"VisionPromptRequest":{"properties":{"image":{"type":"string","title":"Image","description":"HTTPS/HTTP image URL or data:image/...;base64,... data URI"},"system_prompt":{"type":"string","maxLength":16000,"minLength":1,"title":"System Prompt","description":"System prompt sent to the vision model"},"max_side":{"type":"integer","maximum":1024.0,"minimum":32.0,"title":"Max Side","description":"Maximum length of the longest side after resize (aspect ratio preserved)","default":200},"user_prompt":{"type":"string","maxLength":4000,"minLength":1,"title":"User Prompt","description":"User message text accompanying the image","default":"Analyze this image according to the system instructions."},"model":{"type":"string","title":"Model","description":"OpenAI vision-capable model","default":"gpt-4o"}},"type":"object","required":["image","system_prompt"],"title":"VisionPromptRequest","description":"Vision request with a custom system prompt; image is resized server-side."},"VisionPromptResponse":{"properties":{"text":{"type":"string","title":"Text","description":"Model text response"}},"type":"object","required":["text"],"title":"VisionPromptResponse","description":"Plain text response from the vision model."},"WordTimestamp":{"properties":{"word":{"type":"string","title":"Word"},"start":{"type":"number","title":"Start"},"end":{"type":"number","title":"End"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"}},"type":"object","required":["word","start","end"],"title":"WordTimestamp"},"ZipTrainingImagesRequest":{"properties":{"files":{"items":{"$ref":"#/components/schemas/TrainingFile"},"type":"array","title":"Files","description":"List of training files with URLs and captions"}},"type":"object","required":["files"],"title":"ZipTrainingImagesRequest","description":"Request model for zipping training images."},"ZipTrainingImagesResponse":{"properties":{"zip_url":{"type":"string","title":"Zip Url","description":"Public URL of the uploaded zip file"}},"type":"object","required":["zip_url"],"title":"ZipTrainingImagesResponse","description":"Response model for zipped training images."}}},"servers":[{"url":"/shopify"}]}