API для разработчиков

Сжимайте видео до точного размера файла

Отправьте публичный URL видео или загрузите файл. VidSmaller выполняет сжатие асинхронно, сообщает о прогрессе и возвращает готовый к скачиванию результат.

Скачать OpenAPIСкачать коллекцию PostmanОткрыть в Postman
Обновлено
Обновлено: 2026-10-17
Лимиты проверены
Лимиты проверены: 2026-09-14
Используются ваши кредиты VidSmaller
Используются ваши кредиты VidSmaller
На этой странице

Начните за 3 шага

Создайте ключ, отправьте видео, затем опрашивайте задачу или дождитесь подписанного вебхука.

  1. 1

    Создайте ключ

    Задайте имя ключа в панели управления. Скопируйте API-ключ и секрет вебхука сразу после их появления: они показываются только один раз.

  2. 2

    Создайте задачу

    Отправьте публичный URL или загрузите файл, затем укажите target_size_mb и при необходимости кодек, разрешение и формат.

  3. 3

    Получите результат

    Опрашивайте статус задачи или получите подписанный вебхук. Завершённые задачи содержат временную ссылку на скачивание с авторизацией.

Бесплатные эндпоинты только для чтения

Запросы к лимитам платформ и оценке не требуют API-ключа и допускают 600 запросов в час на один IP.

Единый процесс сжатия

Авторизованные задачи используют те же кредиты, лимиты файлов, доступ к кодекам и лимиты всплесков, что и веб-компрессор.

Два способа ввода

Используйте публичную прямую ссылку на видео или запросите подписанный URL для загрузки локального файла.

Стабильный контракт v1

Новые поля могут добавляться, но значение существующих полей v1 не изменится.

Аутентификация и кредиты

Аутентификация нужна только для задач сжатия и загрузок. Эндпоинты платформ и оценки, работающие только на чтение, публичны.

API-ключ Bearer

Создавайте ключи в разделе API Keys панели управления. Храните значение целиком в надёжном месте — показать его повторно нельзя.

Authorization: Bearer $VIDSMALLER_API_KEY

Общий баланс кредитов

У API нет отдельного тарифа. Задачи резервируют кредиты при создании, рассчитываются по фактическому времени кодирования и автоматически возвращают средства при сбое обработки.

/api/v1/platforms

Возвращает все лимиты загрузки, которые отслеживает VidSmaller, вместе с безопасными целевыми размерами, ссылками на источники и датой проверки каждого лимита.

GET

Возвращает 8 платформ. Аутентификация и параметры не требуются.

curl -s https://vidsmaller.com/api/v1/platforms

Поля ответа

statedLimitMbnumber

Лимит загрузки, заявленный платформой для её основного уровня.

safeTargetMbnumber

Чуть более низкий целевой размер, оставляющий запас на разброс кодировщика.

tierNotestring | null

Оговорка, когда заявленный лимит зависит от типа аккаунта, приложения или доступа к API.

tiers[]array

Все задокументированные бесплатные, платные, ботовые и клиентские уровни с примечаниями.

verifiedAtdate

Дата последней проверки человеком официальной документации платформы.

sources[]array

Страницы-источники, использованные для проверки лимита.

/api/v1/estimate

Проверяет, подходит ли файл для нужной площадки, и оценивает результат заданных настроек сжатия. Параметры запроса GET и тело JSON для POST используют одинаковые имена.

GET · POSTAPI-ключ не требуется
curl -s "https://vidsmaller.com/api/v1/estimate?sizeMb=150.7&durationSeconds=596&platform=discord"

Поля запроса

sizeBytesinteger

Размер исходного файла в байтах. Обязателен, если не указан sizeMb.

sizeMbnumber

Размер исходного файла в МиБ, где 1 МБ равен 1 048 576 байт.

durationSecondsnumber

Необязательная длительность. Настоятельно рекомендуется, так как без неё невозможно оценить качество и битрейт.

width, heightinteger

Необязательные размеры исходного видео. Нужны только при оценке изменения разрешения.

platformstring

Необязательный ключ платформы из /api/v1/platforms. Применяет безопасный целевой размер этой платформы.

targetMbnumber

Необязательный собственный предел размера файла. Переопределяет целевой размер выбранной платформы.

settingsobject

Необязательные настройки компрессора: mode, preset, targetSizeMb, crf, resolution, maxResolution, bitrateKbps, codec и outputFormat.

Поля ответа

verdictstring

fits_as_is, compress_recommended или no_target. Можно безопасно использовать в логике приложения.

estimateobject | null

Прогнозируемый результат для указанных настроек. Null, если по входным данным нельзя дать честную оценку.

recommendationobject | null

Настройки, которые должны уложиться в целевой размер, включая расчётный видеобитрейт и рекомендации по качеству.

notes[]string[]

Понятные оговорки, которые полезно показать конечному пользователю.

compressUrlstring

Подходящий веб-инструмент VidSmaller для тех, кто хочет завершить задачу вручную.

Пример ответа

