Тот же консультант, что работает в кабинете, доступен из вашего приложения. Вы создаёте сессию, отправляете сообщение и получаете ответ ассистента посимвольно через открытый поток.
Нужен scope tools:chat. Базовый URL: https://developers.grem.capital/api/v1.
Как это работает
- Создайте сессию - она хранит контекст диалога.
- Откройте поток событий для этой сессии.
- Отправьте сообщение.
- Ответ прилетает в поток частями, пока не завершится.
Порядок важен: поток лучше открыть до отправки сообщения, иначе первые части ответа пройдут мимо.
Сессии
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.
Связанные статьи
- TypeScript SDK - готовый клиент с подпиской на поток.
- Ошибки - что означают коды отказов.
- Инструменты через API - остальные инструменты платформы.