Skip to main content

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.

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

Пример

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);
  }
}

События

В порядке появления:
  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 — конец стрима

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

Cloudflare у нас настроен на bypass cache + disable rocket-loader для пути /v1/*, так что SSE передаётся bit-exact, без буферизации.
Старые версии HTTP-клиентов (особенно requests без stream=True) могут ждать конца ответа полностью. Используйте stream=True или fetch streams.

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

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

Streaming + tools

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