Text Streaming
getTextStream()
Stream text content as it’s generated:
Each iteration yields a small chunk of text (typically a few characters or a word).
Reasoning Streaming
getReasoningStream()
For models that support reasoning (like o1 or Claude with thinking), stream the
reasoning process:
Items Streaming
getItemsStream()
Stream complete items as they update. This is the recommended way to handle
streaming when you need structured access to all output types (messages, tool
calls, reasoning, etc.). See
Working with Items for the full
paradigm explanation.
Key insight: Each iteration yields a complete item with the same ID but
updated content. Replace items by ID rather than accumulating deltas.
This stream yields all item types:
Message Streaming (Deprecated)
getNewMessagesStream()
getNewMessagesStream() is deprecated. Use getItemsStream() instead, which
includes all item types and follows the items-based paradigm.
Stream cumulative message snapshots in the OpenResponses format:
This stream yields:
ResponsesOutputMessage - Assistant text/content updates
OpenResponsesFunctionCallOutput - Tool execution results (after tools
complete)
Full Event Streaming
getFullResponsesStream()
Stream all response events including tool preliminary results:
Event Types
The full stream includes these event types:
Stream structured tool calls as they complete:
Stream tool deltas and preliminary results:
Concurrent Consumers
Multiple consumers can read from the same result:
The underlying ReusableReadableStream ensures each consumer receives all events.
Cancellation
Cancel a stream to stop generation:
Streaming with UI Frameworks
React Example
Server-Sent Events (SSE)
Next Steps
- Working with Items - Understand
the items-based streaming paradigm
- Tools - Create tools and
multi-turn streaming with tools