Главная — Дашборд

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 — слишком много запросов.