API загрузки видео в кабинет
Файл попадает в список видео аккаунта, чей ключ или JWT передан в запросе. Необязательный group_id сразу кладёт ролик в группу контента этого пользователя.
Зеркала страницы: /api/docs · /api-access
1. Ключ доступа
В кабинете откройте Профиль → API и создайте ключ. Он показывается один раз. Права ключа: videos.read, videos.write, groups.read, jobs.read, ingest.write.
Альтернатива — JWT после входа:
curl -X POST https://youpub.site/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"secret"}'
Дальше передавайте Authorization: Bearer <token>. Для API-ключа это сам ключ, для входа — поле token из ответа.
2. Загрузить файл
POST /api/videos/upload
Content-Type: multipart/form-data. Лимит: 100 запросов в час (значение сервера может отличаться).
| Поле | Обязательно | Описание |
|---|---|---|
video | да | Файл видео |
title | нет | Название. Если пусто — имя файла |
description | нет | Описание |
tags | нет | Строка или список тегов через запятую |
group_id | нет | ID группы контента этого же пользователя |
curl -X POST https://youpub.site/api/videos/upload \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "video=@/path/to/clip.mp4" \ -F "title=Клип из API" \ -F "description=Загружено скриптом" \ -F "tags=api,shorts" \ -F "group_id=40"
Ответ 200:
{
"success": true,
"message": "Видео загружено",
"data": {
"id": 1234,
"group_id": 40,
"added_to_group": true
}
}
group_id и added_to_group есть только если группу передали. Видео всё равно сохраняется в кабинет, даже если группа чужая: тогда added_to_group будет false.
3. Список и карточка
GET /api/videos — видео текущего пользователя. Нужен scope videos.read.
GET /api/videos/{id} — одно видео.
GET /api/videos/{id}/publications — успешные публикации.
DELETE /api/videos/{id} — удалить (scope videos.write).
curl https://youpub.site/api/videos \ -H "Authorization: Bearer YOUR_API_KEY"
4. Загрузка по ссылке
Если файла нет локально, тот же ключ подходит для уже существующего асинхронного метода:
curl -X POST https://youpub.site/api/videos/auto-upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/video.mp4","title":"По ссылке","group_id":40}'
Ответ 202 содержит job_id. Статус: GET /api/videos/jobs/{id}.
5. Пример на PHP
$ch = curl_init('https://youpub.site/api/videos/upload');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_POSTFIELDS => [
'video' => new CURLFile('/path/to/clip.mp4', 'video/mp4', 'clip.mp4'),
'title' => 'Клип из API',
'group_id' => '40',
],
]);
echo curl_exec($ch);
6. Ошибки
401— нет или неверный ключ / JWT.403— у ключа нет нужного scope.400— файл не передан, тип не подходит или кончилась квота.429— слишком много запросов.