Docs

Чат-ассистент через API

Последнее обновление: 2026-09-072 мин чтения

Тот же консультант, что работает в кабинете, доступен из вашего приложения. Вы создаёте сессию, отправляете сообщение и получаете ответ ассистента посимвольно через открытый поток.

Нужен scope tools:chat. Базовый URL: https://developers.grem.capital/api/v1.

Как это работает

  1. Создайте сессию - она хранит контекст диалога.
  2. Откройте поток событий для этой сессии.
  3. Отправьте сообщение.
  4. Ответ прилетает в поток частями, пока не завершится.

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

Сессии

POST   /chat/sessions            создать
GET    /chat/sessions            перечень
PATCH  /chat/sessions/{id}       переименовать, закрепить
DELETE /chat/sessions/{id}       убрать в архив

Создание:

curl -X POST https://developers.grem.capital/api/v1/chat/sessions \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"Вопрос клиента об ипотеке"}'

В ответ приходит идентификатор сессии - его вы передаёте во все последующие вызовы.

Через API доступен режим общего консультанта. Режим автоответчика, который работает внутри CRM кабинета, снаружи не включается.

Отправить сообщение

curl -X POST https://developers.grem.capital/api/v1/chat/messages \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "…",
    "text": "Сколько стоит двухкомнатная на Подоле?",
    "clientMessageId": "msg-0001"
  }'

clientMessageId - ваш собственный идентификатор сообщения. Он нужен, чтобы связать отправленное с тем, что придёт в потоке, и не показать одно и то же дважды при повторном подключении.

Необязательное поле style задаёт длину ответа: short, normal или detailed.

Поток ответа

GET /chat/stream?sessionId=…
Authorization: Bearer gsk_live_...
Accept: text/event-stream

Соединение долгое, события приходят по мере генерации:

СобытиеЧто означает
assistant.startedассистент начал отвечать, дальше пойдут части текста
assistant.deltaочередная часть текста в поле delta
assistant.doneответ завершён, в поле text - полный текст

Если соединение оборвалось, подключитесь снова с тем же sessionId: сервер переиграет текущий ход с начала. Именно поэтому по assistant.started стоит очищать накопленный текст этого сообщения, иначе он задвоится.

История

GET /chat/history?sessionId=…&limit=50

Возвращает сохранённые сообщения сессии. Используйте её, чтобы восстановить диалог после перезагрузки вашего интерфейса.

Сколько это стоит

Списывается только отправка сообщения (POST /chat/messages). Создание сессии, перечень, история и сам поток бесплатны и не считаются вызовами API.

Связанные статьи

Эта статья была полезной?