# Streaming

> Eventos SSE, uso de tokens, cancelación y finalización de las respuestas.

URL: https://boelabs.com/docs/ai-gateway/streaming
Language: Español

Cada endpoint que acepta `"stream": true` devuelve **Eventos enviados por el servidor** (`Content-Type: text/event-stream`), cada uno de los cuales se representa en la forma de evento nativa de ese endpoint desde el mismo flujo canonical debajo:

| endpoint | Forma de fragmento/evento |
|---|---|
| Chat Completions | Objetos `chat.completion.chunk`, una línea `data:` cada uno |
| Responses | Tipos de eventos nativos Responses (`response.output_text.delta`, ...) |
| Messages | Eventos nativos de Anthropic (`message_start`, `content_block_delta`, ...) |
| Imágenes | Eventos de imagen parcial (recuento `partial_images`), luego la imagen final |
| Transcripciones de audio | Eventos de transcripción incremental, si el perfil del modelo declara soporte de streaming |

La streaming finaliza con `data: [DONE]` (chat/respuestas/imágenes) o el evento de terminal nativo del contrato (mensajes) y luego cierra la conexión.

## Uso en el fragmento final [#usage-in-the-final-chunk]

Para endpoints de chat, solicita `stream_options.include_usage: true` (o el equivalente Responses/Messages) para obtener un objeto de uso en el fragmento final; de lo contrario, los recuentos de tokens solo son visibles después del hecho a través de `GET /admin/logs`.

## Reasoning durante el streaming [#reasoning-while-streaming]

Cuando el contrato y el modelo lo respaldan, el reasoning visible llega incrementalmente como su propio campo delta (`delta.reasoning` en Chat Completions) junto con el delta de contenido normal, regido por la misma resolución `reasoning.summary` descrita en [Reasoning](https://boelabs.com/docs/ai-gateway/reasoning).

## Sincronización [#timing]

El gateway mide la latencia y el rendimiento **solo upstream** (el tiempo hasta el último fragmento upstream, no hasta que el cliente terminó de recibir la respuesta transmitida) específicamente para que no se culpe al modelo por una conexión lenta del cliente. Esto es lo que alimenta el [Routing](https://boelabs.com/docs/ai-gateway/routing) `latency-based`/`throughput-based` y el tiempo `firstOutputMs` del intento ganador (ver [Observabilidad](https://boelabs.com/docs/ai-gateway/observability)).

## No almacenable en cache [#not-cacheable]

Las solicitudes de streaming nunca son elegibles para la [Cache de respuestas](https://boelabs.com/docs/ai-gateway/caching): el caching solo se aplica a respuestas completas, sin streaming, sin herramientas y sin estado. Cada solicitud transmitida llega al proveedor en vivo.

## Cancelación [#cancellation]

Si el cliente se desconecta a mitad del streaming, el gateway libera la ranura en tránsito del deployment sin penalizarla; un streaming abandonado nunca cuenta para el recuento de fallas o el cooldown de ese deployment (consulta [Routing](https://boelabs.com/docs/ai-gateway/routing)).

## Próximos pasos [#next-steps]

- [Chat completions](https://boelabs.com/docs/ai-gateway/chat-completions), [Responses](https://boelabs.com/docs/ai-gateway/responses), [Messages](https://boelabs.com/docs/ai-gateway/messages), [Imágenes](https://boelabs.com/docs/ai-gateway/images): las formas de fragmentos específicos del contrato.
- [Routing](https://boelabs.com/docs/ai-gateway/routing): cómo el tiempo de streaming alimenta las decisiones de routing.

