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

# Streaming

> Получайте ответ модели по мере генерации через SSE.

Стриминг работает по стандартному Anthropic SSE-протоколу. Полная совместимость
с Anthropic SDK — просто передайте `stream: true`.

## Пример

<CodeGroup>
  ```typescript TypeScript theme={null}
  const stream = client.messages.stream({
    model: "claude-sonnet-4.6",
    max_tokens: 1024,
    messages: [{ role: "user", content: "Напиши хокку про Rust" }],
  });

  for await (const event of stream) {
    if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
      process.stdout.write(event.delta.text);
    }
  }
  ```

  ```python Python theme={null}
  with client.messages.stream(
      model="claude-sonnet-4.6",
      max_tokens=1024,
      messages=[{"role": "user", "content": "Напиши хокку про Rust"}],
  ) as stream:
      for text in stream.text_stream:
          print(text, end="", flush=True)
  ```

  ```bash cURL theme={null}
  curl https://api.east-api-3.org/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "content-type: application/json" \
    -N \
    -d '{
      "model": "claude-sonnet-4.6",
      "max_tokens": 256,
      "stream": true,
      "messages": [{"role": "user", "content": "Хокку про Rust"}]
    }'
  ```
</CodeGroup>

## События

В порядке появления:

1. `message_start` — `{ id, model, role, usage: { input_tokens: N } }`
2. `content_block_start` — открытие блока (`text` / `tool_use` / `thinking`)
3. `content_block_delta` — пошагово дописывает блок
4. `content_block_stop` — блок закрыт
5. `message_delta` — финальный `stop_reason` + `output_tokens`
6. `message_stop` — конец стрима

## Особенности на нашей стороне

<Note>
  Cloudflare у нас настроен на bypass cache + disable rocket-loader для пути
  `/v1/*`, так что SSE передаётся bit-exact, без буферизации.
</Note>

<Warning>
  Старые версии HTTP-клиентов (особенно `requests` без `stream=True`) могут
  ждать конца ответа полностью. Используйте `stream=True` или fetch streams.
</Warning>

## Закрытие стрима пораньше

Просто закройте соединение клиента. Сервер прекратит генерацию.
Спишется только то, что успели сгенерировать (`output_tokens` к моменту
закрытия).

## Streaming + tools

`tool_use`-блок придёт по тому же SSE — `content_block_start` с `type: "tool_use"`,
далее `input_json_delta`-фрагменты, потом `content_block_stop` с накопленным
`input`. После этого вы как обычно прокидываете `tool_result` в следующее
сообщение.
