MAX Bot API: Принимать сообщения через вебхук

Сценарий из mcp-everything. Актуально на 2026-10-24.

Бот на сервере: MAX присылает каждое событие на твой адрес — рекомендуемый способ для боевого режима.

  1. Подпишись: POST /subscriptions с url (только HTTPS на порту 443, порт в адресе не указывается), update_types (например, message_created и bot_started) и secret — строкой от 5 до 256 символов.
  2. Сертификат сервера должен быть от доверенного центра или Минцифры, с полной цепочкой. Самоподписанные не принимаются.
  3. В каждом запросе MAX передаёт заголовок X-Max-Bot-Api-Secret — сверяй его со своим secret и отбрасывай чужие запросы.
  4. Отвечай пользователю отдельным вызовом POST /messages с chat_id или user_id из события.
  5. Метод возвращает HTTP 200 и при неудаче — проверяй поле success в ответе.
curl -X POST https://platform-api2.max.ru/subscriptions \
  -H "Authorization: $MAX_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://example.ru/max/webhook", "update_types": ["message_created", "message_callback", "bot_started"], "secret": "s3cr3t_Random_42"}'

Базовые URL

Авторизация

Тип: API-ключ

Токен бота передаётся в заголовке Authorization: <access_token> (без префикса). Передача токена в query-параметре access_token больше не поддерживается.

curl -X GET "https://platform-api2.max.ru/me" \
  -H "Authorization: {access_token}"

Методы сценария

POST /messages — Отправка сообщения

Адресат задаётся user_id или chat_id. В ответе — объект message созданного сообщения или поста.

Параметр Где Тип Обяз. Описание
user_id query integer нет ID пользователя-получателя
chat_id query integer нет ID чата или канала
disable_link_preview query boolean нет Не генерировать превью ссылок
text body string нет Текст, до 4000 символов
attachments body array нет Вложения: файлы (payload.token из /uploads), inline_keyboard и др.
link body object нет Ссылка на сообщение в чате или пост в канале (ответ или пересылка)
notify body boolean нет Push-уведомления участникам, по умолчанию true
format body string нет Форматирование текста: markdown или html

Пример запроса:

curl -X POST "https://platform-api2.max.ru/messages?user_id={user_id}" \
  -H "Authorization: {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "Это сообщение с кнопкой-ссылкой",
  "attachments": [
    {
      "type": "inline_keyboard",
      "payload": {
        "buttons": [
          [
            {
              "type": "link",
              "text": "Откройте сайт",
              "url": "https://example.com"
            }
          ]
        ]
      }
    }
  ]
}'

POST /subscriptions — Подписка на Webhook

Ответ: success, message.

Также есть GET /subscriptions (список подписок) и DELETE /subscriptions (отписка).

Параметр Где Тип Обяз. Описание
url body string да HTTPS-адрес, только порт 443 (порт в URL не указывается)
update_types body array нет Типы событий, например ["message_created", "bot_started"]
secret body string нет 5–256 символов; приходит в заголовке X-Max-Bot-Api-Secret каждого вебхука

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://dev.max.ru/docs-api Вся интеграция одним документом: https://mcp-everything.ru/integrations/max-bot-api.md