{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/api/v1/site-config":{"get":{"summary":"Api V1 Site Config","operationId":"api_v1_site_config_api_v1_site_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/googleaf99941b4603817b.html":{"get":{"summary":"Googleaf","operationId":"googleaf_googleaf99941b4603817b_html_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/.well-known/pki-validation/fileauth.txt":{"get":{"summary":"Zerossl","operationId":"zerossl__well_known_pki_validation_fileauth_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/auth/login/github":{"get":{"summary":"Github Auth","operationId":"github_auth_auth_login_github_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/baidu_verify_codeva-a9Kl2sxDK2.html":{"get":{"summary":"Baidu Verify","operationId":"baidu_verify_baidu_verify_codeva_a9Kl2sxDK2_html_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/auth/callback/github":{"get":{"summary":"Github Callback","operationId":"github_callback_auth_callback_github_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/login/google":{"get":{"summary":"Google Auth","operationId":"google_auth_auth_login_google_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/callback/google":{"get":{"summary":"Google Callback","operationId":"google_callback_auth_callback_google_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/login/sms":{"get":{"summary":"Sms Auth","operationId":"sms_auth_auth_login_sms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/callback/sms":{"get":{"summary":"Sms Callback","operationId":"sms_callback_auth_callback_sms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/refresh":{"post":{"summary":"Refresh Access Token","operationId":"refresh_access_token_auth_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/logout":{"post":{"summary":"Logout Access Token","operationId":"logout_access_token_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/user/me":{"get":{"summary":"Api V1 User Me","operationId":"api_v1_user_me_api_v1_user_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/assets/presign":{"get":{"summary":"Api V1 Assets Presign","operationId":"api_v1_assets_presign_api_v1_assets_presign_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"path","in":"query","required":true,"schema":{"type":"string","description":"Asset path e.g. /assets/user/avatar","title":"Path"},"description":"Asset path e.g. /assets/user/avatar"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/model/list":{"get":{"summary":"Api V1 Model List","operationId":"api_v1_model_list_api_v1_model_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/user/entitlements":{"get":{"summary":"Api V1 User Entitlements","operationId":"api_v1_user_entitlements_api_v1_user_entitlements_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/check-in":{"post":{"summary":"Api V1 Billing Check In","operationId":"api_v1_billing_check_in_api_v1_billing_check_in_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/referral/me":{"get":{"summary":"Api V1 Referral Me","operationId":"api_v1_referral_me_api_v1_referral_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/redeem/preview":{"get":{"summary":"Api V1 Billing Redeem Preview","operationId":"api_v1_billing_redeem_preview_api_v1_billing_redeem_preview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/redeem":{"post":{"summary":"Api V1 Billing Redeem","operationId":"api_v1_billing_redeem_api_v1_billing_redeem_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/user/credits_lots":{"get":{"summary":"Api V1 User Credits Lots","operationId":"api_v1_user_credits_lots_api_v1_user_credits_lots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/user/credits_ledger":{"get":{"summary":"Api V1 User Credits Ledger","operationId":"api_v1_user_credits_ledger_api_v1_user_credits_ledger_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/products":{"get":{"summary":"Api V1 Billing Products","operationId":"api_v1_billing_products_api_v1_billing_products_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/billing/order":{"post":{"summary":"Api V1 Billing Order","operationId":"api_v1_billing_order_api_v1_billing_order_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/pay/webhook/{provider}":{"post":{"summary":"Api V1 Billing Pay Webhook","operationId":"api_v1_billing_pay_webhook_api_v1_billing_pay_webhook__provider__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/refund/webhook/{provider}":{"post":{"summary":"Api V1 Billing Refund Webhook","operationId":"api_v1_billing_refund_webhook_api_v1_billing_refund_webhook__provider__post","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/flush/{order_id}":{"post":{"summary":"Api V1 Billing Flush","operationId":"api_v1_billing_flush_api_v1_billing_flush__order_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/orders":{"get":{"summary":"Api V1 Billing Orders","operationId":"api_v1_billing_orders_api_v1_billing_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/user/api_keys":{"get":{"summary":"Api V1 User Api Keys List","operationId":"api_v1_user_api_keys_list_api_v1_user_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"summary":"Api V1 User Api Keys Create","operationId":"api_v1_user_api_keys_create_api_v1_user_api_keys_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/user/api_keys/{key_id}":{"delete":{"summary":"Api V1 User Api Keys Delete","operationId":"api_v1_user_api_keys_delete_api_v1_user_api_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user/profile":{"post":{"summary":"Api V1 User Profile Patch","operationId":"api_v1_user_profile_patch_api_v1_user_profile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfilePatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/assets/user/avatar":{"get":{"summary":"Assets User Avatar","operationId":"assets_user_avatar_assets_user_avatar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/feedback":{"post":{"summary":"Api V1 Feedback","description":"用户反馈写入 PostgreSQL；截图仍存 data_url/feedback/。","operationId":"api_v1_feedback_api_v1_feedback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/output/videos/merge":{"post":{"summary":"Api V1 Omniflow Videos Merge","description":"将多个视频文件按顺序无损拼接为单个 MP4（ffmpeg concat）。需服务器安装 ffmpeg。","operationId":"api_v1_omniflow_videos_merge_api_v1_workflow_output_videos_merge_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_api_v1_omniflow_videos_merge_api_v1_workflow_output_videos_merge_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/media/video/trim":{"post":{"summary":"Api V1 Media Video Trim","operationId":"api_v1_media_video_trim_api_v1_media_video_trim_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_api_v1_media_video_trim_api_v1_media_video_trim_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/llm/volc/responses":{"post":{"summary":"Api V1 Llm Volc Responses","description":"Proxy for Volc Engine /responses (DeepSeek/Doubao). Requires user auth; API key is server-side.","operationId":"api_v1_llm_volc_responses_api_v1_llm_volc_responses_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/billing/quote":{"post":{"summary":"Api V1 Billing Quote","operationId":"api_v1_billing_quote_api_v1_billing_quote_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/submit":{"post":{"summary":"Api V1 Task Submit","operationId":"api_v1_task_submit_api_v1_task_submit_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/query":{"get":{"summary":"Api V1 Task Query","operationId":"api_v1_task_query_api_v1_task_query_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/list":{"get":{"summary":"Api V1 Task List","operationId":"api_v1_task_list_api_v1_task_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/result_url":{"get":{"summary":"Api V1 Task Result Url","operationId":"api_v1_task_result_url_api_v1_task_result_url_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/input_url":{"get":{"summary":"Api V1 Task Input Url","operationId":"api_v1_task_input_url_api_v1_task_input_url_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/assets/task/result":{"get":{"summary":"Assets Task Result","operationId":"assets_task_result_assets_task_result_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/assets/task/input":{"get":{"summary":"Assets Task Input","operationId":"assets_task_input_assets_task_input_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/task/cancel":{"post":{"summary":"Api V1 Task Cancel","operationId":"api_v1_task_cancel_api_v1_task_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/resume":{"post":{"summary":"Api V1 Task Resume","operationId":"api_v1_task_resume_api_v1_task_resume_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/delete":{"delete":{"summary":"Api V1 Task Delete","operationId":"api_v1_task_delete_api_v1_task_delete_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/task/cleanup":{"post":{"summary":"Api V1 Task Cleanup","operationId":"api_v1_task_cleanup_api_v1_task_cleanup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/worker/fetch":{"post":{"summary":"Api V1 Worker Fetch","operationId":"api_v1_worker_fetch_api_v1_worker_fetch_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/worker/report":{"post":{"summary":"Api V1 Worker Report","operationId":"api_v1_worker_report_api_v1_worker_report_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/worker/ping/subtask":{"post":{"summary":"Api V1 Worker Ping Subtask","operationId":"api_v1_worker_ping_subtask_api_v1_worker_ping_subtask_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/metrics":{"get":{"summary":"Api V1 Monitor Metrics","operationId":"api_v1_monitor_metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/template/asset_url/{template_type}/{filename}":{"get":{"summary":"Api V1 Template Asset Url","description":"get template asset URL - no authentication required","operationId":"api_v1_template_asset_url_api_v1_template_asset_url__template_type___filename__get","parameters":[{"name":"template_type","in":"path","required":true,"schema":{"type":"string","title":"Template Type"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assets/template/{template_type}/{filename}":{"get":{"summary":"Assets Template","description":"get template file - no authentication required","operationId":"assets_template_assets_template__template_type___filename__get","parameters":[{"name":"template_type","in":"path","required":true,"schema":{"type":"string","title":"Template Type"}},{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/canvas/preset_workflows":{"get":{"summary":"Api V1 Canvas Preset Workflows","description":"从 template_dir/preset_workflows 扫描 *.json，供「预设库」使用。无鉴权；可选\n?preset_id=preset-xxx 只返回一个。","operationId":"api_v1_canvas_preset_workflows_api_v1_canvas_preset_workflows_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/template/list":{"get":{"summary":"Api V1 Template List","description":"get template file list (support pagination) - no authentication required","operationId":"api_v1_template_list_api_v1_template_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/template/tasks":{"get":{"summary":"Api V1 Template Tasks","description":"get template task list (support pagination) - no authentication required","operationId":"api_v1_template_tasks_api_v1_template_tasks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/template/{template_id}":{"get":{"summary":"Api V1 Template Get","operationId":"api_v1_template_get_api_v1_template__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","title":"Template Id"}},{"name":"user","in":"query","required":false,"schema":{"title":"User"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/share/create":{"post":{"summary":"Api V1 Share Create","operationId":"api_v1_share_create_api_v1_share_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/share/{share_id}":{"get":{"summary":"Api V1 Share Get","operationId":"api_v1_share_get_api_v1_share__share_id__get","parameters":[{"name":"share_id","in":"path","required":true,"schema":{"type":"string","title":"Share Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/voices/list":{"get":{"summary":"Api V1 Voices List","operationId":"api_v1_voices_list_api_v1_voices_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tts/generate":{"post":{"summary":"Api V1 Tts Generate","description":"Generate TTS audio from text","operationId":"api_v1_tts_generate_api_v1_tts_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TTSRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/voice/clone":{"post":{"summary":"Api V1 Voice Clone","operationId":"api_v1_voice_clone_api_v1_voice_clone_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/voice/clone/tts":{"post":{"summary":"Api V1 Voice Clone Tts","operationId":"api_v1_voice_clone_tts_api_v1_voice_clone_tts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCloneTTSRequest"}}},"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/voice/clone/save":{"post":{"summary":"Api V1 Voice Clone Save","operationId":"api_v1_voice_clone_save_api_v1_voice_clone_save_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceCloneSaveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/voice/clone/{speaker_id}":{"delete":{"summary":"Api V1 Voice Clone Delete","operationId":"api_v1_voice_clone_delete_api_v1_voice_clone__speaker_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"speaker_id","in":"path","required":true,"schema":{"type":"string","title":"Speaker Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/voice/clone/list":{"get":{"summary":"Api V1 Voice Clone List","operationId":"api_v1_voice_clone_list_api_v1_voice_clone_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/assets/podcast/audio":{"get":{"summary":"Assets Podcast Audio","description":"播客音频字节服务（支持 Range）；与 task 一致，本地 fallback 统一走 /assets/ 前缀。","operationId":"assets_podcast_audio_assets_podcast_audio_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/podcast/history":{"get":{"summary":"Api V1 Podcast History","operationId":"api_v1_podcast_history_api_v1_podcast_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/podcast/session/{session_id}/audio_url":{"get":{"summary":"Api V1 Podcast Session Audio Url","operationId":"api_v1_podcast_session_audio_url_api_v1_podcast_session__session_id__audio_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/face/detect":{"post":{"summary":"Api V1 Face Detect","operationId":"api_v1_face_detect_api_v1_face_detect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/audio/separate":{"post":{"summary":"Api V1 Audio Separate","operationId":"api_v1_audio_separate_api_v1_audio_separate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/audio/extract":{"post":{"summary":"Api V1 Audio Extract","description":"Extract audio from video file","operationId":"api_v1_audio_extract_api_v1_audio_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioExtractRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/audio/save":{"post":{"summary":"Api V1 Audio Save","description":"Save audio from the audio workbench as a finished task (no worker); appears in task list under audio outputs.","operationId":"api_v1_audio_save_api_v1_audio_save_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_api_v1_audio_save_api_v1_audio_save_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/canvas/{full_path}":{"get":{"summary":"Canvas Fallback","operationId":"canvas_fallback_canvas__full_path__get","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflow/create":{"post":{"summary":"Api V1 Workflow Create","description":"Create a new workflow.","operationId":"api_v1_workflow_create_api_v1_workflow_create_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/list":{"get":{"summary":"Api V1 Workflow List","operationId":"api_v1_workflow_list_api_v1_workflow_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"public","in":"query","required":false,"schema":{"type":"string","description":"true=public/community list, false=current user list","default":"false","title":"Public"},"description":"true=public/community list, false=current user list"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/workflow/{workflow_id}":{"get":{"summary":"Api V1 Workflow Get","description":"Get a workflow by ID. Logged-in: own or public. Anonymous: public only.","operationId":"api_v1_workflow_get_api_v1_workflow__workflow_id__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"summary":"Api V1 Workflow Delete","operationId":"api_v1_workflow_delete_api_v1_workflow__workflow_id__delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/update":{"post":{"summary":"Api V1 Workflow Update","description":"Update a workflow: layout (nodes/connections) or metadata (name/tags/visibility).","operationId":"api_v1_workflow_update_api_v1_workflow__workflow_id__update_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/nodes/save":{"post":{"summary":"Api V1 Workflow Nodes Save","description":"Save one or more node patches (save_kind: run_state | config | layout). Single node: nodes length 1.","operationId":"api_v1_workflow_nodes_save_api_v1_workflow__workflow_id__nodes_save_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/thumsup":{"post":{"summary":"Api V1 Workflow Thumsup","description":"Toggle workflow thumsup.","operationId":"api_v1_workflow_thumsup_api_v1_workflow__workflow_id__thumsup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/copy":{"post":{"summary":"Api V1 Workflow Copy","description":"Copy a workflow (for preset workflows). Creates a new workflow with the same content but new workflow_id and current user_id.","operationId":"api_v1_workflow_copy_api_v1_workflow__workflow_id__copy_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/node/{node_id}/output/history":{"get":{"summary":"Api V1 Workflow Node Output History","description":"Read history list for the node (all entries, any port).","operationId":"api_v1_workflow_node_output_history_api_v1_workflow__workflow_id__node__node_id__output_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/node/{node_id}/output/{port_id}/url":{"get":{"summary":"Api V1 Workflow Node Output Url","description":"Get the URL(s) for a node's output on a given port.\n单项输出返回 {\"url\": \"...\"}；多项（如多图）返回 {\"urls\": [\"...\", ...]}。","operationId":"api_v1_workflow_node_output_url_api_v1_workflow__workflow_id__node__node_id__output__port_id__url_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/assets/workflow/file":{"get":{"summary":"Api V1 Workflow File","description":"Serve workflow file bytes. file_id resolves via files_tasks; node_id/port_id optional when file_id is set.","operationId":"api_v1_workflow_file_assets_workflow_file_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/node/{node_id}/output/{port_id}/save":{"post":{"summary":"Api V1 Workflow Node Output Port Save","description":"Save one port's output for a node. Appends to node history, updates node output_value and files_tasks, trims to MAX_NODE_HISTORY, and cleans orphan file/task refs.","operationId":"api_v1_workflow_node_output_port_save_api_v1_workflow__workflow_id__node__node_id__output__port_id__save_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/workflow/{workflow_id}/chat":{"get":{"summary":"Api V1 Workflow Chat Get","description":"Get chat history for a workflow. Returns messages from separate store or workflow doc (fallback).","operationId":"api_v1_workflow_chat_get_api_v1_workflow__workflow_id__chat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"summary":"Api V1 Workflow Chat Put","description":"Replace full chat history.","operationId":"api_v1_workflow_chat_put_api_v1_workflow__workflow_id__chat_put","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"summary":"Api V1 Workflow Chat Post","description":"Append messages to chat history.","operationId":"api_v1_workflow_chat_post_api_v1_workflow__workflow_id__chat_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/{full_path}":{"head":{"summary":"Vue Fallback","operationId":"vue_fallback__full_path__head","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Vue Fallback","operationId":"vue_fallback__full_path__head","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AudioExtractRequest":{"properties":{"video":{"type":"string","title":"Video"},"output_format":{"type":"string","title":"Output Format","default":"wav"},"sample_rate":{"type":"integer","title":"Sample Rate","default":44100},"channels":{"type":"integer","title":"Channels","default":2}},"type":"object","required":["video"],"title":"AudioExtractRequest"},"Body_api_v1_audio_save_api_v1_audio_save_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"title":{"type":"string","title":"Title","default":""}},"type":"object","required":["file"],"title":"Body_api_v1_audio_save_api_v1_audio_save_post"},"Body_api_v1_media_video_trim_api_v1_media_video_trim_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"start_sec":{"type":"number","title":"Start Sec"},"end_sec":{"type":"number","title":"End Sec"}},"type":"object","required":["file","start_sec","end_sec"],"title":"Body_api_v1_media_video_trim_api_v1_media_video_trim_post"},"Body_api_v1_omniflow_videos_merge_api_v1_workflow_output_videos_merge_post":{"properties":{"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"Body_api_v1_omniflow_videos_merge_api_v1_workflow_output_videos_merge_post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"TTSRequest":{"properties":{"text":{"type":"string","title":"Text"},"voice_type":{"type":"string","title":"Voice Type"},"context_texts":{"type":"string","title":"Context Texts","default":""},"emotion":{"type":"string","title":"Emotion","default":""},"emotion_scale":{"type":"integer","title":"Emotion Scale","default":3},"speech_rate":{"type":"integer","title":"Speech Rate","default":0},"pitch":{"type":"integer","title":"Pitch","default":0},"loudness_rate":{"type":"integer","title":"Loudness Rate","default":0},"resource_id":{"type":"string","title":"Resource Id","default":"seed-tts-1.0"}},"type":"object","required":["text","voice_type"],"title":"TTSRequest"},"UserProfilePatchRequest":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"avatar_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Base64"}},"type":"object","title":"UserProfilePatchRequest"},"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"},"VoiceCloneSaveRequest":{"properties":{"speaker_id":{"type":"string","title":"Speaker Id"},"name":{"type":"string","title":"Name","default":""}},"type":"object","required":["speaker_id"],"title":"VoiceCloneSaveRequest"},"VoiceCloneTTSRequest":{"properties":{"text":{"type":"string","title":"Text"},"speaker_id":{"type":"string","title":"Speaker Id"},"style":{"type":"string","title":"Style","default":"正常"},"speed":{"type":"number","title":"Speed","default":1.0},"volume":{"type":"number","title":"Volume","default":0},"pitch":{"type":"number","title":"Pitch","default":0},"language":{"type":"string","title":"Language","default":"ZH_CN"}},"type":"object","required":["text","speaker_id"],"title":"VoiceCloneTTSRequest"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}