Create an OpenAI-compatible provider pointed at the gateway, then use it as your
model with generateText / streamText.
Install
npm install orbitrage@latest ai @ai-sdk/openai
Generate text
Pass your end-user id via the provider’s headers. Use provider.chat(...) so
calls go to the /chat/completions endpoint Orbitrage routes.
import { orbitrage } from "orbitrage";
await orbitrage.init({ apiKey: process.env.ORBITRAGE_API_KEY, userId: "customer_42" });
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";
const provider = createOpenAI({
baseURL: "https://api.orbitrage.ai/v1",
apiKey: process.env.ORBITRAGE_API_KEY,
headers: { "x-orbitrage-end-user-id": "customer_42" },
});
const { text } = await generateText({
model: provider.chat("claude-sonnet-4-6"), // direct model — or "grok-4-fast"; "auto" to route
prompt: "Explain routing in one line.",
maxOutputTokens: 512,
});
console.log(text);
Stream text
import { streamText } from "ai";
const result = streamText({
model: provider.chat("grok-4-fast"),
prompt: "Count from 1 to 5.",
maxOutputTokens: 64,
});
for await (const delta of result.textStream) process.stdout.write(delta);
Tool calling works exactly as the AI SDK documents — Orbitrage doesn’t change the
API. For hosted managed tools, call the gateway
directly or via the raw OpenAI client.
Pin a direct model (claude-sonnet-4-6, grok-4-fast) for predictable
behavior; switch the string to "auto" to let Orbitrage route.