Skip to main content
POST /v1/agents/{agent_id}/chat/stream принимает ровно тот же запрос, что и синхронный эндпоинт чата: то же тело, те же заголовки Authorization и Idempotency-Key, тот же доступ full, те же правила диалогов, биллинг и коды ошибок. Отличается только транспорт: ответ приходит как text/event-stream.

События

У каждого события есть имя и одна строка data с JSON.
Текст рассуждений и активность инструментов никогда не попадают в стрим. response.completed всегда несёт полный итоговый текст, поэтому клиент, пропустивший часть дельт, может восстановить ответ из него, а не из склеенных дельт.

Ошибки в стриме

Сбои до установления стрима (неверный ключ, валидация, idempotency_conflict, conversation_busy, отключённый агент, лимит запросов) — это обычные JSON-конверты ошибок со своим HTTP-статусом; проверяйте response.ok, прежде чем читать события. После отправки заголовков статус уже 200. Сбой после этого момента (например, insufficient_balance или internal_error) приходит как событие error с теми же полями, что и в конверте, и закрывает стрим.

Обрывы соединения и повторы

Клиент, разорвавший соединение, не останавливает ответ: он всё равно генерируется и сохраняется, а запись идемпотентности завершается. Повтор с тем же Idempotency-Key стримит response.created, а сразу за ним response.completed с сохранённым результатом; дельты не воспроизводятся. См. Идемпотентность.

Примеры

Используйте curl -N (без буферизации), чтобы видеть события по мере поступления. В браузерах EventSource не умеет отправлять тела POST и собственные заголовки, а ключ в любом случае не должен попадать в браузер; стримьте со своего сервера и передавайте текст клиенту.