Каналы и лимиты

Лимиты Instagram* API: что боту можно, а что нельзя

Instagram* не позволяет написать человеку, который сам не начал переписку: холодный директ запрещён правилами и технически невозможен — официальный API такой отправки не даёт. Законных входов три: ответ на комментарий под постом, реакция на сторис и кодовое слово в личных сообщениях. Первый директ после комментария уходит как Private Reply, и попытка на него одна.

14 мин чтения Дмитрий Киселев, основатель ЭТОБОТ и ЭТОЧАТБОТ

Разговор про бота в Instagram* почти всегда начинается с просьбы, которую выполнить нельзя: «разошлите по подписчикам». Ниже — граница канала по пунктам: что API разрешает, что запрещает и где сценарий обрывается молча.

Короткий ответ

  1. Написать первым нельзя. Официальный API Instagram* не даёт отправить сообщение человеку, который сам не начинал переписку. Рассылки по подписчикам аккаунта не существует ни в платном, ни в бесплатном виде.
  2. Законных входов три: ответ на комментарий под постом, ответ на реакцию человека на сторис, ответ на кодовое слово в личных сообщениях. Во всех трёх случаях первый шаг делает человек.
  3. Первый директ после комментария уходит как Private Reply, и попытка на него одна. Отказ сжигает её окончательно: повторная отправка не помогает. Страхует не повтор, а публичная подсказка в комментариях.
  4. Упоминание аккаунта отвечается только публично. Ответ на упоминание в сторис или в комментарии уходит публичным комментарием, а не в директ.

Что можно и что нельзя: двенадцать частых просьб

Список составлен не по нашему вкусу: разделение задаёт официальный API. Слева — просьба в той формулировке, в которой она приходит.

Что хотят сделатьМожно лиОговорка
Ответить на входящее сообщение в директеДапереписку начал человек
Ответить в директ тому, кто написал кодовое слово в комментарииДа, один разпервый директ уходит как Private Reply, попытка одна
Ответить публичным комментарием под постомДапубличные ответы такой одноразовой попыткой не ограничены
Ответить человеку, который отреагировал на сторисДадиалог начинает человек, бот только отвечает
Ответить на кодовое слово в личных сообщенияхДаобычная переписка, попытки не считаются
Ответить на упоминание аккаунтаДа, но только публичноответ уходит комментарием, директ по упоминанию не отправляется
Написать первым тому, кто ничего не писалНетAPI такой отправки не даёт
Разослать сообщение по подписчикам аккаунтаНетни один адресат рассылки переписку не начинал
Поставить рассылку по базе, собранной вручнуюНетсобранная база не даёт права на первое сообщение
Найти человека в директе по номеру телефона или почтеНетпереписка открывается только со стороны человека
Отправить Private Reply второй раз после отказаНетпопытка израсходована
Написать первым новому подписчикуНетподписка переписку не открывает, API такой отправки не даёт

Две строки стоит запомнить отдельно: «рассылка по подписчикам» и «напишем первым» — не функции, за которые можно доплатить. Их в канале нет.

Почему рассылку по подписчикам нельзя купить ни за какие деньги

Причина не в цене и не в квалификации подрядчика. Право начать переписку в Instagram* принадлежит человеку, а не аккаунту: пока человек не написал комментарий, не отреагировал на сторис и не прислал сообщение, отправлять некуда.

Отсюда простая проверка для любого предложения «сделаем рассылку в директ». Один вопрос: каким методом API отправляется первое сообщение человеку, который вам не писал. Ответы бывают трёх видов:

  • Названия метода нет, есть «через личный кабинет сервиса». Значит, отправка идёт не через API, а имитацией действий человека в приложении. Это нарушение правил платформы, и рискует аккаунт заказчика, а не подрядчик.
  • «Разошлём тем, кто уже писал». Законно, но это не рассылка по подписчикам: адресатов столько, сколько людей когда-то написало первыми.
  • «Соберём базу и напишем». Собранная база права на первое сообщение не даёт.

