API панели Instagram-аккаунтов

Программный доступ к аккаунтам: список и состояние, действия в 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превышен лимит запросов
502Instagram / прокси не ответили

Аккаунты

GET/api/v1/pingread

Проверка ключа. Возвращает scope и имя ключа.

GET/api/v1/accountsread

Список аккаунтов. Параметры: ?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"} } ] }
GET/api/v1/accounts/{username}read

Одна карточка аккаунта (то же, что в списке, + last_error).

GET/api/v1/accounts/{username}/profileread

Живой профиль из Instagram (подписчики / посты / bio). Кэш 5 мин, ?fresh=1 — принудительно.

GET/api/v1/accounts/{username}/mediaread

Свои публикации аккаунта. ?limit=12 (макс. 50).

GET/api/v1/accounts/{username}/feedread

Домашняя лента аккаунта (до 20 постов).

GET/api/v1/accounts/{username}/storiesread

Трей сторис (кто, сколько кадров, просмотрено ли).

GET/api/v1/users/{target}read

Профиль любого пользователя Instagram по нику или pk. По умолчанию запрос идёт от первого активного аккаунта; ?as=<account> — от конкретного.

Действия в Instagram write

Действие выполняется от лица аккаунта {username}. target — ник (можно с @) или числовой pk. media — pk поста.

POST/api/v1/accounts/{username}/follow
{ "target": "natgeo" }
POST/api/v1/accounts/{username}/unfollow — { "target": "natgeo" }
POST/api/v1/accounts/{username}/like — { "media": "3977169960329165956" }
POST/api/v1/accounts/{username}/unlike — { "media": "..." }
POST/api/v1/accounts/{username}/comment
{ "media": "3977169960329165956", "text": "🔥" }
POST/api/v1/accounts/{username}/dm
{ "target": "someuser", "text": "hey" }
POST/api/v1/accounts/{username}/publish

Публикация. Медиа берётся по 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..." }
POST/api/v1/accounts/{username}/freeze — { "reason": "..." }, вывод из ротации
POST/api/v1/accounts/{username}/unfreeze

Контент и статистика

GET/api/v1/contentread

Архив опубликованного панелью. ?account=, ?kind=post|story|reel, ?limit=.

GET/api/v1/statsread

Динамика лайков/просмотров публикаций (последний снимок по каждой). ?account=.

Импорт аккаунтов write

POST/api/v1/import
{ "text": "login:pass:2fa\nlogin2:pass2", "seller": "Xstore", "price": 50,
  "proxy_kind": "mobile", "proxy_mode": "auto" }
GET/api/v1/import/statusread

Прогресс текущего импорта: running, done/total, results[].

Заметки