SDKs and frameworks
Vercel AI SDK
Point @ai-sdk/openai's baseURL at TokRouter and streamText from Next.js.
npm install ai @ai-sdk/openaiimport { createOpenAI } from '@ai-sdk/openai'
import { generateText } from 'ai'
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
// app/api/chat/route.ts
import { createOpenAI } from '@ai-sdk/openai'
import { streamText } from 'ai'
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()
}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.