{"openapi":"3.1.0","info":{"title":"Manim Studio API","description":"Генерация Manim-видео и интерактивных анимаций по ТЗ или через диалог. POST /api/jobs ставит задачу в очередь; GET /api/jobs/{job_id} возвращает статус. После completed скачайте /video, /interactive и /code. API предназначен для доверенного локального использования, авторизации нет.","version":"1.0.0"},"paths":{"/api/health":{"get":{"tags":["Service"],"summary":"Проверить готовность сервиса","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/sessions":{"get":{"tags":["Sessions"],"summary":"Список сцен; archived=true — архив","operationId":"sessions_api_sessions_get","parameters":[{"name":"archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionSummary"},"title":"Response Sessions Api Sessions Get"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Sessions"],"summary":"Создать пустую сцену для диалога","operationId":"create_session_api_sessions_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionCreated"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/sessions/{session_id}":{"patch":{"tags":["Sessions"],"summary":"Архивировать или восстановить сцену","operationId":"archive_session_api_sessions__session_id__patch","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"archived","in":"query","required":true,"schema":{"type":"boolean","title":"Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Sessions"],"summary":"Логически удалить сцену","operationId":"delete_session_api_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedResponse"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Sessions"],"summary":"Получить сцену, диалог и версии","operationId":"session_api_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/messages":{"post":{"tags":["Sessions"],"summary":"Обсудить сцену или изменить готовое видео","operationId":"chat_api_sessions__session_id__messages_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/title":{"put":{"tags":["Sessions"],"summary":"Rename","operationId":"rename_api_sessions__session_id__title_put","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Session"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/approve":{"post":{"tags":["Sessions"],"summary":"Approve","operationId":"approve_api_sessions__session_id__approve_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanApproval"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/finalize":{"post":{"tags":["Jobs"],"summary":"Finalize","operationId":"finalize_api_jobs__job_id__finalize_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"quality","in":"query","required":false,"schema":{"type":"string","default":"high","title":"Quality"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs":{"post":{"tags":["Jobs"],"summary":"Создать видео по готовому ТЗ без диалога","operationId":"create_render_api_jobs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderRequest"}}},"required":true},"responses":{"202":{"description":"Созданы новая сцена и задача в очереди","headers":{"Location":{"description":"URL для опроса статуса","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Получить статус, исходник и ошибки попыток","operationId":"job_api_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":{"$ref":"#/components/schemas/Job"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/retry":{"post":{"tags":["Jobs"],"summary":"Создать новую задачу из неудачной","operationId":"retry_api_jobs__job_id__retry_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/video":{"get":{"tags":["Jobs"],"summary":"Скачать готовое MP4","operationId":"video_api_jobs__job_id__video_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"video/mp4":{"schema":{"type":"string","format":"binary"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/code":{"get":{"tags":["Jobs"],"summary":"Скачать последний сгенерированный Python-код","operationId":"code_api_jobs__job_id__code_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/x-python":{"schema":{"type":"string"}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/production":{"get":{"summary":"Capabilities","operationId":"capabilities_api_production_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/demos":{"get":{"summary":"List Demos","operationId":"list_demos_api_demos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/sessions/{session_id}/instant-demo":{"post":{"summary":"Create Instant Demo","operationId":"create_instant_demo_api_sessions__session_id__instant_demo_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantDemoRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/scene-assets":{"get":{"summary":"Scene Assets","description":"Images of a scene as data URLs: the sandboxed player cannot fetch them itself.","operationId":"scene_assets_api_jobs__job_id__scene_assets_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/export-video":{"post":{"summary":"Export Video","description":"Render the interactive scene frame by frame into MP4 (then GET /api/jobs/{id}/video).","operationId":"export_video_api_jobs__job_id__export_video_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"quality","in":"query","required":false,"schema":{"type":"string","default":"high","title":"Quality"}},{"name":"resolution","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resolution"}},{"name":"fps","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fps"}},{"name":"compression","in":"query","required":false,"schema":{"type":"string","default":"balanced","title":"Compression"}},{"name":"speed","in":"query","required":false,"schema":{"type":"string","default":"balanced","title":"Speed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Export Video Status","operationId":"export_video_status_api_jobs__job_id__export_video_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/interactive":{"get":{"summary":"Interactive Bundle","operationId":"interactive_bundle_api_jobs__job_id__interactive_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Download"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/live-code":{"put":{"summary":"Update Live Code","operationId":"update_live_code_api_jobs__job_id__live_code_put","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/metadata":{"put":{"summary":"Metadata","operationId":"metadata_api_sessions__session_id__metadata_put","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMetadata"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/favorite":{"post":{"summary":"Toggle Favorite","operationId":"toggle_favorite_api_sessions__session_id__favorite_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/FavoriteRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/to-drive":{"post":{"summary":"Send Job To Drive","operationId":"send_job_to_drive_api_jobs__job_id__to_drive_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/FavoriteRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/drive":{"get":{"summary":"List Drive Items","operationId":"list_drive_items_api_drive_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/drive/items/{item_id}":{"get":{"summary":"Get Drive Item","operationId":"get_drive_item_api_drive_items__item_id__get","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/assets":{"get":{"summary":"Assets","operationId":"assets_api_sessions__session_id__assets_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Upload","operationId":"upload_api_sessions__session_id__assets_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetUpload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/storyboard":{"post":{"summary":"Storyboard","operationId":"storyboard_api_sessions__session_id__storyboard_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/storyboard/plan":{"post":{"summary":"Plan Storyboard","operationId":"plan_storyboard_api_sessions__session_id__storyboard_plan_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanApproval"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sessions/{session_id}/narration":{"post":{"summary":"Write Narration","operationId":"write_narration_api_sessions__session_id__narration_post","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanApproval"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/subtitles":{"get":{"summary":"Subtitle File","operationId":"subtitle_file_api_jobs__job_id__subtitles_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/captions":{"get":{"summary":"Captions","operationId":"captions_api_jobs__job_id__captions_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/share":{"post":{"summary":"Create Share","operationId":"create_share_api_jobs__job_id__share_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/review/{token}":{"get":{"summary":"Review","operationId":"review_api_review__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/review/{token}/interactive":{"get":{"summary":"Shared Interactive","operationId":"shared_interactive_api_review__token__interactive_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/review/{token}/comments":{"post":{"summary":"Comment","operationId":"comment_api_review__token__comments_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/review/{token}/video":{"get":{"summary":"Shared Video","operationId":"shared_video_api_review__token__video_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/{job_id}/shares":{"delete":{"summary":"Revoke","operationId":"revoke_api_jobs__job_id__shares_delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/status":{"get":{"summary":"Status","operationId":"status_api_auth_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/auth/register":{"post":{"summary":"Register","operationId":"register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credentials"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credentials"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"summary":"Logout","operationId":"logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Запрещённый Origin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Ресурс не найден или ещё не готов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Действие недоступно в текущем состоянии","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Ошибка модели или рендера","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Не настроен ключ модели или недоступен рендер","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"AssetUpload":{"properties":{"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"},"data":{"type":"string","maxLength":28000000,"title":"Data"}},"type":"object","required":["name","data"],"title":"AssetUpload"},"Attempt":{"properties":{"number":{"type":"integer","title":"Number"},"code":{"type":"string","title":"Code"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["number","code","error","created_at"],"title":"Attempt"},"ChatRequest":{"properties":{"options":{"$ref":"#/components/schemas/VideoOptions"},"review":{"type":"boolean","title":"Review","default":false},"preferences":{"type":"string","maxLength":1000,"title":"Preferences","default":""},"base_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Job Id","description":"Базовая готовая версия для возможной правки. По умолчанию — последняя готовая. Режиссёр сам определяет, нужна правка или новая сцена."},"message":{"type":"string","maxLength":6000,"minLength":1,"title":"Message","description":"Описание сцены, ответ на уточнение или правка."},"quality":{"type":"string","enum":["low","medium","high"],"title":"Quality","description":"low: 480p/15fps; medium: 720p/30fps; high: 1080p/60fps.","default":"medium"}},"type":"object","required":["message"],"title":"ChatRequest"},"ChatResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"null — нужно продолжить диалог; строка — задача уже поставлена в очередь."},"session":{"$ref":"#/components/schemas/Session"}},"type":"object","required":["reply","job_id","session"],"title":"ChatResponse"},"CodeUpdateRequest":{"properties":{"code":{"type":"string","maxLength":100000,"minLength":10,"title":"Code"}},"type":"object","required":["code"],"title":"CodeUpdateRequest"},"CommentRequest":{"properties":{"author":{"type":"string","maxLength":80,"minLength":1,"title":"Author","default":"Гость"},"text":{"type":"string","maxLength":2000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"CommentRequest"},"Credentials":{"properties":{"username":{"type":"string","maxLength":80,"minLength":3,"title":"Username"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"invite":{"type":"string","maxLength":200,"title":"Invite","default":""}},"type":"object","required":["username","password"],"title":"Credentials"},"DeletedResponse":{"properties":{"deleted":{"type":"boolean","title":"Deleted"}},"type":"object","required":["deleted"],"title":"DeletedResponse"},"ErrorResponse":{"properties":{"detail":{"type":"string","title":"Detail"}},"type":"object","required":["detail"],"title":"ErrorResponse"},"FavoriteRequest":{"properties":{"favorite":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Favorite"},"project":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project"}},"type":"object","title":"FavoriteRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"configured":{"type":"boolean","title":"Configured"},"docker":{"type":"boolean","title":"Docker"},"renderer_available":{"type":"boolean","title":"Renderer Available"},"chat_model":{"type":"string","title":"Chat Model"},"code_model":{"type":"string","title":"Code Model"},"max_attempts":{"type":"integer","title":"Max Attempts"},"manim_image":{"type":"string","title":"Manim Image"}},"type":"object","required":["configured","docker","renderer_available","chat_model","code_model","max_attempts","manim_image"],"title":"HealthResponse"},"InstantDemoRequest":{"properties":{"preset":{"type":"string","maxLength":60,"minLength":1,"title":"Preset"},"aspect":{"type":"string","enum":["16:9","9:16","1:1"],"title":"Aspect","default":"16:9"}},"type":"object","required":["preset"],"title":"InstantDemoRequest"},"Job":{"properties":{"options":{"additionalProperties":true,"type":"object","title":"Options"},"id":{"type":"string","title":"Id"},"session_id":{"type":"string","title":"Session Id"},"title":{"type":"string","title":"Title"},"brief":{"type":"string","title":"Brief"},"quality":{"type":"string","enum":["low","medium","high"],"title":"Quality"},"model":{"type":"string","title":"Model"},"status":{"type":"string","enum":["queued","generating","rendering","repairing","completed","failed"],"title":"Status"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"parent_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Job Id"},"attempts":{"items":{"$ref":"#/components/schemas/Attempt"},"type":"array","title":"Attempts"}},"type":"object","required":["id","session_id","title","brief","quality","model","status","error","created_at","updated_at","parent_job_id","attempts"],"title":"Job"},"JobSummary":{"properties":{"options":{"additionalProperties":true,"type":"object","title":"Options"},"id":{"type":"string","title":"Id"},"session_id":{"type":"string","title":"Session Id"},"title":{"type":"string","title":"Title"},"brief":{"type":"string","title":"Brief"},"quality":{"type":"string","enum":["low","medium","high"],"title":"Quality"},"model":{"type":"string","title":"Model"},"status":{"type":"string","enum":["queued","generating","rendering","repairing","completed","failed"],"title":"Status"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"parent_job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Job Id"}},"type":"object","required":["id","session_id","title","brief","quality","model","status","error","created_at","updated_at","parent_job_id"],"title":"JobSummary"},"Message":{"properties":{"role":{"type":"string","enum":["user","assistant"],"title":"Role"},"content":{"type":"string","title":"Content"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["role","content","created_at"],"title":"Message"},"PlanApproval":{"properties":{"options":{"$ref":"#/components/schemas/VideoOptions"},"brief":{"type":"string","maxLength":16000,"minLength":30,"title":"Brief"},"quality":{"type":"string","enum":["low","medium","high"],"title":"Quality","default":"low"}},"type":"object","required":["brief"],"title":"PlanApproval"},"ProjectMetadata":{"properties":{"folder":{"type":"string","maxLength":100,"title":"Folder","default":""},"tags":{"type":"string","maxLength":300,"title":"Tags","default":""}},"type":"object","title":"ProjectMetadata"},"RenameRequest":{"properties":{"title":{"type":"string","maxLength":120,"minLength":1,"title":"Title"}},"type":"object","required":["title"],"title":"RenameRequest"},"RenderRequest":{"properties":{"options":{"$ref":"#/components/schemas/VideoOptions"},"brief":{"type":"string","maxLength":16000,"minLength":30,"title":"Brief","description":"Полное ТЗ для кодера: объекты, подписи, движение, длительность и стиль. Уточняющих вопросов не будет."},"title":{"type":"string","maxLength":120,"minLength":1,"title":"Title","default":"API-сцена"},"quality":{"type":"string","enum":["low","medium","high"],"title":"Quality","default":"medium"}},"additionalProperties":false,"type":"object","required":["brief"],"title":"RenderRequest"},"Session":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"created_at":{"type":"string","title":"Created At"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"pending_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pending Plan"},"favorite":{"type":"integer","title":"Favorite","default":0},"archived":{"type":"integer","title":"Archived"},"deleted":{"type":"integer","title":"Deleted"},"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Messages"},"jobs":{"items":{"$ref":"#/components/schemas/JobSummary"},"type":"array","title":"Jobs"}},"type":"object","required":["id","title","created_at","archived","deleted","messages","jobs"],"title":"Session"},"SessionCreated":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","title","created_at"],"title":"SessionCreated"},"SessionSummary":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"created_at":{"type":"string","title":"Created At"},"folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folder"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"pending_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pending Plan"},"favorite":{"type":"integer","title":"Favorite","default":0},"archived":{"type":"integer","title":"Archived"},"deleted":{"type":"integer","title":"Deleted"}},"type":"object","required":["id","title","created_at","archived","deleted"],"title":"SessionSummary"},"StoryClip":{"properties":{"title":{"type":"string","maxLength":120,"minLength":1,"title":"Title","default":"Эпизод"},"brief":{"type":"string","maxLength":16000,"minLength":30,"title":"Brief"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"}},"type":"object","required":["brief"],"title":"StoryClip"},"StoryRequest":{"properties":{"variants":{"type":"boolean","title":"Variants","default":false},"clips":{"items":{"$ref":"#/components/schemas/StoryClip"},"type":"array","maxItems":12,"minItems":1,"title":"Clips"},"quality":{"type":"string","enum":["low","medium","high"],"title":"Quality","default":"low"},"options":{"$ref":"#/components/schemas/VideoOptions"}},"type":"object","required":["clips"],"title":"StoryRequest"},"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"},"VideoOptions":{"properties":{"engine":{"type":"string","enum":["manim","web"],"title":"Engine","default":"manim"},"aspect":{"type":"string","enum":["16:9","9:16","1:1"],"title":"Aspect","default":"16:9"},"narration":{"type":"string","maxLength":12000,"title":"Narration","default":""},"subtitles":{"type":"boolean","title":"Subtitles","default":false},"voiceover":{"type":"boolean","title":"Voiceover","default":false},"audio_asset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Asset"},"assets":{"items":{"type":"string"},"type":"array","maxItems":12,"title":"Assets"}},"type":"object","title":"VideoOptions"}}},"tags":[{"name":"Service","description":"Готовность сервера и рендера."},{"name":"Sessions","description":"Диалог, история и управление сценами."},{"name":"Jobs","description":"Генерация, статусы, повтор и файлы."}]}