Правила первого шага в каждом канале свои, целиком они разобраны в статье про то, кто может написать клиенту первым. Если рассылка — главное требование проекта, канал выбран неверно, и выяснить это надо до сметы.

Private Reply: одна попытка на комментарий

Самый частый рабочий сценарий — автоответ в Instagram* по кодовому слову: под постом объявлено кодовое слово, человек пишет его в комментарий, бот отвечает в директ. Первое личное сообщение такому человеку уходит особым способом — как приватный ответ на конкретный комментарий, Private Reply. У этого способа три свойства, из которых растут почти все проблемы сценария.

Попытка ровно одна. Платформа разрешает один приватный ответ на комментарий. Не «один в минуту» и не «один в сутки» — один.

Отказ расходует попытку. Если запрос вернулся с ошибкой, право потрачено. Повторная отправка через минуту, через час и на следующий день не возвращает его: ошибка здесь чаще не сетевой сбой, а израсходованный слот. Поэтому строка «настроить повторные попытки» в таком сценарии не работает, хотя в других каналах она помогает.

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

Единственная страховка — публичная подсказка под комментарием. Публичный ответ одноразовой попыткой не ограничен: он остаётся под постом, даже если директ не дошёл. Работу делает текст подсказки: «слово получено, ответ отправили в личные сообщения — если не видно, напишите нам сами». Человек заходит в переписку своим шагом, и дальше бот отвечает без лимита.

И ещё одно следствие — про содержание. Попытка одна, значит, тратить её на «ваш запрос принят, ожидайте» нельзя: в первом сообщении должно быть то, за чем человек писал слово.

Комментарии, сторис и упоминания: чем что отвечается

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

СобытиеЧем на него можно ответитьЧто при этом ограничено
Комментарий под постомпубличный комментарий и один Private Reply в директприватный ответ — одна попытка на комментарий
Реакция человека на сторисобычное сообщение в директедиалог считается начатым человеком, отдельной попытки нет
Кодовое слово в личных сообщенияхобычное сообщение в директеограничений по попыткам нет, переписку начал человек
Упоминание аккаунта в сторис или комментариитолько публичный комментарийдирект по упоминанию не уходит вообще
Подписка на аккаунтничемподписка не открывает переписку

Строка про упоминания ломает ожидания чаще других. Человек упомянул аккаунт в сторис — поблагодарить его в личных сообщениях уже нельзя: единственный ответ, который платформа принимает по упоминанию, — публичный комментарий. Ветка «упоминание → директ» в сценарии не заработает, а выглядеть это будет как молчащий бот.

Follow to DM и другие обещания, которых мы не даём

Отдельно про просьбу «человек подписался — бот написал». Официальный API такой отправки не даёт: подписка переписку не открывает, начать её может только человек. Поэтому механику эту мы не продаём и в смету не ставим; появится законный способ — расскажем.

Рядом ходит другой довод: кнопку в чужом кабинете показывают как доказательство, что «первым писать можно». Кнопка в интерфейсе ничего не доказывает. Проверять надо доступ приложения к методу отправки и то, чем этот метод отвечает.

Что бывает с доступом: ложный отзыв, нечитаемый отказ и выключенный бот

Лимиты API — только половина причин, по которым бот в Instagram* молчит. Вторая половина — доступ. Три ловушки, на которых мы сами попадались.

Отзыв прав бывает ложным. Событие «доступ отозван» приходит и в том случае, когда человек снял одно из частичных разрешений в настройках профиля. Токен при этом живой, бот работает, переподключать ничего не надо. Отличить можно только живым запросом к каналу: признак на экране и письмо тут не доказательство.

Отказ читается по числовому подкоду, а не по тексту. На неудачную отправку платформа отвечает и текстом ошибки, и числовым подкодом. Текст у разных отказов совпадает и меняется без предупреждения, а подкод — единственное, по чему «попытка израсходована» отличается от «доступ не тот» и от временного сбоя канала. Сценарий, разбирающий отказ по тексту, почти любую ошибку считает временной и уходит крутить повторы там, где повторять нечего.

