m·manimstudio
MANIM STUDIO / API

От идеи к видео.
Через API.

Создавайте математические анимации из своего приложения: отправьте описание сцены, дождитесь рендера и скачайте готовый MP4.

Перед началом

API рассчитан на доверенное локальное использование: авторизации и разделения данных пока нет. Ключ OpenRouter хранится на сервере и не передаётся клиентом. Для запросов из браузера используйте тот же origin; запросы на изменение с другого origin отклоняются.

01 / НАЧАЛО

Создайте первую задачу

Отправьте готовое техническое задание в POST /api/jobs. Сервер сразу вернёт задачу со статусом queued, а генерация продолжится в фоне.

curl -X POST http://127.0.0.1:8000/api/jobs \
  -H "Content-Type: application/json" \
  -d '{"brief":"A turquoise circle smoothly transforms into a square on a dark background, 5 seconds.","quality":"medium"}'

brief обязателен и должен содержать от 30 до 16 000 символов. Необязательные поля: title (до 120 символов) и quality: low (480p), medium (720p, по умолчанию) или high (1080p).

Ответ 202 Accepted содержит id задачи и session_id созданной сцены. Адрес задачи также возвращается в заголовке Location.

02 / РЕЗУЛЬТАТ

Дождитесь видео

Опрашивайте GET /api/jobs/{id} примерно раз в две секунды. После completed скачайте видео и исходный код.

curl http://127.0.0.1:8000/api/jobs/JOB_ID
curl -o result.mp4 http://127.0.0.1:8000/api/jobs/JOB_ID/video
curl -o scene.py http://127.0.0.1:8000/api/jobs/JOB_ID/code
queuedВ очереди
generatingГенерация кода
renderingРендер видео
repairingИсправление кода
completedВидео готово
failedОшибка в поле error

При failed можно создать новую задачу через POST /api/jobs/{id}/retry. Повтор может снова расходовать баланс. Исходный код доступен после первой попытки, даже если видео не готово.

03 / ДИАЛОГ

Уточнения и правки

Чтобы обсудить сцену с ИИ-режиссёром, сначала создайте сцену через POST /api/sessions, затем отправьте сообщение:

POST /api/sessions/{id}/messages
Content-Type: application/json

{"message":"Покажи построение графика синуса. Детали выбери сам, начинай.","quality":"medium"}

Ответ содержит reply и job_id. Если job_id равен null, ответьте на уточняющий вопрос. Если ID заполнен, отслеживайте задачу. Для правки отправьте новое сообщение в ту же сцену; необязательный base_job_id выбирает готовую версию этой сцены.

04 / СПРАВОЧНИК

Все методы

GET/api/healthГотовность сервиса
POST/api/jobsСоздать задачу по ТЗ
GET/api/jobs/{id}Статус и попытки
POST/api/jobs/{id}/retryПовторить неудачную задачу
GET/api/jobs/{id}/videoСкачать MP4
GET/api/jobs/{id}/codeСкачать Python-код
POST/api/sessionsСоздать сцену
GET/api/sessions?archived=falseСписок сцен
GET/api/sessions/{id}Сцена, сообщения и версии
POST/api/sessions/{id}/messagesОтправить сообщение
PATCH/api/sessions/{id}?archived=trueАрхивировать или восстановить
DELETE/api/sessions/{id}Удалить сцену

Полные схемы запросов и ответов доступны в Swagger и ReDoc; для генерации клиента используйте OpenAPI JSON.

05 / ОШИБКИ

Если что-то пошло не так

Ошибки обычно возвращаются как {"detail":"Описание ошибки"}. При ошибке валидации 422 поле detail содержит список нарушений.

403 Запрос на изменение с чужого origin.

404 Ресурс не найден или файл ещё не готов.

409 Действие недоступно в текущем состоянии сцены.

422 Ошибка валидации запроса.

502 / 503 Ошибка модели, недоступен рендер или не настроен ключ.

Проверка /api/health возвращает 200 и при недоступности сервиса: проверьте поля configured и renderer_available. Создание задач не идемпотентно: перед повтором после обрыва соединения проверьте список сцен.