SocialLoad API

Тот же движок, что работает в Telegram-боте, на сайте и в расширении для браузера. Загрузка асинхронная: запрос создаёт задачу и сразу отдаёт её номер, держать соединение открытым не нужно.

Базовый адрес https://usarbot.online/api/v1

Быстрый старт

Три шага: создать задачу, дождаться готовности, забрать файл.

# 1. Создаём задачу
curl -X POST https://usarbot.online/api/v1/download \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_live_ВАШ_КЛЮЧ" \
  -d '{"url": "https://www.instagram.com/p/Db_HLc5DQBQ/"}'

# Ответ
{"success": true, "job_id": "3f2a91c0d4e84b7c", "status": "queued", "progress": 12}

# 2. Проверяем состояние
curl https://usarbot.online/api/v1/download/3f2a91c0d4e84b7c \
  -H "X-API-Key: sk_live_ВАШ_КЛЮЧ"

# Когда готово
{"success": true, "status": "completed", "progress": 100,
 "download_url": "https://usarbot.online/api/v1/files/3f2a91c0d4e84b7c?token=…",
 "expires_at": "2026-08-15T04:12:00+00:00"}

# 3. Забираем файл по download_url
Ссылка download_url временная и подписанная — ключ для неё не нужен. Файл удаляется с сервера после expires_at.

Ключ доступа

Каждый запрос, кроме /status и /files/…, требует заголовок:

X-API-Key: sk_live_xxxxxxxxxxxxxxxxxxxxxxxx

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

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

Площадки

Заявлено только то, что движок действительно берёт.

ПлощадкаВыбор качестваФорматы
YouTube 144p – 2160p mp4 mp3
Instagram лучшее доступное mp4 mp3
TikTok лучшее доступное mp4 mp3
Threads лучшее доступное mp4 mp3
X (Twitter) лучшее доступное mp4 mp3
Facebook лучшее доступное mp4 mp3
VK лучшее доступное mp4 mp3
Reddit лучшее доступное mp4 mp3
SoundCloud только звук mp3
Snapchat лучшее доступное mp4 mp3
Dailymotion лучшее доступное mp4 mp3
Rutube лучшее доступное mp4 mp3
OK.ru лучшее доступное mp4 mp3
Likee лучшее доступное mp4 mp3
Bilibili лучшее доступное mp4 mp3

Выбор качества есть только у YouTube. У остальных площадок сервис берёт лучшее доступное — если передать quality, он будет принят, но в ответе придёт пояснение notice.

Создать загрузку

POST/download
ПолеТипОписание
urlстрокаОбязательно. Ссылка на запись.
qualityстрокаbest (по умолчанию), audio, либо 144p…2160p для YouTube.
formatстрокаmp4 или mp3. mp3 всегда означает только звук.
webhook_urlстрокаНеобязательно. Куда сообщить о готовности, только https.

Заголовок Idempotency-Key защищает от двойной отправки: повтор с тем же значением вернёт ту же задачу, а не создаст новую.

Ответ 202 — задача создана
{"success": true, "job_id": "3f2a91c0d4e84b7c", "status": "queued",
 "progress": 12, "platform": "instagram", "reused": false}

Ответ 200 — такой файл уже скачан недавно
{"success": true, "job_id": "3f2a91c0d4e84b7c", "status": "completed",
 "progress": 100, "reused": true, "download_url": "…"}

Состояние задачи

GET/download/{job_id}
СтатусЧто значит
queuedЗадача принята и ждёт свободного места
processingРазбираем ссылку и готовим файл
downloadingИдёт скачивание
convertingСобираем результат, например несколько снимков в архив
completedГотово, есть download_url
failedНе получилось, причина в поле error
cancelledОстановлено

Опрашивайте раз в 1–2 секунды. Отдельно можно остановить задачу: POST /download/{job_id}/cancel

Сведения о записи

POST/metadata

Название, автор, обложка, длительность — без скачивания.

{"success": true, "platform": "youtube", "title": "…", "author": "…",
 "duration": 213, "quality_selection": "choice",
 "formats": [{"quality": "720p", "format": "mp4", "size_mb": 24.1},
             {"quality": "1080p", "format": "mp4", "size_mb": 48.7}]}
Список форматов возвращается только там, где он известен заранее — сейчас это YouTube. Для остальных площадок formats пустой, а quality_selection равен best. Выдуманных значений в ответе нет.

Упрощённый метод — без ключа

POST/shortcuts/download ключ не нужен

Для iOS Shortcuts и других простых клиентов: ждёт готовности прямо в запросе и возвращает ссылку одним действием.

Ключ здесь не требуется намеренно. Команду на iPhone люди пересылают друг другу, и секрет внутри неё утёк бы в первый же день. Вместо ключа действуют ограничения по адресу — они ниже описаны.
Готово сразу — код 200
{"success": true, "status": "completed", "stage": "completed", "progress": 100,
 "job_id": "106de71c16a048389e24c66099a385f6", "platform": "instagram",
 "title": "Video by tursunkulov.muhammad", "size_mb": 1.9, "files": 1,
 "download_url": "https://usarbot.online/api/v1/files/106de…?token=c40a2…",
 "expires_at": "2026-08-15T06:00:22+00:00"}

