Справочник · Чат
Диалоги и сообщения
Диалоги с клиентами из чата на сайте, мессенджеров и почты - те же, что в инбоксе личного кабинета. Через API можно читать диалоги и сообщения, отвечать клиенту и закрывать диалог. Диалог принадлежит проекту: ключ видит диалоги только своих проектов.
Объект диалога
Диалог с клиентом в одном канале: чат на сайте, мессенджер или почта.
objectстрокаобязателенТип объекта, всегда conversation.
Значения: conversation
iduuidобязателенid диалога.
project_iduuidобязателенid проекта диалога.
channelстрокаобязателенКанал: web - чат на сайте, telegram, vk, max, email, image - комментарии в соцсетях: читать и закрывать можно, отвечать через API нельзя. Список значений может пополняться.
statusстрокаобязателенopen - открыт, snoozed - отложен, closed - закрыт, spam - помечен как спам.
Значения: opensnoozedclosedspam
closed_reasonстрокаобязателенможет быть nullПочему закрыт: resolved - закрыт как решённый, abandoned - клиент пропал, duplicate - дубль, spam - спам, wrong_channel - не по адресу. У незакрытого или без причины - null. resolved не значит, что клиент подтвердил решение: так закрывается и диалог, который ИИ-ассистент закрыл прощанием, когда клиент не ответил на его вопрос, и диалог в чате на сайте, когда посетитель сам начал новый, а при закрытии сотрудником или через API это причина по умолчанию.
Значения: resolvedabandonedduplicatespamwrong_channel
closed_atдата и время с зонойобязателенможет быть nullКогда диалог закрыли, UTC. У незакрытого - null.
customer_nameстрокаобязателенможет быть nullКак клиент подписан в канале: имя в мессенджере, email или телефон.
message_countцелое числообязателенСколько сообщений в диалоге.
first_message_atдата и время с зонойобязателенможет быть nullВремя первого сообщения, UTC.
last_message_atдата и время с зонойобязателенможет быть nullВремя последнего сообщения, UTC.
created_atдата и время с зонойобязателенможет быть nullКогда диалог создан, UTC.
updated_atдата и время с зонойобязателенможет быть nullКогда диалог последний раз менялся, UTC.
{
"object": "conversation",
"id": "01a0d7f0-e4f2-7b3c-9d5e-6f7a8b9c0d1e",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"channel": "telegram",
"status": "open",
"closed_reason": null,
"closed_at": null,
"customer_name": "Анна",
"message_count": 4,
"first_message_at": "2026-09-25T09:30:02Z",
"last_message_at": "2026-09-25T09:41:12Z",
"created_at": "2026-09-25T09:30:02Z",
"updated_at": "2026-09-25T09:41:12Z"
}/v1/conversationsСписок диалогов
conversations:readДиалоги проектов ключа, от новых к старым, по страницам. Фильтры можно сочетать.
Параметры запроса
limitцелое числоможет быть nullСколько объектов на странице, от 1 до 100.
По умолчанию: 20
starting_afteruuidможет быть nullid последнего объекта предыдущей страницы: страница начнётся после него. См. Пагинация.
project_iduuidможет быть nullТолько объекты этого проекта. Проекта нет в ключе - ошибка 403.
statusстрокаможет быть nullТолько диалоги в этих статусах, через запятую. Значения - как у поля status диалога.
channelстрокаможет быть nullТолько диалоги этих каналов, через запятую. Значения - как у поля channel диалога.
created[gte]дата и время с зонойможет быть nullДиалоги, созданные не раньше этого времени. Время с часовым поясом (RFC 3339).
created[lte]дата и время с зонойможет быть nullДиалоги, созданные не позже этого времени. Время с часовым поясом (RFC 3339).
Ответы
200Страница списка диалогов.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/conversations \
-H "Authorization: Bearer dk_live_…"200{
"object": "list",
"data": [
{
"object": "conversation",
"id": "01a0d7f0-e4f2-7b3c-9d5e-6f7a8b9c0d1e",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"channel": "telegram",
"status": "open",
"closed_reason": null,
"closed_at": null,
"customer_name": "Анна",
"message_count": 4,
"first_message_at": "2026-09-25T09:30:02Z",
"last_message_at": "2026-09-25T09:41:12Z",
"created_at": "2026-09-25T09:30:02Z",
"updated_at": "2026-09-25T09:41:12Z"
}
],
"has_more": true
}/v1/conversations/{conversation}Получить диалог
conversations:readДиалог по id. Диалог из проекта, которого нет в ключе, для ключа не существует - ответ 404.
Параметры пути
conversationuuidобязателенid диалога.
Ответы
200Диалог.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/conversations/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90 \
-H "Authorization: Bearer dk_live_…"200{
"object": "conversation",
"id": "01a0d7f0-e4f2-7b3c-9d5e-6f7a8b9c0d1e",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"channel": "telegram",
"status": "open",
"closed_reason": null,
"closed_at": null,
"customer_name": "Анна",
"message_count": 4,
"first_message_at": "2026-09-25T09:30:02Z",
"last_message_at": "2026-09-25T09:41:12Z",
"created_at": "2026-09-25T09:30:02Z",
"updated_at": "2026-09-25T09:41:12Z"
}/v1/conversations/{conversation}/closeЗакрыть диалог
conversations:write Idempotency-Key поддерживаетсяЗакрывает диалог так же, как кнопка «Закрыть» у сотрудника в инбоксе личного кабинета. Повторное закрытие уже закрытого диалога - не ошибка: ответ 200 с тем же диалогом, причина не меняется.
Параметры пути
conversationuuidобязателенid диалога.
Параметры тела
reasonстрокаможет быть nullПричина закрытия - как у поля closed_reason диалога.
Значения: resolvedabandonedduplicatespamwrong_channel
По умолчанию: "resolved"
Ответы
200Закрытый диалог.400Idempotency-Key в неверном формате (idempotency-key-invalid).401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).409Idempotency-Key уже использован с другим запросом (idempotency-conflict) или первый запрос с ним ещё выполняется (idempotency-in-progress).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/conversations/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90/close \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20195208" \
-d '{
"reason": "resolved"
}'200{
"object": "conversation",
"id": "01a0d7f0-e4f2-7b3c-9d5e-6f7a8b9c0d1e",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"channel": "telegram",
"status": "open",
"closed_reason": null,
"closed_at": null,
"customer_name": "Анна",
"message_count": 4,
"first_message_at": "2026-09-25T09:30:02Z",
"last_message_at": "2026-09-25T09:41:12Z",
"created_at": "2026-09-25T09:30:02Z",
"updated_at": "2026-09-25T09:41:12Z"
}/v1/conversations/{conversation}/messagesСписок сообщений
conversations:readСообщения диалога от новых к старым, по страницам. Только переписка с клиентом, без внутренних заметок команды.
Параметры пути
conversationuuidобязателенid диалога.
Параметры запроса
limitцелое числоможет быть nullСколько объектов на странице, от 1 до 100.
По умолчанию: 20
starting_afteruuidможет быть nullid последнего объекта предыдущей страницы: страница начнётся после него. См. Пагинация.
project_iduuidможет быть nullНе влияет на список: сообщения берутся из диалога, id которого в пути.
Ответы
200Страница сообщений диалога.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/conversations/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90/messages \
-H "Authorization: Bearer dk_live_…"200{
"object": "list",
"data": [
{
"object": "message",
"id": "01a0d7f0-f5a3-7c4d-8e6f-7a8b9c0d1e2f",
"conversation_id": "01a0d7f0-e4f2-7b3c-9d5e-6f7a8b9c0d1e",
"direction": "outbound",
"author_type": "operator",
"source": "api",
"text": "Здравствуйте! Заказ 20195208 передан в доставку.",
"attachments": [],
"status": "delivered",
"failure": null,
"created_at": "2026-09-25T09:41:12Z"
}
],
"has_more": true
}/v1/conversations/{conversation}/messagesОтправить сообщение
conversations:write Idempotency-Key обязателенОтправляет клиенту текст в канал диалога. Сообщение уходит как ответ сотрудника: в чате на сайте клиент увидит название ключа API как имя оператора, а ИИ-ассистент после такого ответа на время перестаёт отвечать в диалоге - так же, как после ответа сотрудника.
Только текст: вложения через API не отправляются, запрос с непустым полем attachments - ошибка 422. Длина - по каналу: Telegram и VK - до 4096 символов, MAX - до 4000, чат на сайте и почта - до 8000. Закрытый диалог API заново не открывает, а в канал image писать нельзя - в обоих случаях ошибка 409.
Если канал не принял сообщение, ответ всё равно 201: сообщение сохранено со статусом failed, причина - в failure.code. Повтор с тем же Idempotency-Key вернёт это же сообщение со статусом failed - чтобы отправить его ещё раз, передайте новый ключ.
Idempotency-Key обязателен: повтор запроса без него отправил бы клиенту сообщение второй раз. Повтор в тот же диалог с тем же ключом и тем же телом вернёт то же сообщение и не отправит его снова - и спустя сутки тоже. Ключ закреплён за диалогом: тот же ключ в запросе к другому диалогу в первые 24 часа - ошибка 409, а позже отправит новое сообщение. Для каждого сообщения берите свой ключ.
Параметры пути
conversationuuidобязателенid диалога.
Параметры тела
textстрокаобязателенТекст сообщения. Длина - по каналу диалога: Telegram и VK - до 4096 символов, MAX - до 4000, чат на сайте и почта - до 8000.
Ответы
201Сообщение сохранено и отправлено в канал - или не доставлено, тогда status = failed.400Нет заголовка Idempotency-Key (idempotency-key-required) или ключ в неверном формате (idempotency-key-invalid).401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).409Idempotency-Key уже использован с другим запросом (idempotency-conflict) или первый запрос с ним ещё выполняется (idempotency-in-progress). Диалог закрыт (conversation-closed), диалог в чате на сайте завершён (conversation-archived), в этот канал API не пишет (channel-not-supported) или канал отключён в личном кабинете (channel-disconnected).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/conversations/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90/messages \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20195208" \
-d '{
"text": "Здравствуйте! Заказ 20195208 передан в доставку."
}'201{
"object": "message",
"id": "01a0d7f0-f5a3-7c4d-8e6f-7a8b9c0d1e2f",
"conversation_id": "01a0d7f0-e4f2-7b3c-9d5e-6f7a8b9c0d1e",
"direction": "outbound",
"author_type": "operator",
"source": "api",
"text": "Здравствуйте! Заказ 20195208 передан в доставку.",
"attachments": [],
"status": "delivered",
"failure": null,
"created_at": "2026-09-25T09:41:12Z"
}