Программный доступ к аккаунтам: список и состояние, действия в Instagram
(подписка / лайк / комментарий / DM), публикация, статистика, импорт. Базовый префикс
/api/v1. Все ответы — JSON с полем ok.
Ключ создаётся в панели: Настройки → Доступ по API. Ключ показывается один раз — сохраните его. Передавайте в каждом запросе:
Authorization: Bearer igp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Либо заголовок X-API-Key: igp_....
| scope | что можно |
|---|---|
read | список аккаунтов, профиль, лента, сторис, контент, статистика, статус импорта, поиск пользователя |
write | всё из read + подписки/лайки/комментарии/DM, публикация, заморозка, запуск импорта |
Лимит: 240 запросов в минуту на ключ (иначе 429). Все обращения к Instagram
глобально сериализованы — параллельные вызовы встают в очередь.
401 | нет / неверный / отозванный ключ |
403 | ключу не хватает scope |
404 | аккаунт не найден |
409 | аккаунт на checkpoint / сессия слетела |
429 | превышен лимит запросов |
502 | Instagram / прокси не ответили |
Проверка ключа. Возвращает scope и имя ключа.
Список аккаунтов. Параметры: ?status=active, ?seller=X,
?warmup=1|0, ?limit=100&offset=0.
curl -H "Authorization: Bearer $KEY" \ "https://ПАНЕЛЬ/api/v1/accounts?status=active&limit=50"
{ "ok": true, "total": 129, "accounts": [
{ "username": "...", "user_id": "...", "status": "active", "seller": "Xstore",
"via": "cookies", "session_kind": "app", "warmup": true, "warmup_ab": "GP1",
"frozen": false, "proxy": {"id": 351, "country": "de", "status": "ok"} } ] }Одна карточка аккаунта (то же, что в списке, + last_error).
Живой профиль из Instagram (подписчики / посты / bio). Кэш 5 мин,
?fresh=1 — принудительно.
Свои публикации аккаунта. ?limit=12 (макс. 50).
Домашняя лента аккаунта (до 20 постов).
Трей сторис (кто, сколько кадров, просмотрено ли).
Профиль любого пользователя Instagram по нику или pk. По умолчанию запрос
идёт от первого активного аккаунта; ?as=<account> — от конкретного.
Действие выполняется от лица аккаунта {username}. target —
ник (можно с @) или числовой pk. media — pk поста.
{ "target": "natgeo" }{ "target": "natgeo" }{ "media": "3977169960329165956" }{ "media": "..." }{ "media": "3977169960329165956", "text": "🔥" }{ "target": "someuser", "text": "hey" }Публикация. Медиа берётся по URL (сервер скачивает, до 60 МБ).
{ "kind": "post", "image_url": "https://.../pic.jpg", "caption": "..." }
{ "kind": "story", "image_url": "https://.../pic.jpg" }
{ "kind": "reel", "video_url": "https://.../clip.mp4", "caption": "..." }
{ "ok": true, "kind": "post", "media_pk": "3977...", "content_id": "48a4..." }{ "reason": "..." }, вывод из ротацииАрхив опубликованного панелью. ?account=, ?kind=post|story|reel, ?limit=.
Динамика лайков/просмотров публикаций (последний снимок по каждой). ?account=.
{ "text": "login:pass:2fa\nlogin2:pass2", "seller": "Xstore", "price": 50,
"proxy_kind": "mobile", "proxy_mode": "auto" }Прогресс текущего импорта: running, done/total, results[].
challenge / со слетевшей сессией вернут 409 — их надо чинить в панели.action = api).reel и смену аватара.