Файл тяжёлый — код 202, досмотрим отдельно
{"success": true, "status": "downloading", "stage": "downloading", "progress": 62,
 "job_id": "e2e25f0864a740af89920de431c6c423", "platform": "youtube",
 "poll_url": "https://usarbot.online/api/v1/shortcuts/status/e2e25f0864a7…"}

Ожидание настраивается полем wait (0–50 секунд, по умолчанию 25). Оба ответа нужно уметь обрабатывать.

Проверка готовности — тоже без ключа

GET /shortcuts/status/{job_id} ключ не нужен

Опрашивайте раз в секунду, пока status не станет completed. Пропуском служит сам номер задачи: это 32 случайных знака, известных только тому, кто её создал.

Ограничения без ключа

Что ограниченоСколько
Запросов с одного адреса8 за 10 минут
Загрузок в сутки60
Одновременных загрузок2
Размер файладо 500 МБ
Ожидание в запроседо 50 секунд

Адрес не хранится — считается только его отпечаток. Если передать X-API-Key, действуют лимиты ключа: они заметно выше.

Лимиты ключа

GET/usage

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

Команда на iPhone

Ничего регистрировать не нужно — ключ для этого не требуется. Пошагово, в приложении «Быстрые команды»:

  1. Создайте новую команду и добавьте действие Получить содержимое URL.
  2. В поле URL впишите https://usarbot.online/api/v1/shortcuts/download
  3. Раскройте Показать больше и выберите метод POST.
  4. В Тело запроса выберите JSON.
  5. Добавьте поле: ключ url, тип Текст, значение — Вход быстрой команды.
  6. Добавьте действие Получить значение словаря, ключ download_url.
  7. Добавьте Получить содержимое URL с этим значением — это скачает файл.
  8. Добавьте Сохранить в фотоальбом либо Сохранить файл.
  9. В настройках команды (значок ⓘ) включите Показывать в меню «Поделиться», тип входа — URL.

Теперь в любой соцсети нажмите «Поделиться» и выберите свою команду.

Если файл большой

Тогда вместо download_url придёт job_id. Добавьте в команду ожидание:

  1. Действие Повторить, количество повторов — 60.
  2. Внутри: Получить содержимое URL с адресом https://usarbot.online/api/v1/shortcuts/status/ + job_id, метод GET.
  3. Действие Получить значение словаря, ключ progress — можно показать процент.
  4. Условие Если значение по ключу status равно completed → взять download_url и выйти из цикла.
  5. Иначе — действие Подождать 1 секунду.
Проверка готовности тоже работает без ключа. Процент в поле progress — настоящий: это доля скачанных байтов, а у постов из нескольких снимков — доля готовых файлов.

Примеры кода

curl -X POST https://usarbot.online/api/v1/download \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $SOCIALLOAD_KEY" \
  -d '{"url": "https://www.tiktok.com/@user/video/123", "quality": "best"}'

Webhooks

Передайте webhook_url при создании задачи — и вместо опроса сервис сам сообщит о событиях:

СобытиеКогда
download.startedЗадача взята в работу
download.completedФайл готов
download.failedНе получилось

Каждый запрос подписан заголовком X-SocialLoad-Signature вида sha256=… — это HMAC тела запроса на общем секрете. Проверяйте подпись, прежде чем доверять содержимому. При ошибке 5xx запрос повторяется трижды с нарастающей паузой.

Лимиты и кредиты

Ограничения

ТарифЗапросов/минОдновременноКредитов/сутки
free201 50
starter602 500
developer1203 2000
pro3005 10000
business6008 40000
enterprise120016 без лимита

Стоимость операций

ОперацияКредитов
Сведения о записи1
Фото1
Только звук2
До 480p2
720p3
1080p5
1440p и 4K10

Повторная загрузка того же файла кредитов не стоит. Если загрузка сорвалась — кредиты возвращаются.

Ошибки

Ответ при ошибке всегда одного вида:

{"success": false,
 "error": {"code": "UNSUPPORTED_PLATFORM",
           "message": "Эта платформа не поддерживается"}}
Код HTTPЧто произошло
400Ссылка неверная, площадка не поддерживается или параметры не те
401Ключ не передан или не найден
403Ключ отключён или просрочен
404Задача не найдена или ссылка устарела
409Достигнут предел одновременных загрузок
413Файл больше допустимого для тарифа
429Слишком часто либо закончились кредиты
502Площадка не отдала файл
503Сервис перегружен

Подробности ошибок сервера наружу не отдаются — в ответе только код и понятное описание. Каждый ответ содержит заголовок X-Request-Id: назовите его при обращении в поддержку.

Версия API 1.0.0 · OpenAPI · интерактивная документация · на главную

Скачивайте только тот контент, на который у вас есть права.