{
  "ok": true,
  "input": { "sizeBytes": 158020403, "sizeMb": 150.7, "durationSeconds": 596 },
  "target": {
    "platform": "discord",
    "safeTargetMb": 19,
    "statedLimitMb": 20,
    "verifiedAt": "2026-09-14"
  },
  "verdict": "compress_recommended",
  "fitsAsIs": false,
  "estimate": {
    "settings": { "mode": "preset", "preset": "balanced", "codec": "libx264" },
    "outputMb": 90.4,
    "savedPercent": 40,
    "fitsTarget": false,
    "jobSeconds": 123
  },
  "recommendation": {
    "settings": { "mode": "target_size", "targetSizeMb": 19 },
    "outputMb": 19,
    "quality": { "videoKbps": 134, "verdict": "rough" }
  }
}

/api/v1/video/jobs

Создаёт асинхронную задачу сжатия с целевым размером target_size_mb. Используйте либо публичный URL источника, либо токен загруженного файла.

POSTТребуется API-ключ Bearer

Вариант A: публичный URL видео

Используйте source_url для общедоступного прямого видеофайла. VidSmaller проверяет реальный размер источника перед резервированием кредитов.

curl -s https://vidsmaller.com/api/v1/video/jobs \
  -H "Authorization: Bearer $VIDSMALLER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://cdn.example.com/input.mp4",
    "target_size_mb": 25,
    "codec": "h264",
    "max_resolution": "1080p",
    "webhook_url": "https://example.com/webhooks/vidsmaller"
  }'

Вариант B: загрузка локального файла

Запросите подписанный URL для загрузки, отправьте байты PUT-запросом напрямую в хранилище, затем создайте задачу с полученным upload_token.

# 1. Request a one-hour signed upload URL
curl -s https://vidsmaller.com/api/v1/video/uploads \
  -H "Authorization: Bearer $VIDSMALLER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename":"input.mp4","file_size":52428800,"content_type":"video/mp4"}'

# 2. PUT the file to upload.url with the returned Content-Type header
# 3. Create the job with the returned upload_token
curl -s https://vidsmaller.com/api/v1/video/jobs \
  -H "Authorization: Bearer $VIDSMALLER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"upload_token":"UPLOAD_TOKEN","target_size_mb":25}'

Поля запроса

source_urlHTTPS URL

Публичная прямая ссылка на видео. Используйте либо её, либо upload_token, но не оба сразу.

upload_tokenstring

Токен, полученный после запроса подписанного URL для загрузки. Используйте его либо source_url.

target_size_mbnumber

Обязательный предел размера результата в МиБ.

codecstring

По умолчанию h264 или h265, если это разрешено платными возможностями аккаунта.

max_resolutionstring

Необязательный предел: 2160p, 1440p, 1080p, 720p, 576p, 480p или 360p.

output_formatstring

Необязательный выходной контейнер: mp4 по умолчанию, mkv, webm или mov.

webhook_urlHTTPS URL

Необязательный коллбэк о завершающем событии. Адреса в приватных сетях и редиректы отклоняются.

Проверка статуса и скачивание

Опрашивайте, пока job.status не станет completed или failed. Завершённая задача возвращает временный download_url с авторизацией. Для запросов статуса и скачивания используйте тот же ключ Bearer.

curl -H "Authorization: Bearer $VIDSMALLER_API_KEY" \
  https://vidsmaller.com/api/v1/video/jobs/JOB_ID

Подписанные вебхуки

Получайте коллбэк вместо опроса, когда задача достигает конечного состояния.

События: video.job.completed, video.job.failed и video.job.expired.

Проверьте x-vidsmaller-signature вычислив HMAC-SHA256 от timestamp + "." + rawBody.

Используйте секрет подписи вебхуков, показанный при создании API-ключа. Заголовок подписи начинается с v1=.

Ошибки

Ошибки возвращаются в формате JSON. Код статуса подсказывает, нужно ли исправить запрос, повторно авторизоваться, купить кредиты или повторить попытку позже.

400

Некорректное или отсутствующее поле запроса.

Прочитайте сообщение об ошибке и исправьте тело запроса.

401

API-ключ отсутствует, недействителен или удалён.

Отправьте действительный ключ Bearer или создайте новый.

402

Недостаточно кредитов для задачи.

Пополните кредиты и создайте задачу снова.

404

Задача или файл для скачивания не найдены для этого ключа.

Проверьте ID и используйте ключ, которым была создана задача.

409

Загрузка или задача находится не в том состоянии.

Проверьте текущий статус перед повторной попыткой.

429

Достигнут лимит запросов или параллельных задач.

Подождите и повторите попытку с задержкой.

500

VidSmaller не смог выполнить запрос.

Повторите позже. Если проблема сохраняется, обратитесь в поддержку.

Лимиты и добросовестное использование

API следует тем же продуктовым лимитам, что и веб-компрессор.

  • Публичные эндпоинты только для чтения допускают 600 запросов в час на один IP.
  • Задачи сжатия используют кредиты вашего аккаунта, лимиты размера файлов, доступ к кодекам и лимиты всплесков.
  • В API v1 могут добавляться новые поля ответа, но значение существующих полей не изменится.
  • Коммерческое использование разрешено. Ссылка на VidSmaller приветствуется, но не обязательна.

Если лимит платформы указан неверно или запрос к API работает не так, как ожидается, напишите на support@vidsmaller.com

Связанные материалы

Вернуться на главную