MAX Bot API меняется 19 июля 2026: как перевести бота на platform-api2.max.ru
Если у вас уже работает MAX-бот для заявок, поддержки, записи или уведомлений, его нужно проверить до 19 июля 2026 года. В документации MAX появилось критичное изменение: запросы к старому домену platform-api.max.ru нужно перевести на platform-api2.max.ru, а токен больше нельзя передавать в query-параметрах.
Коротко: рабочий MAX-бот после 19 июля может начать падать не из-за бизнес-логики, а из-за транспорта. Самые частые причины - старый API-домен, токен в URL, неподдерживаемый сертификат Webhook-endpoint, зависимость от GET /chats и Long Polling в production.
Если бот связан с лидами, CRM или поддержкой клиентов, откладывать проверку опасно: сбой будет выглядеть как "бот молчит", "сообщения не уходят", "webhook не приходит" или "чаты пропали".
Что именно меняется в MAX Bot API
На 16 июля 2026 года в официальной документации MAX указаны четыре изменения, которые напрямую влияют на боевые интеграции:
- HTTP-запросы нужно направлять на
https://platform-api2.max.ru. - Токен нужно передавать через заголовок
Authorization: <token>. - Для Webhook больше нельзя полагаться на HTTP и самоподписанные сертификаты.
- Метод
GET /chatsс июня 2026 больше не поддерживается.
Отдельно MAX рекомендует использовать Webhook для production-окружения. Long Polling остаётся удобным для разработки и тестирования, но для боевого бота это слабое место: есть ограничения по скорости и хранению событий.
Быстрый чек-лист миграции
Проверьте бота по этому списку. Если хотя бы один пункт не выполнен, есть риск, что интеграция отвалится или начнёт терять события.
- В коде нет обращений к
platform-api.max.ru. - Все API-запросы идут на
https://platform-api2.max.ru. - Токен не передаётся как
?access_token=...,?token=...или похожий query-параметр. - Во всех запросах есть заголовок
Authorization: {access_token}. - Webhook доступен по HTTPS на порту 443.
- Сертификат endpoint выдан доверенным центром или сертификатом Минцифры.
- Сервер отдаёт полную цепочку сертификатов.
- Webhook отвечает
200 OKбыстрее чем за 30 секунд. - В подписке используется
secret, а сервер проверяетX-Max-Bot-Api-Secret. - Логика получения
chat_idне зависит отGET /chats. - Для чатов и каналов
chat_idсохраняется из событийbot_added,bot_startedи других webhook-событий. - Есть очередь или журнал повторной обработки, если CRM, ERP или база временно недоступны.
Для бизнеса главный вопрос простой: если бот принимает заявки, можно ли доказать, что после сбоя ни один лид не потеряется? Если нет, миграция должна включать не только замену URL, но и аудит архитектуры.
Как было раньше и как должно быть теперь
Плохой вариант - токен в URL:
curl -X POST "https://platform-api.max.ru/messages?user_id=123&access_token=TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"Проверка связи"}'Рабочий вариант после миграции - новый домен и Authorization header:
curl -X POST "https://platform-api2.max.ru/messages?user_id=123" \
-H "Authorization: TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"Проверка связи"}'Если в проекте есть SDK, wrapper-класс или общий API-клиент, начните с него. В хорошей архитектуре домен и способ авторизации меняются в одном месте. Если URL размазан по контроллерам, воркерам и cron-задачам, сначала стоит собрать единый клиент для MAX API.
Что проверить в Webhook
Webhook - это не просто URL в настройках. MAX валидирует TLS и ждёт быстрый успешный ответ от вашего endpoint. Поэтому проверка должна идти не только по коду, но и по инфраструктуре.
Минимальный production endpoint:
https://your-domain.ru/webhookЧто важно:
- только HTTPS;
- порт 443;
- домен в URL совпадает с CN или SAN сертификата;
- сервер отдаёт полную цепочку сертификатов;
- endpoint отвечает
200 OKв пределах 30 секунд; - тяжёлая бизнес-логика не выполняется внутри webhook-контроллера.
Правильный паттерн для production:
- Webhook принимает событие.
- Проверяет
X-Max-Bot-Api-Secret. - Кладёт событие в очередь или журнал.
- Быстро возвращает
200 OK. - Отдельный worker обрабатывает событие, ходит в CRM, ERP, LLM или базу.
Такой подход защищает бота от каскадных отказов. Если CRM временно отвечает 502, webhook всё равно принимает событие, а worker повторит обработку позже.
Как обновить подписку через POST /subscriptions
Для production MAX рекомендует Webhook. Подписка создаётся через POST /subscriptions.
Пример:
curl -X POST "https://platform-api2.max.ru/subscriptions" \
-H "Authorization: TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-domain.ru/webhook",
"update_types": ["message_created", "message_callback", "bot_started"],
"secret": "your_secret"
}'secret лучше задавать всегда. Тогда каждый webhook-запрос можно проверять по заголовку X-Max-Bot-Api-Secret, а не принимать любые POST-запросы из интернета.
Если бот обрабатывает персональные данные, заявки, номера телефонов или статусы заказов, отсутствие проверки secret - это уже не техническая мелочь, а риск безопасности.
Что делать с GET /chats
С июня 2026 GET /chats больше не поддерживается. Если бот раньше периодически получал список чатов через этот метод, такую логику нужно заменить.
Новая схема:
- Подписаться на события через
POST /subscriptions. - Получать
chat_idиз событий, напримерbot_addedилиbot_started. - Сохранять
chat_idв своей базе. - Обновлять хранилище при добавлении, повторном событии или удалении бота из чата.
- Использовать сохранённый
chat_idдля отправки сообщений и других API-вызовов.
Важно: теперь поддержка списка чатов становится ответственностью вашей системы. Нужно предусмотреть дедупликацию, обработку повторных webhook-событий и удаление неактуальных chat_id.
Почему Long Polling лучше убрать из production
Long Polling выглядит проще: сервер сам ходит за событиями, не нужно открывать endpoint наружу. Но для production это плохой компромисс.
Риски Long Polling:
- ограничения по скорости получения событий;
- риск потерять контекст при неправильной работе с
marker; - сложное горизонтальное масштабирование;
- конфликт с активной webhook-подпиской;
- слабая наблюдаемость при сбоях.
Для тестового бота Long Polling нормален. Для бота, который принимает лиды, брони, обращения в поддержку или статусы заказов, лучше переходить на Webhook с очередью, логами и ретраями.
Подробнее архитектурную разницу мы разбирали в статье Webhook vs Long Polling в Production.
Типовые симптомы после неудачной миграции
Если после 19 июля бот начал вести себя нестабильно, проверьте эти признаки:
| Симптом | Вероятная причина |
|---|---|
401 Unauthorized |
Токен всё ещё передаётся в URL или не уходит в Authorization |
404 или сетевые ошибки |
В коде остался старый домен platform-api.max.ru |
| Webhook не получает события | TLS, порт 443, цепочка сертификатов или неверный URL подписки |
| События приходят повторно | Нет идемпотентности по update_id или message_id |
| Чаты "исчезли" | Код зависел от GET /chats |
| Бот отвечает с задержкой | В webhook-контроллере выполняется тяжёлая CRM/LLM-логика |
| Лиды не попадают в CRM | Нет очереди и retry-механизма при сбое внешнего API |
Самая неприятная ошибка - когда webhook отвечает 200 OK, но бизнес-процесс внутри уже сломан. Поэтому кроме uptime сервера нужно смотреть очередь событий, ошибки CRM, DLQ, время обработки и число неотправленных сообщений.
Мини-план миграции за один день
Если времени мало, идите по такому сценарию:
1. Найдите старый домен
По проекту нужно найти все вхождения:
platform-api.max.ru
access_token=
token=
/chats
/updatesПроверять надо не только приложение, но и cron-скрипты, worker-процессы, переменные окружения, CI/CD, документацию поддержки и старые SDK-конфиги.
2. Обновите общий API-клиент
Вынесите базовый URL и авторизацию в один модуль:
const MAX_API_BASE_URL = "https://platform-api2.max.ru";
async function maxApi(path, options = {}) {
return fetch(`${MAX_API_BASE_URL}${path}`, {
...options,
headers: {
Authorization: process.env.MAX_BOT_TOKEN,
"Content-Type": "application/json",
...(options.headers || {}),
},
});
}Это упрощённый пример. В боевом коде добавьте таймауты, логирование, обработку 429, ретраи и маскирование токена в логах.
3. Пересоздайте или обновите Webhook-подписку
Создайте подписку на новый endpoint через POST /subscriptions, укажите нужные события и secret. После этого проверьте, что webhook реально получает тестовое событие и что заголовок X-Max-Bot-Api-Secret проверяется на вашей стороне.
4. Уберите зависимость от GET /chats
Если боту нужно работать с групповыми чатами или каналами, начните хранить chat_id самостоятельно. Старые данные лучше мигрировать в таблицу с полями:
chat_id;- тип события, из которого он получен;
- дата первого получения;
- дата последнего подтверждения;
- статус активности;
- служебные метаданные.
5. Проведите дымовой тест
Минимальный набор проверок:
- Пользователь пишет боту.
- Webhook получает событие.
- Сервер валидирует secret.
- Событие сохраняется в очередь или журнал.
- Worker обрабатывает событие.
- Бот отправляет ответ через
platform-api2.max.ru. - Если есть CRM, создаётся тестовый лид.
- В логах нет токена в открытом виде.
Что это значит для бизнеса
Для бизнеса миграция MAX Bot API - не просто задача "поменять домен". Если бот встроен в продажи или поддержку, нужно проверить весь путь события:
Пользователь -> MAX -> Webhook -> очередь -> обработчик -> CRM/ERP -> ответ пользователюСлабое место на любом участке может привести к потерянным заявкам. Особенно если бот:
- принимает обращения из рекламы;
- записывает клиентов на услуги;
- создаёт сделки в Bitrix24 или amoCRM;
- отдаёт статусы заказов;
- работает как первая линия поддержки;
- использует AI/RAG для ответов по базе знаний.
Если у вас уже есть такой бот, разумный минимум - технический аудит перед 19 июля и мониторинг в первые дни после миграции.
Когда стоит перепроектировать бота, а не только мигрировать API
Простой search-and-replace домена подходит только маленьким ботам без интеграций. Если бот связан с CRM, оплатами, заказами или персональными данными, лучше сразу проверить архитектуру.
Красные флаги:
- нет единого API-клиента MAX;
- токен хранится в коде;
- webhook пишет напрямую в CRM без очереди;
- нет идемпотентности;
- нет retry/backoff;
- нет DLQ;
- ошибки видны только в консоли;
- невозможно быстро понять, сколько событий потеряно;
- нет тестового контура.
В таких случаях миграция на platform-api2.max.ru - хороший повод привести бота к production-уровню. Для этого обычно нужны API-клиент, очередь, мониторинг, логирование, таблица событий, контроль дублей и понятный runbook для поддержки.
Нужен отказоустойчивый смарт-бот?
Обсудите архитектуру, лимиты и сценарии с техническими специалистами NBM-IT.
Внутренняя перелинковка по теме
Если вы только планируете запуск, начните с гайда как создать бота в MAX: требования бизнеса, безопасность и архитектура.
Если бот должен выдерживать нагрузку, полезен разбор лимитов API MAX и архитектуры highload-ботов.
Если нужно выбрать бизнес-сценарий, посмотрите типовые сценарии MAX-ботов: лидогенерация, поддержка и запись.
Если нужен аудит или разработка production-бота под продажи, поддержку и CRM, профильная услуга здесь: разработка MAX-ботов.
FAQ
Что нужно сделать до 19 июля 2026?
Перевести запросы MAX API на platform-api2.max.ru, передавать токен через Authorization, проверить TLS/сертификаты Webhook-endpoint и убрать зависимость от GET /chats.
Можно ли оставить Long Polling? Для разработки и тестов - да. Для production MAX рекомендует Webhook, потому что Long Polling ограничен по скорости и сроку хранения событий.
Почему MAX-бот может перестать отвечать?
Чаще всего из-за старого домена API, неправильной авторизации, проблем с TLS у webhook, неподдерживаемого GET /chats или отсутствия обработки повторных событий.
Нужно ли менять бизнес-логику бота? Не всегда. Но если бот пишет в CRM, принимает заявки или работает с заказами, миграцию лучше совместить с проверкой очередей, ретраев, идемпотентности и мониторинга.
Как понять, что миграция прошла успешно?
Проведите тест: пользователь пишет боту, webhook получает событие, сервер проверяет secret, worker обрабатывает задачу, бот отвечает через platform-api2.max.ru, а CRM получает тестовую запись без ошибок.
