ai
Version:
AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.
78 lines (68 loc) • 1.93 kB
text/mdx
title: pipeUIMessageStreamToResponse
description: Learn to use pipeUIMessageStreamToResponse helper function to pipe streaming data to a ServerResponse object.
# `pipeUIMessageStreamToResponse`
The `pipeUIMessageStreamToResponse` function pipes streaming data to a Node.js ServerResponse object (see [Streaming Data](/docs/ai-sdk-ui/streaming-data)).
## Import
<Snippet
text={`import { pipeUIMessageStreamToResponse } from "ai"`}
prompt={false}
/>
## Example
```tsx
pipeUIMessageStreamToResponse({
response: serverResponse,
status: 200,
statusText: 'OK',
headers: {
'Custom-Header': 'value',
},
stream: myUIMessageStream,
consumeSseStream: ({ stream }) => {
// Optional: consume the SSE stream independently
console.log('Consuming SSE stream:', stream);
},
});
```
## API Signature
### Parameters
<PropertiesTable
content={[
{
name: 'response',
type: 'ServerResponse',
description: 'The Node.js ServerResponse object to pipe the data to.',
},
{
name: 'stream',
type: 'ReadableStream<UIMessageChunk>',
description: 'The UI message stream to pipe to the response.',
},
{
name: 'status',
type: 'number',
isOptional: true,
description: 'The status code for the response.',
},
{
name: 'statusText',
type: 'string',
isOptional: true,
description: 'The status text for the response.',
},
{
name: 'headers',
type: 'Headers | Record<string, string>',
isOptional: true,
description: 'Additional headers for the response.',
},
{
name: 'consumeSseStream',
type: '({ stream }: { stream: ReadableStream<string> }) => PromiseLike<void> | void',
isOptional: true,
description:
'Optional function to consume the SSE stream independently. The stream is teed and this function receives a copy.',
},
]}
/>