> ## Documentation Index > Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt > Use this file to discover all available pages before exploring further. # TanStack AI > Using OpenRouter with TanStack AI ## TanStack AI You can use [TanStack AI](https://tanstack.com/ai) to integrate OpenRouter with your React, Solid, or Preact applications. The OpenRouter adapter provides access to 400+ AI models from various providers through a single unified API. To get started, install [@tanstack/ai-openrouter](https://www.npmjs.com/package/@tanstack/ai-openrouter): ```bash lines theme={null} npm install @tanstack/ai @tanstack/ai-openrouter ``` ### Basic Usage ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; const stream = chat({ adapter: openRouterText("openai/gpt-5.2"), messages: [{ role: "user", content: "Hello!" }], }); ``` ### Configuration You can configure the OpenRouter adapter with additional options: ```typescript title="TypeScript" lines theme={null} import { createOpenRouter, type OpenRouterConfig } from "@tanstack/ai-openrouter"; const config: OpenRouterConfig = { apiKey: process.env.OPENROUTER_API_KEY!, baseURL: "https://openrouter.ai/api/v1", // Optional httpReferer: "https://your-app.com", // Optional, for rankings xTitle: "Your App Name", // Optional, for rankings }; const adapter = createOpenRouter(config.apiKey, config); ``` ### Available Models OpenRouter provides access to 400+ models from various providers. Models use the format `provider/model-name`: ```typescript lines theme={null} model: "openai/gpt-5.2" model: "anthropic/claude-sonnet-4.5" model: "google/gemini-3.1-pro-preview" model: "z-ai/glm-4.7" model: "minimax/minimax-m2.1" ``` See the full list at [openrouter.ai/models](https://openrouter.ai/models). ### Server-Side Example ```typescript title="TypeScript" lines theme={null} import { chat, toServerSentEventsResponse } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; export async function POST(request: Request) { const { messages } = await request.json(); const stream = chat({ adapter: openRouterText("openai/gpt-5.2"), messages, }); return toServerSentEventsResponse(stream); } ``` ### Using Tools ```typescript title="TypeScript" expandable lines theme={null} import { chat, toolDefinition } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; import { z } from "zod"; const getWeatherDef = toolDefinition({ name: "get_weather", description: "Get the current weather", inputSchema: z.object({ location: z.string(), }), }); const getWeather = getWeatherDef.server(async ({ location }) => { return { temperature: 72, conditions: "sunny" }; }); const messages = [{ role: "user", content: "What's the weather in NYC?" }]; const stream = chat({ adapter: openRouterText("openai/gpt-5.2"), messages, tools: [getWeather], }); ``` ### Environment Variables Set your API key in environment variables: ```bash lines theme={null} OPENROUTER_API_KEY=sk-or-... ``` ### Model Routing and Provider Preferences TanStack AI supports OpenRouter's powerful routing features through the `modelOptions` parameter. You can configure model fallbacks, provider sorting, and data policies. #### Model Fallbacks Specify backup models to try if the primary model is unavailable: ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; const stream = chat({ adapter: openRouterText("openai/gpt-5.2"), messages: [{ role: "user", content: "Hello!" }], modelOptions: { models: ["anthropic/claude-sonnet-4.5", "google/gemini-3.1-pro-preview"], route: "fallback", }, }); ``` #### Provider Sorting Sort providers by price, throughput, or latency instead of using the default load balancing: ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; // Prioritize fastest providers const stream = chat({ adapter: openRouterText("openai/gpt-5.2"), messages: [{ role: "user", content: "Hello!" }], modelOptions: { provider: { sort: "throughput", }, }, }); ``` #### Provider Ordering Specify an explicit order of providers to try: ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; const stream = chat({ adapter: openRouterText("anthropic/claude-sonnet-4.5"), messages: [{ role: "user", content: "Hello!" }], modelOptions: { provider: { order: ["anthropic", "amazon-bedrock", "google-vertex"], allow_fallbacks: true, }, }, }); ``` #### Data Privacy Controls Control data collection and use Zero Data Retention (ZDR) providers: ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; const stream = chat({ adapter: openRouterText("openai/gpt-5.2"), messages: [{ role: "user", content: "Hello!" }], modelOptions: { provider: { data_collection: "deny", zdr: true, }, }, }); ``` #### Filtering Providers Include or exclude specific providers: ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; const stream = chat({ adapter: openRouterText("meta-llama/llama-3.3-70b-instruct"), messages: [{ role: "user", content: "Hello!" }], modelOptions: { provider: { only: ["together", "fireworks"], ignore: ["azure"], quantizations: ["fp16", "bf16"], }, }, }); ``` #### Cost Controls Set maximum price limits for requests: ```typescript title="TypeScript" lines theme={null} import { chat } from "@tanstack/ai"; import { openRouterText } from "@tanstack/ai-openrouter"; const stream = chat({ adapter: openRouterText("z-ai/glm-4.7"), messages: [{ role: "user", content: "Hello!" }], modelOptions: { provider: { max_price: { prompt: 0.5, completion: 2, }, }, }, }); ``` For more advanced routing options like performance thresholds and partition-based sorting, see the [Provider Routing documentation](/docs/guides/routing/provider-selection). ### Resources For more information and detailed documentation, check out these resources: * [TanStack AI Documentation](https://tanstack.com/ai/latest/docs/getting-started/overview) - Learn the basics of TanStack AI * [OpenRouter Adapter Docs](https://tanstack.com/ai/latest/docs/adapters/openrouter) - Official TanStack AI OpenRouter adapter documentation * [OpenRouter Models](https://openrouter.ai/models) - Browse available models