Диалоги
Для выпуска токена канала нужен ключ с правом на диалоги и полным доступом. Без этого права POST /admin/dialogs/provider_tokens.json возвращает 403. Опубликованному приложению это право в кабинете партнёра не выдаётся, поэтому запрос также возвращает 403.
После получения токена провайдер работает через Provider API на messengers.insales.ru.
Токен провайдера диалогов
Чтобы выпустить токен, используйте POST /admin/dialogs/provider_tokens.json. Передайте поле messenger_type на верхнем уровне JSON. Если вложить его в provider_token, поле будет проигнорировано, а ответ совпадёт с ответом на пустой запрос. Чтение через GET не поддерживается и возвращает 404.
Параметр messenger_type принимает sms, telegram, viber, email или vk. Значение sms относится к каналу «Диалогов»; метод не выпускает код входа покупателя на витрину.
При успехе API возвращает 200 и пару токенов, каждый из 128 шестнадцатеричных символов. Повторный запрос для того же messenger_type выпускает новую пару. Прежние токены больше не подходят для работы с Provider API.
Ошибки этого метода также возвращаются с HTTP-статусом 200. Проверяйте наличие поля error в теле ответа.
При удалении пароля приложения его токены также удаляются. Запрос к Provider API с прежним api_token после этого возвращает 401.
| Параметр | Описание |
|---|---|
messenger_type обязательныйстрока |
sms, telegram, viber, email или vk. |
POST /admin/dialogs/provider_tokens.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"messenger_type": "telegram"
}
Ответ · 200
{
"api_token": "…128 шестнадцатеричных символов…",
"webhook_token": "…128 шестнадцатеричных символов…"
}
Пустой messenger_type и тело без этого поля отвечают 200:
{
"error": "Please, specify messenger_type to issue a token"
}
Provider API
Отправляйте запросы на https://messengers.insales.ru. В заголовке Authorization передавайте значение api_token без префиксов Basic или Bearer. Для чужого токена API возвращает 401 и {"error":"Not authorized"}.
Пока магазин не переключил канал на этого провайдера, поле active равно false. Переключить канал через Provider API нельзя.
GET /api/messengers/provider/v1/settings
Host: messengers.insales.ru
Authorization: API_TOKEN
Accept: application/json
Ответ · 200
{
"send_message_url": null,
"settings_url": null,
"active": false
}
POST тех же настроек отвечает 201.
| Параметр | Описание |
|---|---|
send_message_url необязательныйстрока |
Адрес, на который магазин шлёт исходящее сообщение. |
settings_url необязательныйстрока |
Адрес, на который магазин шлёт gateway_token. |
POST /api/messengers/provider/v1/settings
Host: messengers.insales.ru
Authorization: API_TOKEN
Accept: application/json
Content-Type: application/json
{
"send_message_url": "https://example.com/insales-dialogs",
"settings_url": "https://example.com/insales-dialogs-settings"
}
Ответ · 201
{
"send_message_url": "https://example.com/insales-dialogs",
"settings_url": "https://example.com/insales-dialogs-settings",
"active": false
}
Для отправки сообщения InSales вызывает send_message_url POST-запросом с заголовками Authorization: webhook_token и Content-Type: application/json. Текстовое сообщение имеет следующий вид:
{
"to": "chat-id",
"internal_id": 100,
"account_id": 233686,
"body": "текст",
"type": "text"
}
Если сообщение содержит файл, вместо body и type: text передаются type: file и files: [{url, name}].
Сервис должен вернуть 200 и JSON с status и external_id. Допустимы статусы scheduled, wait_for_capture, complete и error. Другой HTTP-статус или неизвестный status считаются ошибкой. Повторной отправки вебхука нет.
При изменении токена шлюза магазина InSales отправляет на settings_url запрос с телом {"gateway_token":"…","account_id":233686} и тем же заголовком авторизации.
Чтобы передать входящее сообщение клиента в InSales, провайдер отправляет POST /api/messengers/provider/v1/messages. Если active равен false, API возвращает 422.
| Параметр | Описание |
|---|---|
from обязательныйстрока |
Идентификатор отправителя в канале: телефон, email или другой id. |
external_id обязательныйстрока |
Идентификатор сообщения у провайдера. |
time обязательныйстрока |
Время сообщения. |
body необязательныйстрока |
Текст. Нужен body, files или meta_type. |
POST /api/messengers/provider/v1/messages
Host: messengers.insales.ru
Authorization: API_TOKEN
Accept: application/json
Content-Type: application/json
{
"from": "+79990000000",
"external_id": "docs-1",
"time": "2026-10-21T22:22:00+03:00",
"body": "Здравствуйте"
}
Ответ · 422
{
"errors": [
"Provider was deactivated by user. You can't send messages to user while it's deactivated"
]
}
POST /api/messengers/provider/v1/message_status принимает external_id и status: scheduled, complete, wait_for_capture, error. Неизвестное сообщение отвечает 404, тело {}.