createAgentUIStreamResponse
API Reference for the createAgentUIStreamResponse utility.
The createAgentUIStreamResponse function executes an Agent, runs its streaming output as a UI message stream, and returns an HTTP Response object whose body is the live, streaming UI message output. This is designed for API routes that deliver real-time agent results, such as chat endpoints or streaming tool-use operations.
Import
import { createAgentUIStreamResponse } from "ai"
Usage
Parameters
agent:
.stream({ prompt, ... }) and define the tools property.uiMessages:
convertDataPart:
abortSignal:
AbortSignal instance.timeout:
experimental_sandbox:
options:
CALL_OPTIONS.experimental_transform:
onStepEnd:
onStepFinish:
onStepEnd instead. This alias is only used as a fallback when onStepEnd is not provided.onUIMessageStepEnd:
messages, isContinuation, and the accumulated responseMessage for intermediate persistence....UIMessageStreamOptions:
headers:
status:
statusText:
consumeSseStream:
Returns
A Promise<Response> whose body is a streaming UI message output from the agent. Use this as the return value of API/server handlers in serverless, Next.js, Express, Hono, or edge runtime contexts.
Use onUIMessageStepEnd to persist the accumulated UI response after every agent step. The callback is awaited before the corresponding finish-step chunk continues. Use idempotent writes and protect model output, reasoning, tool inputs, and tool outputs as sensitive conversation data. The existing onStepEnd callback remains the low-level generation callback for usage, finish reasons, and raw step details.
Example: Next.js API Route Handler
How It Works
-
- UI Message Validation: Validates the incoming
uiMessagesarray according to the agent's specified tools and requirements.
- UI Message Validation: Validates the incoming
-
- Model Message Conversion: Converts validated UI messages into the internal model message format for the agent.
-
- Streaming Agent Output: Invokes the agent’s
.stream({ prompt, ... })to get a stream of chunks (steps/UI messages), passing through options such asexperimental_sandbox.
- Streaming Agent Output: Invokes the agent’s
-
- HTTP Response Creation: Wraps the output stream as a readable HTTP
Responseobject that streams UI message chunks to the client.
- HTTP Response Creation: Wraps the output stream as a readable HTTP
Notes
- Your agent must implement
.stream({ prompt, ... })and define atoolsproperty (even if it's just{}) to work with this function. - Server Only: This API should only be called in backend/server-side contexts (API routes, edge/serverless/server route handlers, etc.). Not for browser use.
- Pass
experimental_sandboxwhen your agent tools need an experimental sandbox environment during execution. - Additional options (
headers,status, UI stream options, transforms, etc.) are available for advanced scenarios. - This leverages ReadableStream so your platform/client must support HTTP streaming consumption.