# Vercel AI SDK

> Point @ai-sdk/openai's baseURL at TokRouter and streamText from Next.js.

```bash
npm install ai @ai-sdk/openai
```

```ts

const tokrouter = createOpenAI({
  apiKey: process.env.TOKROUTER_API_KEY!,
  baseURL: 'https://api.tokrouter.dev/v1',
  // Use Chat Completions (the path the gateway implements) rather than OpenAI's Responses API
  compatibility: 'compatible',
})

const { text } = await generateText({
  model: tokrouter('gpt-5.4-mini'),
  prompt: 'Explain streaming in one sentence',
})
```

## Streaming from a route handler

```ts
// app/api/chat/route.ts

const tokrouter = createOpenAI({
  apiKey: process.env.TOKROUTER_API_KEY!,
  baseURL: 'https://api.tokrouter.dev/v1',
  compatibility: 'compatible',
})

export async function POST(req: Request) {
  const { messages } = await req.json()
  const result = streamText({ model: tokrouter('claude-sonnet-5'), messages })
  return result.toTextStreamResponse()
}
```

<Callout type="warn" title="Server-side key only">
Route handlers run on the server, so the key never reaches the browser bundle. Never carry an API key
behind a `NEXT_PUBLIC_` prefix.
</Callout>