Выключенный бот не принимает уведомления. Расчёт «выключим на неделю, потом включим, и он разберёт накопившееся» не работает: накопившегося не будет. Бывает и так, что уведомление о комментарии не приходит по конкретному посту — тогда молчит не бот, а канал, и в настройках сценария искать нечего.

Все три ловушки выглядят снаружи одинаково — «бот сломался», — а в журнале либо пусто, либо отказ, который никто не прочитал. Поэтому журнал отправок в таких проектах не украшение, а условие разбора.

Когда бот в Instagram* задачу не решает

Случаи, в которых лучше сразу сказать «нет», чем продать сценарий:

  • Задача — уведомления. Напоминание о записи, статус заказа, «оплата прошла» — всё это отправка первым, которой в Instagram* нет. Уведомления живут в Telegram — у тех, кто нажал «Запустить», — во ВКонтакте или в почте.
  • Задача — реактивация базы. «Напишем тем, кто давно не покупал» в этом канале не делается. Написать можно только тем, кто сам вернулся в переписку.
  • Обращений совсем мало. Бот не создаёт комментарии и сообщения, он их обрабатывает. Пока поток держится в единицах, переписку быстрее и дешевле вести руками.
  • Аккаунт ведут без постов и сторис. Все три входа начинаются с публикации: комментарий под постом, реакция на сторис, объявленное в посте кодовое слово. Нет публикаций — нет входов.
  • Никто не читает директ. Бот отвечает на первое сообщение, дальше начинается разговор. Разбирать переписку некому — получается автоответчик, говорящий сам с собой.

Другие каналы: где правила первого шага мягче

Если «писать первым» обязательно, канал выбирается под требование, а не наоборот.

КаналКто делает первый шагЧем ограничен
Instagram*человек: комментарий, реакция на сторис или кодовое словонаписать первым нельзя; первый директ после комментария — Private Reply, попытка одна
Telegramчеловек нажимает «Запустить»рассылки по базе телефонов не существует: по номеру бот человека не найдёт
ВКонтактесообщество может написать подписчику первым, бессрочноокна в 24 часа у ВК нет — чужое ограничение, попавшее в разговор по инерции
МАКСчеловек начинает диалогнужен верифицированный профиль организации, ИП или самозанятого — резидента РФ; верификация занимает несколько рабочих дней; запросы к API требуют доверенного российского корневого сертификата

Как бот встаёт на сообщество и почему он молчит до включения событий — в разборе Callback API ВКонтакте для бота. Что уезжает вместе со сценарием, а что придётся собирать заново, разобрано в статье про перенос бота из Telegram в МАКС.

Звёздочка рядом с названием: чей это вопрос

Звёздочка стоит у каждого упоминания Instagram* в наших материалах, а расшифровка — отдельной строкой внизу любой страницы сайта, а не внутри статьи: в тексте её однажды потеряют при правке, и заметит это не тот, кто правил.

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

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

Сколько это стоит

Разработка — от 20 000 ₽, поддержка — от 5 000 ₽ в месяц. Точная цифра называется после разбора задачи и всегда до начала работ. Что двигает смету именно в Instagram*: число правил и постов, публичные подсказки под комментариями, ветки для сторис и упоминаний, разбор переписки после первого ответа, связка с CRM. Как считается смета целиком, разобрано в статье про то, сколько стоит разработка чат-бота, а из чего складывается поддержка бота после запуска — в отдельном разборе.

Если на первой линии стоит ИИ-агент, его работа считается по расходу токенов: сколько агент потратил, столько и стоила его работа. Отдельно помогаем оплачивать зарубежные ИИ-сервисы иностранными картами.

Сроков не называем. Единственный срок, который мы подтверждаем, — верификация профиля в МАКС: несколько рабочих дней, и зависит она не от подрядчика.

