VideoStat Войти

REST API

Загрузка видео, настройки плеера, статистика, лиды, продажи, тесты и вебхуки.

Базовый адрес: https://videostat.ru/api/v1. В каждом запросе Authorization: Bearer vs_…. Ключ создаётся в кабинете на тарифе «Про» и показывается целиком один раз. Этот текст собран из того же списка, что и сервер: расхождений с методами нет.

Методы

МетодПутьНазначение
GET/api/v1/meТариф, лимиты и сколько уже занято
GET/api/v1/videosСписок видео
POST/api/v1/videos/importДобавить видео по прямой ссылке на mp4, webm или m3u8
POST/api/v1/videosЗагрузить видеофайл
GET/api/v1/videos/{id}Карточка видео: настройки, файлы, статус обработки
PATCH/api/v1/videos/{id}Название, папка, доступность страницы и настройки плеера
DELETE/api/v1/videos/{id}Удалить видео. Файл удаляется, когда не остаётся копий
POST/api/v1/videos/{id}/duplicateКопия: свой ключ, свои настройки и своя статистика, тот же файл
POST/api/v1/videos/{id}/retryПовторить обработку, если она завершилась ошибкой
POST/api/v1/videos/{id}/copy-settingsПеренести настройки с другого своего видео
POST/api/v1/videos/{id}/assetsЗагрузить обложку, картинку или субтитры
DELETE/api/v1/videos/{id}/assets/{assetId}Удалить картинку или субтитры
POST/api/v1/videos/{id}/frameСохранить кадр загруженного видео картинкой
GET/api/v1/videos/{id}/statsСтатистика одного видео за период
GET/api/v1/videos/{id}/sessionsСессии просмотра
GET/api/v1/videos/{id}/sessions/{sid}Одна сессия: путь просмотра, события, продажи
GET/api/v1/statsСводка по всем видео за период
GET/api/v1/stats/liveСколько человек смотрит прямо сейчас
GET/api/v1/compareСравнить от 2 до 5 видео
GET/api/v1/foldersПапки
POST/api/v1/foldersСоздать папку
PATCH/api/v1/folders/{id}Переименовать папку
DELETE/api/v1/folders/{id}Удалить папку. Видео остаются в «Без папки»
GET/api/v1/leadsЛиды из форм плеера
DELETE/api/v1/leads/{id}Удалить лид
GET/api/v1/conversionsПродажи
POST/api/v1/conversionsСообщить о продаже
GET/api/v1/testsСплит-тесты
POST/api/v1/testsСоздать сплит-тест
GET/api/v1/tests/{id}Один сплит-тест и его результаты
PATCH/api/v1/tests/{id}Название, статус или победитель
DELETE/api/v1/tests/{id}Удалить сплит-тест
GET/api/v1/webhooksВебхуки и последние отправки
POST/api/v1/webhooksПодписка на события
PATCH/api/v1/webhooks/{id}Изменить вебхук
DELETE/api/v1/webhooks/{id}Удалить вебхук
POST/api/v1/webhooks/{id}/testПоставить тестовую отправку в очередь

Аккаунт

GET /me

Тариф, лимиты и сколько уже занято

curl -sS https://videostat.ru/api/v1/me \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

Видео

GET /videos

Список видео

curl -sS https://videostat.ru/api/v1/videos \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /videos/import

Добавить видео по прямой ссылке на mp4, webm или m3u8 Файл остаётся по ссылке, на диск VideoStat не копируется.

curl -sS -X POST https://videostat.ru/api/v1/videos/import \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "...",
  "title": "...",
  "folderId": "..."
}'

POST /videos

Загрузить видеофайл Тело запроса — multipart, поле file. Исходник перекодируется, затем удаляется. В query можно передать folderId и title. Двоичную загрузку MCP не принимает: её делает этот метод.

curl -sS -X POST https://videostat.ru/api/v1/videos \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -F "file=@video.mp4"

GET /videos/{id}

Карточка видео: настройки, файлы, статус обработки

id — id видео или его публичный ключ

curl -sS https://videostat.ru/api/v1/videos/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

PATCH /videos/{id}

Название, папка, доступность страницы и настройки плеера settings сливается с текущими: присланная ветка заменяет одноимённую, остальные не трогаются. Массив (кнопки, главы, формы) заменяется целиком.

id — id видео или его публичный ключ

curl -sS -X PATCH https://videostat.ru/api/v1/videos/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "...",
  "publicTitle": "...",
  "description": "..."
}'

DELETE /videos/{id}

Удалить видео. Файл удаляется, когда не остаётся копий

id — id видео или его публичный ключ

curl -sS -X DELETE https://videostat.ru/api/v1/videos/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /videos/{id}/duplicate

