GAPI

API для скачивания видео VK

Превращает любое публичное видео или клип VK в прямые ссылки — все качества, которые есть у VK, от 144p до 1080p, одним ответом.

GEThttps://api.gapi.dev/v2/vk

Требуется заголовок X-API-Key · ответ в JSON

Параметры

urlобязательныйstring

Публичное видео или клип VK: vkvideo.ru/video-…, vkvideo.ru/clip-…, vk.com/video-…, а также vk.ru и m.vk.com.

напр. https://vkvideo.ru/video-122033519_456246913

Ответы

{
  "platform": "vk",
  "type": "video",
  "title": "Я тебя отыщу",
  "author": null,
  "thumbnail": "https://…",
  "duration": null,
  "media": [
    { "type": "video", "url": "https://…", "quality": "144p",  "ext": "mp4" },
    { "type": "video", "url": "https://…", "quality": "240p",  "ext": "mp4" },
    { "type": "video", "url": "https://…", "quality": "360p",  "ext": "mp4" },
    { "type": "video", "url": "https://…", "quality": "480p",  "ext": "mp4" },
    { "type": "video", "url": "https://…", "quality": "720p",  "ext": "mp4" },
    { "type": "video", "url": "https://…", "quality": "1080p", "ext": "mp4" }
  ]
}

Попробовать

GEThttps://api.gapi.dev/v2/vk
Примеры
Ключа ещё нет? Создать бесплатно
curl -G 'https://api.gapi.dev/v2/vk' \
  --data-urlencode 'url=https://vkvideo.ru/video-122033519_456246913' \
  -H 'X-API-Key: YOUR_KEY'

Что даёт каждая ссылка

Вы отправляетеtypemedia содержит
vkvideo.ru/video-…videoпо элементу на каждую высоту, что есть у VK, обычно шесть
vkvideo.ru/clip-…videoто же, клипы здесь те же видео

Что не поддержано

Посты со стены, плейлисты, списки видео сообщества, ссылки встроенного плеера и VK Play Live. В посте со стены обычно фотографии, а этот эндпоинт качает видео; остальное сломано в самом экстракторе. Все пять отклоняются с объяснением, а не отвечают наполовину.

Разбор по полям — на странице формы ответа.

Как выбрать качество

VK отдаёт несколько качеств одного видео. Читайте quality и берите нужное: второго запроса не нужно, и угадывать шаблон ссылки тоже. Значение там подпись, а не число, так что перед сравнением уберите букву p.

data = response.json()

# quality is a label, not a number: "1080p", not 1080.
best = max(
    (m for m in data["media"] if m["type"] == "video"),
    key=lambda m: int(m["quality"].rstrip("p")),
)
download(best["url"])

Примеры кода

Один и тот же запрос на четырёх языках. Подставьте ключ из личного кабинета, и код запустится как есть.

curl -G 'https://api.gapi.dev/v2/vk' \
  --data-urlencode 'url=https://vkvideo.ru/video-122033519_456246913' \
  -H 'X-API-Key: gapi_live_your_key_here'

Один вызов — один запрос

Карусель из десяти слайдов стоит столько же, сколько одно фото: одно списание с баланса. Считаются вызовы, а не файлы.

Другие платформы