tokrouterdocs
SDKs and frameworks

Vercel AI SDK

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

.mdOpen in Claude
npm install ai @ai-sdk/openai
import { 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.