Копия: свой ключ, свои настройки и своя статистика, тот же файл

id — id видео или его публичный ключ

curl -sS -X POST https://videostat.ru/api/v1/videos/КЛЮЧ/duplicate \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /videos/{id}/retry

Повторить обработку, если она завершилась ошибкой

id — id видео или его публичный ключ

curl -sS -X POST https://videostat.ru/api/v1/videos/КЛЮЧ/retry \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /videos/{id}/copy-settings

Перенести настройки с другого своего видео parts — имена веток: style, controls, seekBar, autoplay, resume, smartPause, end, startup, sticky, ctas, gates, tags. Без parts переносятся ветки оформления и воспроизведения.

id — id видео или его публичный ключ

curl -sS -X POST https://videostat.ru/api/v1/videos/КЛЮЧ/copy-settings \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "fromId": "...",
  "parts": "..."
}'

Файлы

POST /videos/{id}/assets

Загрузить обложку, картинку или субтитры multipart, поле file. Картинки JPG, PNG, GIF, WEBP до 8 МБ. Субтитры VTT или SRT до 1 МБ.

id — id видео или его публичный ключ

curl -sS -X POST https://videostat.ru/api/v1/videos/КЛЮЧ/assets \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -F "file=@video.mp4"

DELETE /videos/{id}/assets/{assetId}

Удалить картинку или субтитры

id — id видео или его публичный ключ

assetId — id файла из карточки видео

curl -sS -X DELETE https://videostat.ru/api/v1/videos/КЛЮЧ/assets/ФАЙЛ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /videos/{id}/frame

Сохранить кадр загруженного видео картинкой Видео должно быть обработано. sec — секунда от начала.

id — id видео или его публичный ключ

curl -sS -X POST https://videostat.ru/api/v1/videos/КЛЮЧ/frame \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "sec": "..."
}'

Статистика

GET /videos/{id}/stats

Статистика одного видео за период Дополнительно segment: all, converted, not_converted, leads, clicked, mobile, desktop, returning.

id — id видео или его публичный ключ

from — Дата YYYY-MM-DD

to — Дата YYYY-MM-DD

curl -sS https://videostat.ru/api/v1/videos/КЛЮЧ/stats \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

GET /videos/{id}/sessions

Сессии просмотра

id — id видео или его публичный ключ

from — Дата YYYY-MM-DD

to — Дата YYYY-MM-DD

curl -sS https://videostat.ru/api/v1/videos/КЛЮЧ/sessions \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

GET /videos/{id}/sessions/{sid}

Одна сессия: путь просмотра, события, продажи

id — id видео или его публичный ключ

sid — id сессии

curl -sS https://videostat.ru/api/v1/videos/КЛЮЧ/sessions/СЕССИЯ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

GET /stats

Сводка по всем видео за период

from — Дата YYYY-MM-DD

to — Дата YYYY-MM-DD

curl -sS https://videostat.ru/api/v1/stats \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

GET /stats/live

Сколько человек смотрит прямо сейчас

curl -sS https://videostat.ru/api/v1/stats/live \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

GET /compare

Сравнить от 2 до 5 видео

ids — id через запятую

from — Дата YYYY-MM-DD

to — Дата YYYY-MM-DD

curl -sS https://videostat.ru/api/v1/compare \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

Папки

GET /folders

Папки

curl -sS https://videostat.ru/api/v1/folders \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /folders

Создать папку

curl -sS -X POST https://videostat.ru/api/v1/folders \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "..."
}'

PATCH /folders/{id}

Переименовать папку

id — id папки

curl -sS -X PATCH https://videostat.ru/api/v1/folders/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "..."
}'

DELETE /folders/{id}

Удалить папку. Видео остаются в «Без папки»

id — id папки

curl -sS -X DELETE https://videostat.ru/api/v1/folders/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

Лиды и продажи

GET /leads

Лиды из форм плеера

curl -sS https://videostat.ru/api/v1/leads \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

DELETE /leads/{id}

Удалить лид

id — id лида

curl -sS -X DELETE https://videostat.ru/api/v1/leads/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

GET /conversions

Продажи

curl -sS https://videostat.ru/api/v1/conversions \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /conversions

Сообщить о продаже Нужен email, phone или visitorId. Зритель ищется по контакту из формы плеера. Повтор с тем же orderId не создаёт вторую продажу.

curl -sS -X POST https://videostat.ru/api/v1/conversions \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "...",
  "phone": "...",
  "visitorId": "..."
}'

A/B-тесты

GET /tests

Сплит-тесты

curl -sS https://videostat.ru/api/v1/tests \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /tests

Создать сплит-тест От 2 до 5 своих видео. weight — доля зрителей, по умолчанию 50.

