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

# Стриминг

> Потоковая генерация текста в реальном времени через Server-Sent Events

Стримингов ответы токен за токеном через Server-Sent Events. Доступно только для текстовых / LLM-моделей.

## Запрос

```bash theme={null}
curl -X POST https://elumenta.ru/api/v2/generate/stream \
  -H "Authorization: Bearer nb_ВАШ_API_КЛЮЧ" \
  -H "Accept: text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "prompt": "Напиши короткий рассказ о роботе, который учится рисовать"
  }'
```

<CodeGroup>
  ```python Python theme={null}
  import requests, json

  response = requests.post(
      "https://elumenta.ru/api/v2/generate/stream",
      headers={
          "Authorization": "Bearer nb_ВАШ_API_КЛЮЧ",
          "Accept": "text/event-stream"
      },
      json={"model": "gpt-5", "prompt": "Расскажи историю"},
      stream=True
  )

  for line in response.iter_lines():
      if line:
          line = line.decode("utf-8")
          if line.startswith("data: ") and line != "data: [DONE]":
              chunk = json.loads(line[6:])
              if chunk.get("type") == "content_delta":
                  print(chunk["delta"], end="", flush=True)
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://elumenta.ru/api/v2/generate/stream", {
    method: "POST",
    headers: {
      "Authorization": "Bearer nb_ВАШ_API_КЛЮЧ",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({ model: "gpt-5", prompt: "Расскажи историю" })
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    const lines = decoder.decode(value).split("\n");
    for (const line of lines) {
      if (line.startsWith("data: ") && line !== "data: [DONE]") {
        const chunk = JSON.parse(line.slice(6));
        if (chunk.type === "content_delta") process.stdout.write(chunk.delta);
      }
    }
  }
  ```
</CodeGroup>

## Формат SSE-событий

```
data: {"type": "generation_start", "id": 18473, "model": "gpt-5"}

data: {"type": "content_delta", "delta": "Однажды"}

data: {"type": "content_delta", "delta": " в далёкой"}

data: {"type": "generation_end", "id": 18473, "tokens_spent": 3}

data: [DONE]
```

| Тип события        | Поля                 | Описание                   |
| ------------------ | -------------------- | -------------------------- |
| `generation_start` | `id`, `model`        | Генерация началась         |
| `content_delta`    | `delta`              | Фрагмент текста            |
| `generation_end`   | `id`, `tokens_spent` | Завершено, данные биллинга |
| `error`            | `message`            | Что-то пошло не так        |

<Note>
  Стриминг доступен только для текстовых / LLM-моделей. Изображения, видео и аудио не поддерживают стриминг.
</Note>
