REST API для внешних интеграций: загрузка спецификации слайдов и получение готового MP4.
Доступ
API доступен на тарифах Pro и Plus. Пользователям на тарифе Base ключи не выдаются.
Аутентификация
- Откройте Профиль → Интеграции.
- Добавьте домен, с которого будете слать запросы (например
example.com), и скопируйте токен — он показывается один раз. - Передавайте токен в заголовке.
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: pending → processing → completed | 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 <токен>"