API Всплеска
Подключайте прямые эфиры и записи, получайте клипы с субтитрами вебхуком. Все запросы — JSON по HTTPS, базовый адрес:
Ключи
Ключ передаётся в заголовке Authorization. В кабинете их два вида: vs_live_… для работы и vs_test_… для песочницы — в ней эфиры не обрабатываются, а вебхуки приходят с тестовыми клипами.
Без ключа или с отозванным ключом ответ — 401:
{ "detail": "Not authenticated" }
Подключить эфир
Для прямого эфира передайте RTMP- или HLS-адрес в source и mode: "live". Для записи — ссылку на файл и mode: "vod". Ответ приходит сразу со статусом connecting.
| Поле | Тип | Описание |
|---|---|---|
source | string | RTMP/HLS-адрес трансляции или ссылка на запись. |
mode | string | live или vod. |
clip_len | [int, int] | Минимальная и максимальная длина клипа в секундах. По умолчанию [15, 60]. |
min_score | int | Порог оценки от 0 до 100. Клипы ниже порога не рендерятся. По умолчанию 70. |
lang | string | Язык субтитров: ru, en или auto. |
chat | string | Ссылка на лог или WebSocket чата — с ним моменты находятся точнее. |
template_id | string | Шаблон субтитров и обложки. |
webhook_url | string | Куда присылать события по клипам. |
Статус эфира
Статус проходит стадии connecting → watching → finished или failed. Пока эфир идёт, в clips_ready растёт число готовых клипов.
{ "id": "str_51d0c3e8", "status": "watching", "elapsed_sec": 6455, "clips_ready": 3, "chat_rate": 41 }
Остановить наблюдение досрочно. Уже готовые клипы сохраняются.
Клипы
Список клипов эфира по убыванию оценки. Ссылки на файлы в files действуют 24 часа — забирайте клипы в своё хранилище.
| Поле | Описание |
|---|---|
at | Время момента в эфире, HH:MM:SS |
score | Оценка от 0 до 100 |
reason | Сработавшие сигналы: chat_spike, voice_peak, laugh, donation, viewers_up |
titles | Три варианта заголовка |
files | mp4 (1080×1920), srt, cover.jpg |
Шаблоны
Шаблон задаёт шрифт и цвета субтитров, подсветку текущего слова, положение текста и плашку с названием канала. Создаётся в кабинете, дальше передавайте его template_id. Список шаблонов — GET /templates.
Вебхуки
На каждое событие мы шлём POST на ваш webhook_url. Заголовок X-Vsplesk-Signature — HMAC-SHA256 от тела запроса на секрете вебхука; сверяйте его, прежде чем доверять данным. Если ваш сервер не ответил 2xx, повторим до 8 раз с растущей паузой.
| Событие | Когда приходит |
|---|---|
clip.ready | Клип отрендерен, ссылки на файлы внутри |
stream.finished | Эфир закончился, все клипы готовы |
stream.failed | Не удалось подключиться к источнику |
Ошибки
| Код | Значение |
|---|---|
400 | Некорректное тело запроса или неподдерживаемый источник |
401 | Нет ключа или ключ отозван |
404 | Эфир или клип не найден |
409 | Этот источник уже подключён |
429 | Слишком много запросов — см. Retry-After |
Лимиты
| Параметр | Значение |
|---|---|
| Одновременных эфиров | 5 (тариф API — по договору) |
| Длительность записи | до 12 часов |
| Запросов в минуту | 120 |
| Хранение клипов | по сроку тарифа, ссылки на файлы — 24 часа |