VideoHost API

v1.0
GET /api/videos
Описание
Возвращает список всех видео. Поддерживает пагинацию через query‑параметры page и limit. В ответе для каждого видео возвращается прямая ссылка на файл в S3.
Query‑параметры опционально
page: 1 // номер страницы (по умолчанию 1) limit: 20 // записей на страницу (по умолчанию 20)
Пример запроса
GET /api/videos?page=1&limit=2
Ответ 200 OK
{ "total": 1487, "page": 1, "limit": 2, "items": [ { "id": "vid_001", "title": "Готовим пасту карбонара за 20 минут", "duration": 1183, "views": 284521, "fileUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_001/master.mp4", "createdAt": "2025-02-03T09:15:00Z" }, { "id": "vid_002", "title": "Обзор новостроек в Екатеринбурге", "duration": 742, "views": 51208, "fileUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_002/master.mp4", "createdAt": "2025-02-05T16:40:00Z" } ] }
GET /api/videos/:id
Описание
Возвращает метаданные одного видео по его идентификатору, включая прямую ссылку на файл в S3.
Параметры пути
id — string, обязательный
Пример запроса
GET /api/videos/vid_001
Ответ 200 OK
{ "id": "vid_001", "title": "Готовим пасту карбонара за 20 минут", "description": "Пошаговый рецепт классической карбонары с гуанчале", "duration": 1183, "views": 284521, "author": "chef_ivan", "fileUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_001/master.mp4", "thumbnailUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_001/thumb.jpg", "createdAt": "2025-02-03T09:15:00Z", "tags": ["кулинария", "паста", "рецепты"] }
Ответ 404 Not Found
{ "error": "Video not found", "code": 404 }
POST /api/videos
ключ
Описание
Загружает новое видео. Принимает multipart/form-data: файл видео и сопутствующие метаданные. Файл сохраняется в S3, в ответе возвращаются ссылки.
Тело запроса multipart/form-data
file: <binary> // видеофайл, обязательный title: "Утренняя пробежка..." // обязательный description: "Видео с прогулки..." tags: "спорт,город" // через запятую
Ответ 201 Created
{ "id": "vid_1488", "title": "Утренняя пробежка по набережной", "status": "processing", "fileUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_1488/master.mp4", "thumbnailUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_1488/thumb.jpg", "createdAt": "2025-06-10T12:34:56Z" }
Ответ 401 Unauthorized
{ "error": "Unauthorized", "message": "Missing or invalid API key", "code": 401 }
Ответ 400 Bad Request
{ "error": "Missing required field: file", "code": 400 }
PUT /api/videos/:id
ключ
Описание
Полностью заменяет метаданные видео. Требуется передать все поля. Файл не меняется.
Параметры пути
id — string, обязательный
Тело запроса application/json
{ "title": "Карбонара — обновлённый рецепт", "description": "Добавили вариант с панчеттой вместо гуанчале", "tags": ["кулинария", "паста", "обновлено"] }
Ответ 200 OK
{ "id": "vid_001", "title": "Карбонара — обновлённый рецепт", "description": "Добавили вариант с панчеттой вместо гуанчале", "fileUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_001/master.mp4", "updatedAt": "2025-06-10T13:00:00Z" }
Ответ 401 Unauthorized
{ "error": "Unauthorized", "message": "Missing or invalid API key", "code": 401 }
Ответ 404 Not Found
{ "error": "Video not found", "code": 404 }
PATCH /api/videos/:id
ключ
Описание
Частично обновляет метаданные видео. Передаются только изменяемые поля.
Параметры пути
id — string, обязательный
Тело запроса application/json
{ "title": "Карбонара — финальная версия" }
Ответ 200 OK
{ "id": "vid_001", "title": "Карбонара — финальная версия", "fileUrl": "https://s3.eu-central-1.amazonaws.com/videohost-files/vid_001/master.mp4", "updatedAt": "2025-06-10T13:05:00Z" }
Ответ 401 Unauthorized
{ "error": "Unauthorized", "message": "Missing or invalid API key", "code": 401 }
Ответ 404 Not Found
{ "error": "Video not found", "code": 404 }
DELETE /api/videos/:id
ключ
Описание
Удаляет видео по идентификатору. Операция необратима.
Параметры пути
id — string, обязательный
Пример запроса
DELETE /api/videos/vid_001
Ответ 204 No Content
// тело ответа отсутствует
Ответ 401 Unauthorized
{ "error": "Unauthorized", "message": "Missing or invalid API key", "code": 401 }
Ответ 404 Not Found
{ "error": "Video not found", "code": 404 }

API‑ключ

Передайте в заголовке X-API-Key или Authorization: Bearer <ключ>

sk_video_9f3a1c7e