> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kvantora.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Потоковый ответ

> SSE, завершение и разрыв соединения.

## Когда использовать поток

Только chat completions принимает `stream=true`. Текстовый стриминг должен быть включён в сервисе. Ответ имеет `Content-Type: text/event-stream`.

API отправляет текстовые delta или tool\_calls delta, затем finish\_reason, usage/billing и \[DONE]. OpenAI SDK читает этот поток. Ошибка после начала SSE приходит внутри потока, поскольку HTTP-статус уже отправлен.

## Пример JavaScript

Подготовьте клиент `OpenAI` и переменные окружения по [быстрому старту](/quickstart). Сохраните отдельный `REQUEST_ID` для этого запроса. Пример читает текстовые части; инструменты обрабатывайте отдельно по `tool_calls`.

```javascript theme={null}
const stream = await client.chat.completions.create({
  model: process.env.KVANTORA_MODEL_ID,
  messages: [{ role: 'user', content: 'Объясни, что такое API' }],
  max_tokens: 256,
  stream: true,
}, { headers: { 'Idempotency-Key': process.env.REQUEST_ID } });
for await (const chunk of stream) {
  const text = chunk.choices?.[0]?.delta?.content;
  if (text) process.stdout.write(text);
  if (chunk.usage) console.log('\nРасход токенов:', chunk.usage);
}
```

Сохраните `usage` и `billing` из финальных данных для учёта. Частичный текст ещё не подтверждает успешное завершение; при ошибке потока сохраните ID запроса и уже полученные события.

## Разрыв соединения

Закрытие вкладки или остановка показа не отменяют обработку и не освобождают резерв неизвестного исхода. Повтор с прежним Idempotency-Key и телом возвращает сохранённый результат либо состояние сверки. Не меняйте ID для «исправления» сетевой ошибки.

Responses и Messages в текущем поднаборе поддерживают только stream=false.
