API — генерация видео

REST API для внешних интеграций: загрузка спецификации слайдов и получение готового MP4.

Доступ

API доступен на тарифах Pro и Plus. Пользователям на тарифе Base ключи не выдаются.

Аутентификация

  1. Откройте Профиль → Интеграции.
  2. Добавьте домен, с которого будете слать запросы (например example.com), и скопируйте токен — он показывается один раз.
  3. Передавайте токен в заголовке.
Authorization: Bearer <токен>

Токен привязан к домену: callback_url обязан находиться на этом домене или его поддомене.

Лимиты

10 запросов в минуту на пользователя, общий для всех его интеграций. При превышении — 429.

Создание видео — POST /api/videos

Тело — JSON-спецификация, зеркало внутреннего состояния мастера:

{
  "defaults": {
    "default_duration": 3,
    "default_font_size": 56
  },
  "slides": [
    { "text": "Первый слайд" },
    { "text": "Второй слайд", "slide_duration": 4, "slide_animation": "fade-in" }
  ],
  "callback_url": "https://api.example.com/hook",
  "project_id": 123
}
  • defaults — опционально; не указан → дефолтные настройки.
  • slides — обязательно, от 1 до 100; каждое поле слайда опционально (наследует дефолт).
  • callback_url — опционально; хост должен совпадать с доменом ключа.
  • project_id — опционально; пусто → новый проект, указан → пересборка существующего (чужой → 404).

Ответ 202 Accepted:

{ "id": 42 }

Рендер асинхронный — опрашивайте статус или дождитесь колбэка.

Статус рендера — GET /api/videos/{id}

{
  "id": 42,
  "status": "completed",
  "video_url": "https://ваш-домен/storage/video-slides/slides_....mp4",
  "error": null
}

status: pendingprocessingcompleted | failed.

Колбэк

По завершении (успех или ошибка) сервер отправляет POST на callback_url:

{
  "id": 42,
  "status": "completed",
  "video_url": "https://ваш-домен/storage/video-slides/slides_....mp4",
  "error": null
}

При ошибке: status: "failed", video_url: null, error — сообщение. Один вызов, без ретраев; при недоставке опрашивайте GET /api/videos/{id}.

Ошибки

  • 401 — отсутствует или неверный токен.
  • 404 — видео/проект не найден (или project_id чужого пользователя).
  • 422 — невалидная спецификация: { "message": "Ошибка валидации.", "errors": { "slides": ["..."] } }.
  • 429 — превышен лимит запросов.

Примеры (curl)

Выпуск нового видео:

curl -X POST https://ваш-домен/api/videos \
  -H "Authorization: Bearer <токен>" \
  -H "Content-Type: application/json" \
  -d '{"slides":[{"text":"Привет!"}]}'

Проверка статуса:

curl https://ваш-домен/api/videos/42 \
  -H "Authorization: Bearer <токен>"