{"openapi":"3.1.0","info":{"title":"MoneyPrinterTurbo","description":"<a href='https://github.com/harry0703/MoneyPrinterTurbo'>https://github.com/harry0703/MoneyPrinterTurbo</a>","version":"1.2.8"},"paths":{"/api/v1/videos":{"post":{"tags":["V1"],"summary":"Generate a short video","operationId":"create_video_api_v1_videos_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/watermarks":{"post":{"tags":["V1"],"summary":"Upload a watermark image for generated videos","operationId":"upload_watermark_api_v1_watermarks_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_watermark_api_v1_watermarks_post"}}},"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/generate/presets":{"get":{"tags":["V1"],"summary":"List generate page presets","operationId":"list_generate_presets_api_v1_generate_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["V1"],"summary":"Create generate page preset","operationId":"create_generate_preset_api_v1_generate_presets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePresetBody"}}},"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/generate/presets/{preset_id}":{"patch":{"tags":["V1"],"summary":"Update generate page preset","operationId":"update_generate_preset_api_v1_generate_presets__preset_id__patch","parameters":[{"name":"preset_id","in":"path","required":true,"schema":{"type":"string","title":"Preset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePresetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Delete generate page preset","operationId":"delete_generate_preset_api_v1_generate_presets__preset_id__delete","parameters":[{"name":"preset_id","in":"path","required":true,"schema":{"type":"string","title":"Preset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subtitle":{"post":{"tags":["V1"],"summary":"Generate subtitle only","operationId":"create_subtitle_api_v1_subtitle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubtitleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audio":{"post":{"tags":["V1"],"summary":"Generate audio only","operationId":"create_audio_api_v1_audio_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tasks":{"get":{"tags":["V1"],"summary":"Get all tasks","operationId":"get_all_tasks_api_v1_tasks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskQueryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tasks/{task_id}":{"get":{"tags":["V1"],"summary":"Query task status","operationId":"get_task_api_v1_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","description":"Task ID","title":"Task Id"},"description":"Task ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskQueryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Delete a generated short video task","operationId":"delete_video_api_v1_tasks__task_id__delete","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","description":"Task ID","title":"Task Id"},"description":"Task ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskDeletionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/musics":{"get":{"tags":["V1"],"summary":"Retrieve local BGM files","operationId":"get_bgm_list_api_v1_musics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgmRetrieveResponse"}}}}}},"post":{"tags":["V1"],"summary":"Upload the BGM file to the songs directory","operationId":"upload_bgm_file_api_v1_musics_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_bgm_file_api_v1_musics_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgmUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/video_materials":{"get":{"tags":["V1"],"summary":"Retrieve local video materials","operationId":"get_video_materials_list_api_v1_video_materials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoMaterialRetrieveResponse"}}}}}},"post":{"tags":["V1"],"summary":"Upload the video material file to the local videos directory","operationId":"upload_video_material_file_api_v1_video_materials_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_video_material_file_api_v1_video_materials_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoMaterialUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stream/{file_path}":{"get":{"tags":["V1"],"summary":"Stream Video","operationId":"stream_video_api_v1_stream__file_path__get","parameters":[{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/download/{file_path}":{"get":{"tags":["V1"],"summary":"Download Video","description":"download video\n:param request: Request request\n:param file_path: video file path, eg: /cd1727ed-3473-42a2-a7da-4faafafec72b/final-1.mp4\n:return: video file","operationId":"download_video_api_v1_download__file_path__get","parameters":[{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scripts":{"post":{"tags":["V1"],"summary":"Create a script for the video","operationId":"generate_video_script_api_v1_scripts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoScriptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoScriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/terms":{"post":{"tags":["V1"],"summary":"Generate video terms based on the video script","operationId":"generate_video_terms_api_v1_terms_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoTermsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoTermsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/health":{"get":{"tags":["V1"],"summary":"Service health snapshot","description":"Aggregated health for the dubbing pipeline:\n- ASR server reachable?\n- NFS work dir writable?\n- LLM provider configured?\n- TG Voice and VietNeuTTS base URLs configured?","operationId":"dubbing_health_api_v1_dubbing_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dubbing Health Api V1 Dubbing Health Get"}}}}}}},"/api/v1/dubbing/voices":{"get":{"tags":["V1"],"summary":"List all available TTS voices","description":"Return a flat list of voice identifiers usable as the ``voice_name``\nfield on POST /jobs. Optionally filter by provider.","operationId":"list_voices_api_v1_dubbing_voices_get","parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Voices Api V1 Dubbing Voices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/profiles":{"get":{"tags":["V1"],"summary":"List local voice profiles","operationId":"list_profiles_api_v1_dubbing_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Profiles Api V1 Dubbing Profiles Get"}}}}}},"post":{"tags":["V1"],"summary":"Create a local voice profile (multipart upload)","operationId":"create_profile_api_v1_dubbing_profiles_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_profile_api_v1_dubbing_profiles_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Profile Api V1 Dubbing Profiles Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/profiles/{profile_id}":{"delete":{"tags":["V1"],"summary":"Delete a local voice profile","operationId":"delete_profile_api_v1_dubbing_profiles__profile_id__delete","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","title":"Profile Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Profile Api V1 Dubbing Profiles  Profile Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/presets":{"get":{"tags":["V1"],"summary":"List dubbing presets","operationId":"list_dubbing_presets_api_v1_dubbing_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Dubbing Presets Api V1 Dubbing Presets Get"}}}}}},"post":{"tags":["V1"],"summary":"Create a dubbing preset","operationId":"create_dubbing_preset_api_v1_dubbing_presets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingPresetBody"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Dubbing Preset Api V1 Dubbing Presets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/presets/{preset_id}":{"patch":{"tags":["V1"],"summary":"Update a dubbing preset","operationId":"update_dubbing_preset_api_v1_dubbing_presets__preset_id__patch","parameters":[{"name":"preset_id","in":"path","required":true,"schema":{"type":"string","title":"Preset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DubbingPresetBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Dubbing Preset Api V1 Dubbing Presets  Preset Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Delete a dubbing preset","operationId":"delete_dubbing_preset_api_v1_dubbing_presets__preset_id__delete","parameters":[{"name":"preset_id","in":"path","required":true,"schema":{"type":"string","title":"Preset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Dubbing Preset Api V1 Dubbing Presets  Preset Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/watermarks":{"get":{"tags":["V1"],"summary":"List reusable watermark PNG files","operationId":"list_dubbing_watermarks_api_v1_dubbing_watermarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Dubbing Watermarks Api V1 Dubbing Watermarks Get"}}}}}},"post":{"tags":["V1"],"summary":"Upload a reusable watermark PNG","operationId":"upload_dubbing_watermark_api_v1_dubbing_watermarks_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_dubbing_watermark_api_v1_dubbing_watermarks_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Dubbing Watermark Api V1 Dubbing Watermarks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/watermarks/{file}":{"delete":{"tags":["V1"],"summary":"Delete a reusable watermark PNG","operationId":"delete_dubbing_watermark_api_v1_dubbing_watermarks__file__delete","parameters":[{"name":"file","in":"path","required":true,"schema":{"type":"string","title":"File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Dubbing Watermark Api V1 Dubbing Watermarks  File  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/jobs":{"post":{"tags":["V1"],"summary":"Create a new dubbing job (multipart upload)","description":"Create a dubbing job. Returns the assigned ``job_id`` immediately.","operationId":"create_dubbing_job_api_v1_dubbing_jobs_post","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_dubbing_job_api_v1_dubbing_jobs_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Dubbing Job Api V1 Dubbing Jobs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["V1"],"summary":"List dubbing jobs","operationId":"list_jobs_api_v1_dubbing_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Jobs Api V1 Dubbing Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/jobs/from-library":{"post":{"tags":["V1"],"summary":"Create a dubbing job using a video from /library (no upload)","description":"Symlink a finished library job's video.mp4 into a fresh dubbing job\nfolder and submit. Avoids re-uploading the file through the browser.","operationId":"create_dubbing_job_from_library_api_v1_dubbing_jobs_from_library_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FromLibraryRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/jobs/{job_id}":{"get":{"tags":["V1"],"summary":"Get job status","operationId":"get_job_api_v1_dubbing_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","description":"Job id returned from POST","title":"Job Id"},"description":"Job id returned from POST"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Api V1 Dubbing Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Cancel + delete a job","operationId":"delete_job_api_v1_dubbing_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Job Api V1 Dubbing Jobs  Job Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/jobs/{job_id}/output_token":{"post":{"tags":["V1"],"summary":"Mint a short-lived signed token for the output endpoint","description":"Browsers can't attach `X-API-Key` to `<video src>` or `<a download>`.\nClients call this auth-gated endpoint to get a signed token they can\nembed in the URL as `?token=...`. The token is HMAC-SHA256 over\n``\"{job_id}|{exp}\"`` keyed by the app's API key, valid for\n``OUTPUT_TOKEN_TTL_SECONDS``.","operationId":"issue_output_token_api_v1_dubbing_jobs__job_id__output_token_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Output Token Api V1 Dubbing Jobs  Job Id  Output Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/jobs/{job_id}/cancel":{"post":{"tags":["V1"],"summary":"Cancel a running or queued job","operationId":"cancel_job_api_v1_dubbing_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Job Api V1 Dubbing Jobs  Job Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/probe":{"post":{"tags":["V1"],"summary":"Detect provider + metadata for a URL","operationId":"probe_api_v1_library_probe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProbeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Probe Api V1 Library Probe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/health":{"get":{"tags":["V1"],"summary":"Per-LXC service status snapshot","operationId":"health_api_v1_library_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api V1 Library Health Get"}}}}}}},"/api/v1/library/jobs":{"post":{"tags":["V1"],"summary":"Create one or more download jobs (1 URL = 1 job)","operationId":"create_jobs_api_v1_library_jobs_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJobsRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["V1"],"summary":"List download jobs","operationId":"list_jobs_api_v1_library_jobs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of statuses to keep","title":"Status"},"description":"Comma-separated list of statuses to keep"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Jobs Api V1 Library Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/jobs/{job_id}":{"get":{"tags":["V1"],"summary":"Get job status","operationId":"get_job_api_v1_library_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Job Api V1 Library Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Cancel + delete job folder","operationId":"delete_job_api_v1_library_jobs__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/jobs/{job_id}/cancel":{"post":{"tags":["V1"],"summary":"Cancel a running job","operationId":"cancel_job_api_v1_library_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Job Api V1 Library Jobs  Job Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/jobs/{job_id}/output_token":{"post":{"tags":["V1"],"summary":"Mint a 1-hour signed URL for the staged media files","operationId":"issue_output_token_api_v1_library_jobs__job_id__output_token_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Output Token Api V1 Library Jobs  Job Id  Output Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/preview-prompt":{"post":{"tags":["V1"],"summary":"Expand a 4-field mini-form into a full image-gen prompt via LLM","operationId":"preview_prompt_api_v1_characters_preview_prompt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewPromptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Preview Prompt Api V1 Characters Preview Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/upload-reference":{"post":{"tags":["V1"],"summary":"Upload a reference image (PNG/JPG) and get a signed URL the upstream image API can fetch","operationId":"upload_reference_api_v1_characters_upload_reference_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_reference_api_v1_characters_upload_reference_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Reference Api V1 Characters Upload Reference Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters":{"post":{"tags":["V1"],"summary":"Render a character reference sheet (sync, ~10-30s)","operationId":"create_character_api_v1_characters_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCharacterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Character Api V1 Characters Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["V1"],"summary":"List characters newest first","operationId":"list_characters_api_v1_characters_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Characters Api V1 Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{char_id}":{"get":{"tags":["V1"],"summary":"Get one character meta","operationId":"get_character_api_v1_characters__char_id__get","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Char Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Character Api V1 Characters  Char Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Delete character + its sheet/thumb folder","operationId":"delete_character_api_v1_characters__char_id__delete","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Char Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["V1"],"summary":"Update character meta (name/description/voice/prompt/appearance)","operationId":"update_character_api_v1_characters__char_id__patch","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Char Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCharacterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Character Api V1 Characters  Char Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{char_id}/regenerate":{"post":{"tags":["V1"],"summary":"Re-render sheet cho character đã có (overwrite sheet.png)","operationId":"regenerate_character_api_v1_characters__char_id__regenerate_post","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Char Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateCharacterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Character Api V1 Characters  Char Id  Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{char_id}/extract-appearance":{"post":{"tags":["V1"],"summary":"Vision-extract a 1-3 sentence identity descriptor from the sheet","description":"Synchronously call the vision LLM on ``meta.sheet_path`` and save\nthe result to ``meta.appearance``. Used to backfill characters\ncreated before this field existed, or to re-extract after a\nre-render produced a different look.\n\nStatus codes:\n  404 — character không tồn tại\n  409 — meta.status != \"done\" (sheet chưa render xong)\n  502 — vision API lỗi (truyền nguyên text lên cho operator)","operationId":"extract_appearance_api_v1_characters__char_id__extract_appearance_post","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Char Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Extract Appearance Api V1 Characters  Char Id  Extract Appearance Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{char_id}/output_token":{"post":{"tags":["V1"],"summary":"Mint a 1-hour signed URL for the character's sheet/thumb","operationId":"issue_output_token_api_v1_characters__char_id__output_token_post","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","title":"Char Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Output Token Api V1 Characters  Char Id  Output Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/health":{"get":{"tags":["V1"],"summary":"Storyboard subsystem health","operationId":"health_api_v1_storyboards_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api V1 Storyboards Health Get"}}}}}}},"/api/v1/storyboards/split-script":{"post":{"tags":["V1"],"summary":"Preview LLM split without spawning a job","operationId":"split_script_api_v1_storyboards_split_script_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SplitScriptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Split Script Api V1 Storyboards Split Script Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/draft-from-idea":{"post":{"tags":["V1"],"summary":"Generate {num_frames} frames with description + dialogue + duration from a free-form idea pitch (no storyboard job created)","operationId":"draft_from_idea_api_v1_storyboards_draft_from_idea_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftFromIdeaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Draft From Idea Api V1 Storyboards Draft From Idea Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards":{"post":{"tags":["V1"],"summary":"Submit a storyboard job (returns immediately)","operationId":"create_storyboard_api_v1_storyboards_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStoryboardRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["V1"],"summary":"List storyboards newest first","operationId":"list_storyboards_api_v1_storyboards_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated statuses to keep","title":"Status"},"description":"Comma-separated statuses to keep"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Storyboards Api V1 Storyboards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}":{"get":{"tags":["V1"],"summary":"Full storyboard state","operationId":"get_storyboard_api_v1_storyboards__sb_id__get","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Storyboard Api V1 Storyboards  Sb Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Cancel + delete storyboard folder","operationId":"delete_storyboard_api_v1_storyboards__sb_id__delete","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/cancel":{"post":{"tags":["V1"],"summary":"Cancel a running storyboard","operationId":"cancel_storyboard_api_v1_storyboards__sb_id__cancel_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Storyboard Api V1 Storyboards  Sb Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/frames":{"patch":{"tags":["V1"],"summary":"Edit frame descriptions while awaiting_review","operationId":"patch_frames_api_v1_storyboards__sb_id__frames_patch","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchFramesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Frames Api V1 Storyboards  Sb Id  Frames Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/commit":{"post":{"tags":["V1"],"summary":"Resume an awaiting_review storyboard","operationId":"commit_storyboard_api_v1_storyboards__sb_id__commit_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Commit Storyboard Api V1 Storyboards  Sb Id  Commit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/regenerate-frame":{"post":{"tags":["V1"],"summary":"Re-run expand + gen for a single frame","operationId":"regenerate_frame_api_v1_storyboards__sb_id__regenerate_frame_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateFrameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regenerate Frame Api V1 Storyboards  Sb Id  Regenerate Frame Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/render-frame":{"post":{"tags":["V1"],"summary":"Render one frame manually (awaiting_review or terminal)","description":"Manual per-frame render — called from the wizard's review step\nwhen the operator wants to render frames one at a time instead of\nthe all-at-once batch flow.\n\nAccepted statuses: ``awaiting_review``, ``done``, ``failed``.\nOperator finalises with POST /finalize once done picking frames.","operationId":"render_frame_api_v1_storyboards__sb_id__render_frame_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderFrameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Render Frame Api V1 Storyboards  Sb Id  Render Frame Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/finalize":{"post":{"tags":["V1"],"summary":"Mark an awaiting_review storyboard as done","operationId":"finalize_storyboard_api_v1_storyboards__sb_id__finalize_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Finalize Storyboard Api V1 Storyboards  Sb Id  Finalize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/frame/{index}/video-prompt":{"post":{"tags":["V1"],"summary":"Generate motion paragraph + compose final video prompt block","description":"Sinh ``frame.motion`` (raw LLM motion paragraph) và compose\n``frame.video_prompt`` thành multi-section block (Scene + Visual +\nMotion + Dialogue + Voice direction từ characters của storyboard).","operationId":"generate_video_prompt_api_v1_storyboards__sb_id__frame__index__video_prompt_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","maximum":24,"minimum":1,"title":"Index"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Video Prompt Api V1 Storyboards  Sb Id  Frame  Index  Video Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/output_token":{"post":{"tags":["V1"],"summary":"Mint a 1-hour signed URL for the storyboard's frames","operationId":"issue_output_token_api_v1_storyboards__sb_id__output_token_post","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Output Token Api V1 Storyboards  Sb Id  Output Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/zip":{"get":{"tags":["V1"],"summary":"Download all rendered frames + manifest as a single zip","operationId":"download_zip_api_v1_storyboards__sb_id__zip_get","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/postiz/integrations":{"get":{"tags":["V1"],"summary":"List Postiz Facebook/YouTube integrations","operationId":"list_integrations_api_v1_postiz_integrations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/postiz/publish/generate":{"post":{"tags":["V1"],"summary":"Publish generated video to Postiz","operationId":"publish_generate_api_v1_postiz_publish_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishGenerateBody"}}},"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/postiz/publish/dubbing":{"post":{"tags":["V1"],"summary":"Publish dubbed video to Postiz","operationId":"publish_dubbing_api_v1_postiz_publish_dubbing_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishDubbingBody"}}},"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/postiz/publish/workflow":{"post":{"tags":["V1"],"summary":"Publish completed workflow output to Postiz","operationId":"publish_workflow_api_v1_postiz_publish_workflow_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishWorkflowBody"}}},"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/workflows/schema":{"get":{"tags":["V1"],"summary":"Get workflow template schema and defaults","operationId":"get_schema_api_v1_workflows_schema_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/workflows/templates":{"get":{"tags":["V1"],"summary":"List workflow templates","operationId":"list_templates_api_v1_workflows_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["V1"],"summary":"Create workflow template","operationId":"create_template_api_v1_workflows_templates_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"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/workflows/templates/{template_id}":{"get":{"tags":["V1"],"summary":"Get workflow template","operationId":"get_template_api_v1_workflows_templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["V1"],"summary":"Update workflow template","operationId":"update_template_api_v1_workflows_templates__template_id__patch","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Delete workflow template","operationId":"delete_template_api_v1_workflows_templates__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflows/templates/{template_id}/duplicate":{"post":{"tags":["V1"],"summary":"Duplicate workflow template","operationId":"duplicate_template_api_v1_workflows_templates__template_id__duplicate_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflows/templates/{template_id}/runs":{"post":{"tags":["V1"],"summary":"Create workflow run","operationId":"create_run_api_v1_workflows_templates__template_id__runs_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","title":"Template Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_run_api_v1_workflows_templates__template_id__runs_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflows/runs":{"get":{"tags":["V1"],"summary":"List workflow runs","operationId":"list_runs_api_v1_workflows_runs_get","parameters":[{"name":"template_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflows/runs/{run_id}":{"get":{"tags":["V1"],"summary":"Get workflow run","operationId":"get_run_api_v1_workflows_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["V1"],"summary":"Delete workflow run","operationId":"delete_run_api_v1_workflows_runs__run_id__delete","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflows/runs/{run_id}/cancel":{"post":{"tags":["V1"],"summary":"Cancel workflow run","operationId":"cancel_run_api_v1_workflows_runs__run_id__cancel_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-metadata/generate/{task_id}/regenerate":{"post":{"tags":["V1"],"summary":"Regenerate Generate social metadata","operationId":"regenerate_generate_api_v1_social_metadata_generate__task_id__regenerate_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-metadata/dubbing/{job_id}/regenerate":{"post":{"tags":["V1"],"summary":"Regenerate Dubbing social metadata","operationId":"regenerate_dubbing_api_v1_social_metadata_dubbing__job_id__regenerate_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/social-metadata/workflow/{run_id}/regenerate":{"post":{"tags":["V1"],"summary":"Regenerate Workflow social metadata","operationId":"regenerate_workflow_api_v1_social_metadata_workflow__run_id__regenerate_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/config":{"get":{"tags":["V1"],"summary":"Read whitelisted config values (secrets masked)","operationId":"get_config_api_v1_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Config Api V1 Config Get"}}}}}},"patch":{"tags":["V1"],"summary":"Update whitelisted config values","description":"Body shape may include ``app``, ``dubbing``, ``storyboard``, ``postiz``,\n``tg_voice``, ``vietneutts``, ``omnivoice``, ``resona``, ``azure``, and\n``siliconflow`` sections. Only fields listed in the whitelist are\npersisted. Out-of-range numeric values are clamped, not rejected.\nSecret fields with empty / null values are ignored so existing secrets\nare kept.\n\nReturns ``{\"updated\": [\"section.field\", ...]}`` with fully-qualified\nkeys (e.g. ``\"app.openai_api_key\"``, ``\"dubbing.max_tts_chunk_chars\"``).","operationId":"patch_config_api_v1_config_patch","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Patch Config Api V1 Config Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/dubbing/jobs/{job_id}/output":{"get":{"tags":["V1"],"summary":"Stream the dubbed MP4 (signed token in query OR X-API-Key header)","operationId":"download_output_api_v1_dubbing_jobs__job_id__output_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Signed token from POST /output_token","title":"Token"},"description":"Signed token from POST /output_token"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/jobs/{job_id}/output":{"get":{"tags":["V1"],"summary":"Stream the downloaded video (signed URL)","operationId":"stream_output_api_v1_library_jobs__job_id__output_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/jobs/{job_id}/thumb":{"get":{"tags":["V1"],"summary":"Stream the thumbnail (signed URL)","operationId":"stream_thumb_api_v1_library_jobs__job_id__thumb_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/library/jobs/{job_id}/subtitle":{"get":{"tags":["V1"],"summary":"Stream the SRT subtitle (signed URL)","operationId":"stream_subtitle_api_v1_library_jobs__job_id__subtitle_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/_refs/{filename}":{"get":{"tags":["V1"],"summary":"Stream an uploaded reference image (signed URL)","operationId":"stream_reference_api_v1_characters__refs__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{char_id}/sheet":{"get":{"tags":["V1"],"summary":"Stream the character sheet PNG (signed URL)","operationId":"stream_sheet_api_v1_characters__char_id__sheet_get","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","title":"Char Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/characters/{char_id}/thumb":{"get":{"tags":["V1"],"summary":"Stream the character thumbnail (signed URL)","operationId":"stream_thumb_api_v1_characters__char_id__thumb_get","parameters":[{"name":"char_id","in":"path","required":true,"schema":{"type":"string","title":"Char Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/frame/{index}":{"get":{"tags":["V1"],"summary":"Stream one frame JPG (signed URL)","operationId":"stream_frame_api_v1_storyboards__sb_id__frame__index__get","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/storyboards/{sb_id}/thumb/{index}":{"get":{"tags":["V1"],"summary":"Stream one frame thumbnail (signed URL)","operationId":"stream_frame_thumb_api_v1_storyboards__sb_id__thumb__index__get","parameters":[{"name":"sb_id","in":"path","required":true,"schema":{"type":"string","title":"Sb Id"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AudioRequest":{"properties":{"video_script":{"type":"string","title":"Video Script"},"video_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Language","default":""},"voice_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name","default":"zh-CN-XiaoxiaoNeural-Female"},"voice_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Volume","default":1.0},"voice_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Rate","default":1.2},"bgm_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bgm Type","default":"random"},"bgm_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bgm File","default":""},"bgm_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bgm Volume","default":0.2},"video_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Source","default":"local"}},"type":"object","required":["video_script"],"title":"AudioRequest"},"BgmRetrieveResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"BgmRetrieveResponse","example":{"data":{"files":[{"file":"/MoneyPrinterTurbo/resource/songs/output013.mp3","name":"output013.mp3","size":1891269}]},"message":"success","status":200}},"BgmUploadResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"BgmUploadResponse","example":{"data":{"file":"/MoneyPrinterTurbo/resource/songs/example.mp3"},"message":"success","status":200}},"Body_create_dubbing_job_api_v1_dubbing_jobs_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Source video file"},"voice_name":{"type":"string","title":"Voice Name","description":"Vietnamese voice id (see GET /dubbing/voices)","default":"tg-voice:truong-giang"},"voice_style":{"type":"string","title":"Voice Style","default":"doc_truyen"},"source_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language","description":"Source language ISO code (en, zh). Empty = auto-detect."},"context_reference":{"type":"string","title":"Context Reference","description":"Free-form notes the LLM uses to normalize proper nouns (character names, series title, glossary).","default":""},"voice_rate":{"type":"number","maximum":4.0,"minimum":0.25,"title":"Voice Rate","default":1.0},"voice_volume":{"type":"number","maximum":5.0,"minimum":0.1,"title":"Voice Volume","default":1.0},"bgm_type":{"type":"string","title":"Bgm Type","default":""},"bgm_file":{"type":"string","title":"Bgm File","default":""},"bgm_volume":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Bgm Volume","default":0.2},"burn_subtitles":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Burn Subtitles","default":"true"},"crf":{"type":"integer","maximum":35.0,"minimum":10.0,"title":"Crf","default":18},"sub_font":{"type":"string","title":"Sub Font","default":"Noto Sans"},"sub_size":{"type":"integer","maximum":80.0,"minimum":12.0,"title":"Sub Size","default":28},"sub_bold":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Bold","default":"true"},"sub_outline":{"type":"integer","maximum":24.0,"minimum":0.0,"title":"Sub Outline","default":8},"sub_alignment":{"type":"integer","maximum":3.0,"minimum":1.0,"title":"Sub Alignment","default":2},"sub_margin_v":{"type":"integer","maximum":400.0,"minimum":0.0,"title":"Sub Margin V","default":30},"sub_margin_l":{"type":"integer","maximum":400.0,"minimum":0.0,"title":"Sub Margin L","default":40},"sub_margin_r":{"type":"integer","maximum":400.0,"minimum":0.0,"title":"Sub Margin R","default":40},"sub_color":{"type":"string","title":"Sub Color","default":"#FFFFFF"},"sub_outline_color":{"type":"string","title":"Sub Outline Color","default":"#000000"},"sub_back_color":{"type":"string","title":"Sub Back Color","default":"#000000"},"sub_back_alpha":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Sub Back Alpha","default":1.0},"sub_corner_radius":{"type":"integer","maximum":60.0,"minimum":0.0,"title":"Sub Corner Radius","default":0},"sub_box_width_pct":{"type":"number","maximum":100.0,"minimum":10.0,"title":"Sub Box Width Pct","default":80.0},"sub_box_pad_x":{"type":"integer","maximum":120.0,"minimum":0.0,"title":"Sub Box Pad X","default":24},"sub_box_pad_y":{"type":"integer","maximum":80.0,"minimum":0.0,"title":"Sub Box Pad Y","default":10},"cover_band":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Band","default":"false"},"cover_band_height_pct":{"type":"number","maximum":35.0,"minimum":5.0,"title":"Cover Band Height Pct","default":18.0},"cover_band_opacity":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Cover Band Opacity","default":0.85},"cover_roi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Roi","description":"Cover ROI as JSON [x,y,w,h] or 'x,y,w,h' (floats 0..1). Overrides cover_band_*."},"sub_roi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Roi","description":"Subtitle ROI as JSON [x,y,w,h] or 'x,y,w,h' (floats 0..1). Overrides sub_margin_*/sub_size."},"watermark":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Watermark"},"wm_file":{"type":"string","title":"Wm File","default":""},"wm_position":{"type":"string","title":"Wm Position","default":"bottom_right"},"wm_scale_pct":{"type":"number","maximum":30.0,"minimum":4.0,"title":"Wm Scale Pct","default":12.0},"wm_opacity":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Wm Opacity","default":0.8},"wm_margin_pct":{"type":"number","maximum":10.0,"minimum":0.0,"title":"Wm Margin Pct","default":3.0}},"type":"object","required":["file"],"title":"Body_create_dubbing_job_api_v1_dubbing_jobs_post"},"Body_create_profile_api_v1_dubbing_profiles_post":{"properties":{"name":{"type":"string","title":"Name","description":"Profile name"},"ref_text":{"type":"string","title":"Ref Text","description":"Transcript of the reference clip","default":""},"language":{"type":"string","title":"Language","default":"Auto"},"instruct":{"type":"string","title":"Instruct","default":""},"personality":{"type":"string","title":"Personality","default":""},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"ref_audio":{"type":"string","format":"binary","title":"Ref Audio","description":"Reference audio clip"}},"type":"object","required":["name","ref_audio"],"title":"Body_create_profile_api_v1_dubbing_profiles_post"},"Body_create_run_api_v1_workflows_templates__template_id__runs_post":{"properties":{"input_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Type"},"overrides":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overrides"},"file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"}},"type":"object","title":"Body_create_run_api_v1_workflows_templates__template_id__runs_post"},"Body_upload_bgm_file_api_v1_musics_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_bgm_file_api_v1_musics_post"},"Body_upload_dubbing_watermark_api_v1_dubbing_watermarks_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_dubbing_watermark_api_v1_dubbing_watermarks_post"},"Body_upload_reference_api_v1_characters_upload_reference_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_reference_api_v1_characters_upload_reference_post"},"Body_upload_video_material_file_api_v1_video_materials_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_video_material_file_api_v1_video_materials_post"},"Body_upload_watermark_api_v1_watermarks_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_watermark_api_v1_watermarks_post"},"CreateCharacterRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"type":"string","title":"Description","default":""},"prompt":{"type":"string","minLength":1,"title":"Prompt"},"model":{"type":"string","title":"Model","default":"nb/nanobanana-pro"},"aspect_ratio":{"type":"string","title":"Aspect Ratio","default":"16:9"},"resolution":{"type":"string","title":"Resolution","default":"1K"},"reference_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Url"},"voice":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Voice"}},"type":"object","required":["name","prompt"],"title":"CreateCharacterRequest"},"CreateJobsRequest":{"properties":{"urls":{"items":{"type":"string"},"type":"array","title":"Urls"},"auto_normalize":{"type":"boolean","title":"Auto Normalize","default":true},"auto_subtitle":{"type":"boolean","title":"Auto Subtitle","default":true}},"type":"object","required":["urls"],"title":"CreateJobsRequest"},"CreateStoryboardRequest":{"properties":{"char_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Char Id"},"char_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Char Ids"},"name":{"type":"string","title":"Name","default":""},"script":{"type":"string","title":"Script"},"auto_review":{"type":"boolean","title":"Auto Review","default":false},"expand_only":{"type":"boolean","title":"Expand Only","default":false},"scene":{"type":"string","title":"Scene","default":""},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style","default":""},"negative":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative","default":""},"model":{"type":"string","title":"Model","default":"nb/nanobanana-2"},"aspect_ratio":{"type":"string","title":"Aspect Ratio","default":"16:9"},"resolution":{"type":"string","title":"Resolution","default":"1K"},"num_frames":{"type":"integer","title":"Num Frames","default":9},"initial_frames":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Initial Frames"}},"type":"object","required":["script"],"title":"CreateStoryboardRequest"},"DraftFromIdeaRequest":{"properties":{"idea":{"type":"string","title":"Idea"},"scene":{"type":"string","title":"Scene","default":""},"num_frames":{"type":"integer","title":"Num Frames","default":9},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"character_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Character Names"}},"type":"object","required":["idea"],"title":"DraftFromIdeaRequest","description":"Free-form pitch + meta the LLM uses to script the storyboard."},"DubbingPresetBody":{"properties":{"name":{"type":"string","title":"Name"},"settings":{"additionalProperties":true,"type":"object","title":"Settings"}},"type":"object","required":["name","settings"],"title":"DubbingPresetBody"},"FacebookProfile":{"properties":{"title":{"type":"string","title":"Title"},"caption":{"type":"string","title":"Caption"},"hashtags":{"items":{"type":"string"},"type":"array","title":"Hashtags"}},"additionalProperties":false,"type":"object","required":["title","caption","hashtags"],"title":"FacebookProfile"},"FrameEdit":{"properties":{"index":{"type":"integer","title":"Index"},"description":{"type":"string","title":"Description"}},"type":"object","required":["index","description"],"title":"FrameEdit"},"FromLibraryRequest":{"properties":{"library_job_id":{"type":"string","title":"Library Job Id"},"voice_name":{"type":"string","title":"Voice Name","default":"tg-voice:truong-giang"},"voice_style":{"type":"string","title":"Voice Style","default":"doc_truyen"},"source_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Language"},"context_reference":{"type":"string","title":"Context Reference","default":""},"voice_rate":{"type":"number","title":"Voice Rate","default":1.0},"voice_volume":{"type":"number","title":"Voice Volume","default":1.0},"bgm_type":{"type":"string","title":"Bgm Type","default":""},"bgm_file":{"type":"string","title":"Bgm File","default":""},"bgm_volume":{"type":"number","title":"Bgm Volume","default":0.2},"burn_subtitles":{"type":"boolean","title":"Burn Subtitles","default":true},"crf":{"type":"integer","title":"Crf","default":18},"subtitle":{"$ref":"#/components/schemas/_SubtitleBody","default":{"enabled":true,"font_name":"Noto Sans","font_size":28,"bold":true,"outline":8,"alignment":2,"margin_v":30,"margin_l":40,"margin_r":40,"color":"#FFFFFF","outline_color":"#000000","back_color":"#000000","back_alpha":1.0,"corner_radius":0,"box_width_pct":80.0,"box_pad_x":24,"box_pad_y":10,"cover_band":false,"cover_band_height_pct":18.0,"cover_band_opacity":0.85}},"watermark":{"$ref":"#/components/schemas/_WatermarkBody","default":{"enabled":false,"file":"","position":"bottom_right","scale_pct":12.0,"opacity":0.8,"margin_pct":3.0}}},"type":"object","required":["library_job_id"],"title":"FromLibraryRequest"},"GeneratePresetBody":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"settings":{"additionalProperties":true,"type":"object","title":"Settings"}},"type":"object","required":["name"],"title":"GeneratePresetBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MaterialInfo":{"properties":{"provider":{"type":"string","title":"Provider","default":"pexels"},"url":{"type":"string","title":"Url","default":""},"duration":{"type":"integer","title":"Duration","default":0}},"type":"object","title":"MaterialInfo"},"PatchFramesRequest":{"properties":{"frames":{"items":{"$ref":"#/components/schemas/FrameEdit"},"type":"array","title":"Frames"}},"type":"object","required":["frames"],"title":"PatchFramesRequest"},"PostizDestination":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"integration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Id"},"identifier":{"type":"string","enum":["facebook","youtube"],"title":"Identifier"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"additionalProperties":false,"type":"object","required":["identifier"],"title":"PostizDestination"},"PostizMetadata":{"properties":{"youtube":{"anyOf":[{"$ref":"#/components/schemas/YouTubeProfile"},{"type":"null"}]},"facebook":{"anyOf":[{"$ref":"#/components/schemas/FacebookProfile"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"PostizMetadata"},"PreviewPromptRequest":{"properties":{"subject":{"type":"string","title":"Subject"},"setting":{"type":"string","title":"Setting","default":""},"style":{"type":"string","title":"Style","default":""},"negative":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative"}},"type":"object","required":["subject"],"title":"PreviewPromptRequest"},"ProbeRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ProbeRequest"},"PublishDubbingBody":{"properties":{"destinations":{"items":{"$ref":"#/components/schemas/PostizDestination"},"type":"array","title":"Destinations"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/PostizMetadata"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"youtube":{"$ref":"#/components/schemas/YouTubeSettings"},"publish_type":{"type":"string","title":"Publish Type","default":"now"},"job_id":{"type":"string","title":"Job Id"}},"additionalProperties":false,"type":"object","required":["job_id"],"title":"PublishDubbingBody"},"PublishGenerateBody":{"properties":{"destinations":{"items":{"$ref":"#/components/schemas/PostizDestination"},"type":"array","title":"Destinations"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/PostizMetadata"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"youtube":{"$ref":"#/components/schemas/YouTubeSettings"},"publish_type":{"type":"string","title":"Publish Type","default":"now"},"task_id":{"type":"string","title":"Task Id"}},"additionalProperties":false,"type":"object","required":["task_id"],"title":"PublishGenerateBody"},"PublishWorkflowBody":{"properties":{"destinations":{"anyOf":[{"items":{"$ref":"#/components/schemas/PostizDestination"},"type":"array"},{"type":"null"}],"title":"Destinations"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/PostizMetadata"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"youtube":{"anyOf":[{"$ref":"#/components/schemas/YouTubeSettings"},{"type":"null"}]},"publish_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publish Type"},"run_id":{"type":"string","title":"Run Id"}},"additionalProperties":false,"type":"object","required":["run_id"],"title":"PublishWorkflowBody"},"RegenerateBody":{"properties":{},"additionalProperties":false,"type":"object","title":"RegenerateBody"},"RegenerateCharacterRequest":{"properties":{"aspect_ratio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aspect Ratio"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},"type":"object","title":"RegenerateCharacterRequest","description":"Optional overrides cho lần re-render. Field nào không set thì\ngiữ giá trị hiện tại của character."},"RegenerateFrameRequest":{"properties":{"index":{"type":"integer","maximum":24.0,"minimum":1.0,"title":"Index"},"new_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Description"},"new_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Prompt"}},"type":"object","required":["index"],"title":"RegenerateFrameRequest"},"RenderFrameRequest":{"properties":{"index":{"type":"integer","maximum":24.0,"minimum":1.0,"title":"Index"},"new_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Description"},"new_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Prompt"}},"type":"object","required":["index"],"title":"RenderFrameRequest"},"SplitScriptRequest":{"properties":{"script":{"type":"string","title":"Script"},"num_frames":{"type":"integer","title":"Num Frames","default":9},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"type":"object","required":["script"],"title":"SplitScriptRequest"},"SubtitleRequest":{"properties":{"video_script":{"type":"string","title":"Video Script"},"video_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Language","default":""},"voice_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name","default":"zh-CN-XiaoxiaoNeural-Female"},"voice_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Volume","default":1.0},"voice_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Rate","default":1.2},"bgm_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bgm Type","default":"random"},"bgm_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bgm File","default":""},"bgm_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bgm Volume","default":0.2},"subtitle_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle Position","default":"bottom"},"font_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Font Name","default":"NotoSans-Regular.ttf"},"text_fore_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Fore Color","default":"#FFFFFF"},"text_background_color":{"anyOf":[{"type":"boolean"},{"type":"string"}],"title":"Text Background Color","default":true},"font_size":{"type":"integer","title":"Font Size","default":60},"stroke_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stroke Color","default":"#000000"},"stroke_width":{"type":"number","title":"Stroke Width","default":1.5},"video_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Source","default":"local"},"subtitle_enabled":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle Enabled","default":"true"}},"type":"object","required":["video_script"],"title":"SubtitleRequest"},"TaskDeletionResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"TaskDeletionResponse","example":{"data":{"combined_videos":["http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/combined-1.mp4"],"progress":100,"state":1,"videos":["http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/final-1.mp4"]},"message":"success","status":200}},"TaskQueryResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"TaskQueryResponse","example":{"data":{"combined_videos":["http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/combined-1.mp4"],"progress":100,"state":1,"videos":["http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/final-1.mp4"]},"message":"success","status":200}},"TaskResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"$ref":"#/components/schemas/TaskResponseData"}},"type":"object","required":["data"],"title":"TaskResponse","example":{"data":{"task_id":"6c85c8cc-a77a-42b9-bc30-947815aa0558"},"message":"success","status":200}},"TaskResponseData":{"properties":{"task_id":{"type":"string","title":"Task Id"}},"type":"object","required":["task_id"],"title":"TaskResponseData"},"TaskVideoRequest":{"properties":{"video_subject":{"type":"string","title":"Video Subject"},"video_script":{"type":"string","title":"Video Script","default":""},"video_terms":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Video Terms"},"video_aspect":{"anyOf":[{"$ref":"#/components/schemas/VideoAspect"},{"type":"null"}],"default":"9:16"},"video_concat_mode":{"anyOf":[{"$ref":"#/components/schemas/VideoConcatMode"},{"type":"null"}],"default":"random"},"video_transition_mode":{"anyOf":[{"$ref":"#/components/schemas/VideoTransitionMode"},{"type":"null"}]},"video_clip_duration":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Video Clip Duration","default":5},"video_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Video Count","default":1},"video_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Source","default":"pexels"},"video_materials":{"anyOf":[{"items":{"$ref":"#/components/schemas/MaterialInfo"},"type":"array"},{"type":"null"}],"title":"Video Materials"},"custom_audio_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Audio File"},"video_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Language","default":""},"voice_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name","default":""},"voice_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Style","default":"doc_truyen"},"voice_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Volume","default":1.0},"voice_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voice Rate","default":1.0},"bgm_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bgm Type","default":"random"},"bgm_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bgm File","default":""},"bgm_volume":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bgm Volume","default":0.2},"watermark_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Watermark Enabled","default":false},"watermark_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Watermark Path","default":""},"watermark_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Watermark Position","default":"bottom_right"},"watermark_scale_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Watermark Scale Pct","default":12.0},"watermark_opacity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Watermark Opacity","default":0.8},"watermark_margin_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Watermark Margin Pct","default":3.0},"subtitle_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Subtitle Enabled","default":true},"subtitle_position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle Position","default":"bottom"},"custom_position":{"type":"number","title":"Custom Position","default":70.0},"font_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Font Name","default":"NotoSans-Regular.ttf"},"text_fore_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Fore Color","default":"#FFFFFF"},"text_background_color":{"anyOf":[{"type":"boolean"},{"type":"string"}],"title":"Text Background Color","default":true},"font_size":{"type":"integer","title":"Font Size","default":60},"stroke_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stroke Color","default":"#000000"},"stroke_width":{"type":"number","title":"Stroke Width","default":1.5},"n_threads":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N Threads","default":2},"paragraph_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Paragraph Number","default":1}},"type":"object","required":["video_subject"],"title":"TaskVideoRequest"},"UpdateCharacterRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Description"},"voice":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Voice"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"appearance":{"anyOf":[{"type":"string","maxLength":1500},{"type":"null"}],"title":"Appearance"}},"type":"object","title":"UpdateCharacterRequest","description":"Patch payload — chỉ field nào set thì update.\n\nEmpty string trên ``description`` / ``voice`` / ``appearance`` được\nhiểu là clear (set về None). ``name`` và ``prompt`` không cho rỗng."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoAspect":{"type":"string","enum":["16:9","9:16","1:1"],"title":"VideoAspect"},"VideoConcatMode":{"type":"string","enum":["random","sequential"],"title":"VideoConcatMode"},"VideoMaterialRetrieveResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"VideoMaterialRetrieveResponse","example":{"data":{"files":[{"file":"/MoneyPrinterTurbo/resource/videos/example.mp4","name":"example.mp4","size":12345678}]},"message":"success","status":200}},"VideoMaterialUploadResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"VideoMaterialUploadResponse","example":{"data":{"file":"/MoneyPrinterTurbo/resource/videos/example.mp4"},"message":"success","status":200}},"VideoPromptRequest":{"properties":{"extra_directions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extra Directions"}},"type":"object","title":"VideoPromptRequest","description":"Optional fields the operator wants to bias the video prompt with."},"VideoScriptRequest":{"properties":{"video_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Subject","default":"春天的花海"},"video_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Language","default":""},"paragraph_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Paragraph Number","default":1}},"type":"object","title":"VideoScriptRequest"},"VideoScriptResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"VideoScriptResponse","example":{"data":{"video_script":"春天的花海，是大自然的一幅美丽画卷。在这个季节里，大地复苏，万物生长，花朵争相绽放，形成了一片五彩斑斓的花海..."},"message":"success","status":200}},"VideoTermsRequest":{"properties":{"video_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Subject","default":"春天的花海"},"video_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Script","default":"春天的花海，如诗如画般展现在眼前。万物复苏的季节里，大地披上了一袭绚丽多彩的盛装。金黄的迎春、粉嫩的樱花、洁白的梨花、艳丽的郁金香……"},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount","default":5}},"type":"object","title":"VideoTermsRequest"},"VideoTermsResponse":{"properties":{"status":{"type":"integer","title":"Status","default":200},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","default":"success"},"data":{"title":"Data"}},"type":"object","title":"VideoTermsResponse","example":{"data":{"video_terms":["sky","tree"]},"message":"success","status":200}},"VideoTransitionMode":{"type":"string","enum":["None","Shuffle","FadeIn","FadeOut","SlideIn","SlideOut"],"title":"VideoTransitionMode"},"YouTubeProfile":{"properties":{"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"hashtags":{"items":{"type":"string"},"type":"array","title":"Hashtags"},"seo_tags":{"items":{"type":"string"},"type":"array","title":"Seo Tags"}},"additionalProperties":false,"type":"object","required":["title","description","hashtags","seo_tags"],"title":"YouTubeProfile"},"YouTubeSettings":{"properties":{"visibility":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"privacyStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privacystatus"},"selfDeclaredMadeForKids":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"null"}],"title":"Selfdeclaredmadeforkids"},"self_declared_made_for_kids":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"null"}],"title":"Self Declared Made For Kids"}},"additionalProperties":false,"type":"object","title":"YouTubeSettings"},"_SubtitleBody":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"font_name":{"type":"string","title":"Font Name","default":"Noto Sans"},"font_size":{"type":"integer","title":"Font Size","default":28},"bold":{"type":"boolean","title":"Bold","default":true},"outline":{"type":"integer","title":"Outline","default":8},"alignment":{"type":"integer","title":"Alignment","default":2},"margin_v":{"type":"integer","title":"Margin V","default":30},"margin_l":{"type":"integer","title":"Margin L","default":40},"margin_r":{"type":"integer","title":"Margin R","default":40},"color":{"type":"string","title":"Color","default":"#FFFFFF"},"outline_color":{"type":"string","title":"Outline Color","default":"#000000"},"back_color":{"type":"string","title":"Back Color","default":"#000000"},"back_alpha":{"type":"number","title":"Back Alpha","default":1.0},"corner_radius":{"type":"integer","title":"Corner Radius","default":0},"box_width_pct":{"type":"number","title":"Box Width Pct","default":80.0},"box_pad_x":{"type":"integer","title":"Box Pad X","default":24},"box_pad_y":{"type":"integer","title":"Box Pad Y","default":10},"cover_band":{"type":"boolean","title":"Cover Band","default":false},"cover_band_height_pct":{"type":"number","title":"Cover Band Height Pct","default":18.0},"cover_band_opacity":{"type":"number","title":"Cover Band Opacity","default":0.85},"cover_roi":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Cover Roi"},"sub_roi":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Sub Roi"}},"type":"object","title":"_SubtitleBody"},"_WatermarkBody":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"file":{"type":"string","title":"File","default":""},"position":{"type":"string","title":"Position","default":"bottom_right"},"scale_pct":{"type":"number","title":"Scale Pct","default":12.0},"opacity":{"type":"number","title":"Opacity","default":0.8},"margin_pct":{"type":"number","title":"Margin Pct","default":3.0}},"type":"object","title":"_WatermarkBody"}}}}