curl -sS -X POST https://videostat.ru/api/v1/tests \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "...",
  "variants": "..."
}'

GET /tests/{id}

Один сплит-тест и его результаты

id — id теста

curl -sS https://videostat.ru/api/v1/tests/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

PATCH /tests/{id}

Название, статус или победитель

id — id теста

curl -sS -X PATCH https://videostat.ru/api/v1/tests/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "...",
  "status": "...",
  "winnerId": "..."
}'

DELETE /tests/{id}

Удалить сплит-тест

id — id теста

curl -sS -X DELETE https://videostat.ru/api/v1/tests/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

Вебхуки

GET /webhooks

Вебхуки и последние отправки

curl -sS https://videostat.ru/api/v1/webhooks \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /webhooks

Подписка на события События: lead.created, conversion.created, viewer.tagged, cta.clicked, video.ready. secret показывается в ответе и подписывает тело заголовком X-VideoStat-Signature.

curl -sS -X POST https://videostat.ru/api/v1/webhooks \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "...",
  "events": "...",
  "active": "..."
}'

PATCH /webhooks/{id}

Изменить вебхук

id — id вебхука

curl -sS -X PATCH https://videostat.ru/api/v1/webhooks/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "...",
  "events": "...",
  "active": "..."
}'

DELETE /webhooks/{id}

Удалить вебхук

id — id вебхука

curl -sS -X DELETE https://videostat.ru/api/v1/webhooks/КЛЮЧ \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

POST /webhooks/{id}/test

Поставить тестовую отправку в очередь

id — id вебхука

curl -sS -X POST https://videostat.ru/api/v1/webhooks/КЛЮЧ/test \
  -H "Authorization: Bearer vs_ВАШ_КЛЮЧ"

Настройки плеера

Поле settings в PATCH /videos/{id}. Присылайте только то, что меняете: остальные ветки остаются. Массив заменяется целиком. Значения вне границ приводятся к ближайшим допустимым, неизвестные отбрасываются.

ПолеТипПо умолчанию
style.accentstring"#111111"
style.iconColorstring"#ffffff"
style.controlsRadiusnumber6
style.controlsOpacitynumber0.9
style.frameRadiusnumber8
style.bigPlaystring"circle"
style.bigPlaySizenumber72
controls.playbooleantrue
controls.rewindbooleanfalse
controls.fastForwardbooleanfalse
controls.progressbooleantrue
controls.currentTimebooleantrue
controls.durationbooleanfalse
controls.mutebooleantrue
controls.volumebooleantrue
controls.captionsbooleantrue
controls.settingsbooleantrue
controls.pipbooleantrue
controls.fullscreenbooleantrue
seekBar.modestring"normal"
seekBar.allowSeekbooleantrue
autoplay.enabledbooleantrue
autoplay.topTextstring"Видео уже идёт"
autoplay.bottomTextstring"Нажмите, чтобы включить звук"
autoplay.textColorstring"#ffffff"
autoplay.bgColorstring"#111111"
autoplay.positionstring"center"
autoplay.restartbooleantrue
resume.enabledbooleanfalse
resume.textstring"Вы уже начинали смотреть это видео"
resume.continueTextstring"Продолжить"
resume.restartTextstring"Смотреть сначала"
smartPause.tabHiddenbooleantrue
smartPause.outOfViewbooleanfalse
end.actionstring"none"
end.urlstring""
end.delaySecnumber5
end.textstring"Переходим дальше через"
expire.enabledbooleanfalse
expire.atstring""
expire.textstring"Это видео больше недоступно"
startup.startAtnumber0
startup.speednumber1
startup.mutedbooleanfalse
startup.focusedFullscreenbooleanfalse
sticky.enabledbooleanfalse
sticky.positionstring"bottom-right"
thumbnail.assetIdstringnull
thumbnail.mobileAssetIdstringnull
thumbnail.fitstring"cover"
exitThumbnail.enabledbooleanfalse
exitThumbnail.assetIdstringnull
exitThumbnail.titlestring"Не уходите"
exitThumbnail.textstring"Самое важное ещё впереди"
exitThumbnail.buttonTextstring"Продолжить просмотр"
ctasarray[]
gatesarray[]
choicesarray[]
tagsarray[]
revealsarray[]
chaptersarray[]
captions.assetIdstringnull
captions.labelstring"Русский"
captions.langstring"ru"
captions.defaultOnbooleanfalse
branding.logoAssetIdstringnull
branding.logoUrlstring""
branding.showPoweredBybooleantrue

Ошибки

Ответ — JSON с полями error и message. 401 — нет или отозван ключ, 402 — не позволяет тариф, 404 — нет такого объекта.