Что запомнить

  1. Канал выбирают под первый шаг, а не наоборот. Если в задаче есть уведомления или возврат старой базы, спор про Instagram* заканчивается здесь: отправки первым в канале нет, и доплатить за неё некому.
  2. Единственную попытку планируют заранее. В первом директе должно стоять то, за чем человек писал кодовое слово, а не «ожидайте»; страховка — публичная подсказка под комментарием, а не повторная отправка.
  3. Ветку «упоминание → директ» не рисуют вообще — по упоминанию уходит только публичный комментарий, а мёртвая ветка в сценарии выглядит снаружи как сломанный бот.
  4. Молчащий бот — чаще доступ, чем сценарий: отказ читается по числовому подкоду, событие «доступ отозван» бывает ложным, а выключенный бот уведомлений не накапливает.

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

Частые вопросы

Можно ли рассылать сообщения в Instagram*?

Нет. Instagram* не даёт написать человеку, который сам не начал переписку: холодный директ запрещён правилами и технически невозможен — официальный API такой отправки не предусматривает. Законных входов три: ответ на комментарий под постом, реакция на сторис и кодовое слово в личных сообщениях. Рассылку по базе подписчиков в Instagram* продать нельзя, и обещание такой рассылки — повод насторожиться.

Какие лимиты у Instagram* API для ботов?

Главный лимит Instagram* API — право начать переписку принадлежит человеку, а не аккаунту. Первое сообщение возможно только как ответ на действие человека: комментарий, реакцию на сторис или кодовое слово в директе. Первый директ после комментария уходит как Private Reply, и попытка на него одна. Упоминание аккаунта отвечается только публичным комментарием, в директ ответ по нему не уходит.

Почему бот в Instagram* не отправил директ после комментария?

Чаще всего потому, что единственная попытка приватного ответа на этот комментарий уже израсходована: приватный ответ на комментарий платформа разрешает один раз, и отказ его расходует. Повторная отправка не помогает. Вторая частая причина — уведомление о комментарии не пришло по конкретному посту, тогда сценарий не запускался вообще. Страховка одна: публичная подсказка под комментарием.

Что такое Private Reply в Instagram*?

Private Reply — приватный ответ на конкретный комментарий, тот способ, которым в Instagram* уходит первое личное сообщение комментатору. Попытка ровно одна: отказ платформы расходует её окончательно, повтор через час или на следующий день право не возвращает. Публичные ответы под постом таким лимитом не ограничены, поэтому подсказка в комментариях остаётся единственным способом дотянуться до человека.

Можно ли вести бота в Instagram* при ограничениях в России?

Правовых заключений мы не даём: законность рекламы, упоминаний аккаунта и обработки переписки — вопрос к юристу заказчика, и задавать его нужно до сборки сценария. Технически канал работает: комментарий, реакция на сторис и кодовое слово запускают ответ так же, как и раньше. Первым написать по-прежнему нельзя — это ограничение API, а не следствие ограничений в России.

Можно ли ответить ботом на упоминание в сторис?

Да, но только публичным комментарием. Ответ на упоминание аккаунта в Instagram* уходит комментарием, в личные сообщения по упоминанию бот написать не может. Реакция человека на сторис — другое событие: она считается началом диалога, и на неё бот отвечает обычным сообщением в директе, без лимита на одну попытку.

Сколько стоит бот для Instagram*-директа?

Разработка — от 20 000 ₽, поддержка — от 5 000 ₽ в месяц. Точная цифра называется после разбора задачи и до начала работ. Смету двигают число правил и постов, публичные подсказки, ветки для сторис и упоминаний, разбор переписки после первого ответа и связка с CRM. Если на первой линии работает ИИ-агент, его работа считается по расходу токенов.

Чем Telegram и ВКонтакте отличаются от Instagram* по первому сообщению?

Во ВКонтакте сообщество может написать подписчику первым и бессрочно: окна в 24 часа у ВК нет. В Telegram бот пишет только тому, кто нажал «Запустить», а рассылки по базе телефонов не существует — по номеру бот человека не найдёт. В Instagram* написать первым нельзя вообще. Поэтому уведомления и напоминания живут в Telegram или ВКонтакте, а не в Instagram*.

Нужен бот, который делает это у вас?

Читать дальше