

Для корректной работы ваших чат-ботов и мини-приложений направляйте запросы на домен `platform-api2.max.ru` вместо `platform-api.max.ru`. Также убедитесь, что добавили сертификат Минцифры в список доверенных

Отправляет сообщение в диалог, групповой чат или канал

Кроме текста сообщения или посты могут содержать следующие типы вложений:

- `image` — изображение (JPG, JPEG, PNG, GIF, TIFF, BMP, HEIC)

- `video` — видео (MP4, MOV, MKV, WEBM, MATROSKA)

- `audio` — аудио (MP3, WAV, M4A и другие)

- `file` — файл для загрузки в (TXT, DOC и другие)

- `sticker` — стикер

- `contact` — контакт (данные контакта из телефонного справочника)

- `inline_keyboard` — сообщение или пост с кнопкой

- `share` — контент, прикрепленный по внешнему URL

- `location` — локация

#### Ограничения

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

#### Пример запроса с одной кнопкой-ссылкой

Больше примеров запросов с кнопками — [в разделе «Клавиатура»](/docs-api#Как%20добавить%20кнопки)

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"
            }
          ]
        ]
      }
    }
  ]
 }'

## Авторизация

> Передача токена через query-параметры больше не поддерживается — используйте заголовок `Authorization: `

Токен для вызова HTTP-запросов присваивается при создании бота — его можно найти на [платформе](https://business.max.ru/self) в разделе **Чат-боты**. Выберите необходимого бота и нажмите **⋮** → **Настройки** → значок копирования справа от поля с токеном

Если вы верифицировали профиль и создали бота в [мини-приложении «MAX для бизнеса»](https://max.ru/business_bot?startapp), получить токен можно там же или в [боте «MAX для бизнеса»](https://max.ru/business_bot) с помощью команды **Получить токен**

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

## Параметры

Если вы хотите отправить сообщение пользователю, укажите ID этого пользователя
Если сообщение отправляется в чат или канал, укажите ID этого чата или канала. Как получить ID — в [разделе «Получение chat_id»](/docs-api#Получение%20chat_id)
Если `true`, сервер не будет генерировать превью для ссылок в тексте сообщения или поста

## Тело запроса

до `4000` символов
Вложения сообщения. Если поле пустое или равно `null`, изменений не произойдет. Если массив пуст, все вложения будут удалены

Данные для прикрепления изображения (все поля являются взаимоисключающими). Вместе с изображениями можно прикрепить видеофайлы (`type: video`) и одно вложение с кнопками (`type: inline_keyboard`). Общее количество вложений не должно превышать общее ограничение — 12. Подробнее — [в примерах](/docs-api#Примеры%20с%20видео,%20изображением,%20файлом)

от `1` символа

Любой внешний URL изображения, которое вы хотите прикрепить
Токен существующего вложения
Токены, полученные после загрузки изображений

Ссылка на сообщение в чате или пост в канале. Ссылки на комментарии к постам в каналах не поддержаны

Возможные значения в enum: `"forward"` `"reply"`

Тип связанного сообщения:
  - `"reply"` — ответ на сообщение или комментарий в чате или канале
- `"forward"` — пересланное сообщение в чате или канале

 **Для комментариев поддерживается только тип `reply`**
ID исходного сообщения

По умолчанию: `true`

Если `false`, участники чата не получат push-уведомления. Для каналов необходимо отправлять запрос с `notify = true` или без этого поля, т.к. каналы не подразумевают отправку постов без push-уведомлений
Возможные значения в enum: `"markdown"` `"html"`

Разметка текста сообщения. Подробнее — в разделе [Форматирование](/docs-api#Форматирование%20текста%20в%20сообщениях)

## Результат

Содержит общую информацию о сообщении в чате или посте в канале: данные об отправителе и получателе, время создания сообщения, содержимое (текст и вложения), контекст связи с другими сообщениями (ответ или пересылка), а также публичную ссылку и статистику для постов в каналах

Возвращается в ответ на вызовы методов группы [`/messages`](/docs-api/methods/GET/messages) и [`/chats/{chatId}/pin`](/docs-api/methods/PUT/chats/-chatId-/pin)

Отправитель сообщения: пользователь или бот

**Обратите внимание**:
- Все параметры в объекте относятся к отправителю сообщения
- Объект отсутствует, если сообщение отправлено в канал

Идентификатор пользователя или бота
Отображаемое имя пользователя или бота
Отображаемая фамилия пользователя. Для ботов это поле не возвращается
Никнейм бота или уникальное публичное имя пользователя. В случае с пользователем может быть `null`, если тот недоступен или имя не задано
`true`, если это бот
Время последней активности пользователя или бота в MAX (Unix timestamp в миллисекундах). Если пользователь отключил в настройках профиля мессенджера MAX возможность видеть, что он в сети онлайн, поле может не возвращаться
_Устаревшее поле, скоро будет удалено_

Получатель сообщения: пользователь или бот (для диалога), канал или чат

 **Обратите внимание**: все параметры в объекте относятся к получателю сообщения

ID чата или канала. Как получить ID — в [разделе «Получение chat_id»](/docs-api#Получение%20chat_id)
Возможные значения в enum: `"chat"` `"channel"` `"dialog"`

Тип чата:
 - `chat` — групповой чат
 - `channel` — канал или комментарий к посту (для вызовов методов группы `/comments`)
 - `dialog` — диалог
ID получателя сообщения в диалоге (пользователя или бота). Если сообщение отправлено в групповой чат или канал, то параметр отсутствует
Идентификатор поста в канале, к которому оставлен комментарий

Время создания сообщения в формате Unix timestamp в миллисекундах
Пересланное или ответное сообщение

Возможные значения в enum: `"forward"` `"reply"`

Тип связанного сообщения:
  - `"reply"` — ответ на сообщение в чате 
- `"forward"` — пересланное сообщение в чате
Пользователь или бот, отправивший сообщение

Идентификатор пользователя или бота
Отображаемое имя пользователя или бота
Отображаемая фамилия пользователя. Для ботов это поле не возвращается
Никнейм бота или уникальное публичное имя пользователя. В случае с пользователем может быть `null`, если тот недоступен или имя не задано
`true`, если это бот
Время последней активности пользователя или бота в MAX (Unix timestamp в миллисекундах). Если пользователь отключил в настройках профиля мессенджера MAX возможность видеть, что он в сети онлайн, поле может не возвращаться
_Устаревшее поле, скоро будет удалено_

Чат или канал, в котором сообщение было изначально опубликовано. Только для пересланных сообщений с `type = forward`. Как получить ID — в [разделе «Получение chat_id»](/docs-api#Получение%20chat_id)
Информация о сообщении

Уникальный ID сообщения
ID расположения сообщения в чате по порядку
Текст сообщения
Вложения сообщения. Могут быть одним из типов `attachment`, описанных в схеме ниже
Если поле пустое или равно `null`, изменений не произойдет. Если массив пуст, все вложения будут удалены

Данные, использованные для отправки изображения

Уникальный ID этого изображения
Токен вложения — уникальный ID загруженного медиа: изображения, аудио, видео или файла. Возвращается в ответ на вызов [POST /uploads](/docs-api/methods/POST/uploads)
URL изображения. Время жизни ссылки ограниченно. Срок истечения указан в параметре `expires` — если он истёк, ссылку необходимо запросить повторно. Доступно в веб-клиентe и на Android

Разметка текста сообщения. Подробнее — в разделе [Форматирование](/docs-api#Форматирование%20текста%20в%20сообщениях)

Тип элемента разметки. Может быть **жирный**,  *курсив*, ~зачеркнутый~, подчеркнутый, `моноширинный`, выделенный, цитата, заголовок, ссылка или упоминание пользователя

**Обратите внимание**: в тексте комментариев не поддерживаются гиперссылки и упоминание пользователей
Индекс начала элемента разметки в тексте. Нумерация с нуля
Длина элемента разметки в символах

Содержимое сообщения. Текст + вложения. Может быть `null`, если сообщение содержит только пересланное сообщение

Уникальный ID сообщения
ID расположения сообщения в чате по порядку
Текст сообщения
Вложения сообщения. Могут быть одним из типов `attachment`, описанных в схеме ниже
Если поле пустое или равно `null`, изменений не произойдет. Если массив пуст, все вложения будут удалены

Данные, использованные для отправки изображения

Уникальный ID этого изображения
Токен вложения — уникальный ID загруженного медиа: изображения, аудио, видео или файла. Возвращается в ответ на вызов [POST /uploads](/docs-api/methods/POST/uploads)
URL изображения. Время жизни ссылки ограниченно. Срок истечения указан в параметре `expires` — если он истёк, ссылку необходимо запросить повторно. Доступно в веб-клиентe и на Android

Разметка текста сообщения. Подробнее — в разделе [Форматирование](/docs-api#Форматирование%20текста%20в%20сообщениях)

Тип элемента разметки. Может быть **жирный**,  *курсив*, ~зачеркнутый~, подчеркнутый, `моноширинный`, выделенный, цитата, заголовок, ссылка или упоминание пользователя

**Обратите внимание**: в тексте комментариев не поддерживаются гиперссылки и упоминание пользователей
Индекс начала элемента разметки в тексте. Нумерация с нуля
Длина элемента разметки в символах

Статистика просмотров постов и репостов — возвращается только для каналов

Количество пользователей, которые увидели пост или репост в канале. Просмотр засчитывается, когда пост или репост попадает в область видимости экрана
Если это репост, то будет показано количество именно его просмотров

Публичная ссылка на пост в канале. Отсутствует для диалогов и групповых чатов

## Коды ответов

| Код | Описание |
| --- | --- |
| `200` | Информация о созданном сообщении или опубликованном посте |
| `401` | Ошибка авторизации. Токен `access_token` указан некорректно или недействителен |
| `500` | Внутренняя ошибка сервера |

