OpenAI SDK
The OpenAI Node.js SDK works out of the box.Installation
Copy
Ask AI
npm install openai
Basic Usage
Copy
Ask AI
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.arouter.com/v1",
apiKey: "lr_live_xxxx",
});
const response = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);
Multi-Provider
Copy
Ask AI
// Anthropic via OpenAI SDK
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4-20250514",
messages: [{ role: "user", content: "Hello!" }],
});
// DeepSeek via OpenAI SDK
const response = await client.chat.completions.create({
model: "deepseek/deepseek-chat",
messages: [{ role: "user", content: "Hello!" }],
});
Streaming
Copy
Ask AI
const stream = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Write a poem." }],
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
Anthropic SDK
The Anthropic Node.js SDK works natively.Installation
Copy
Ask AI
npm install @anthropic-ai/sdk
Basic Usage
Copy
Ask AI
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://api.arouter.com",
apiKey: "lr_live_xxxx",
});
const message = await client.messages.create({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello!" }],
});
console.log(message.content[0].text);
Streaming
Copy
Ask AI
const stream = client.messages.stream({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [{ role: "user", content: "Tell me a story." }],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}
ARouter SDK
The first-party@arouter/sdk provides additional features like key management
and usage tracking.
Installation
Copy
Ask AI
npm install @arouter/sdk
Chat Completion
Copy
Ask AI
import { ARouter } from "@arouter/sdk";
const router = new ARouter({
apiKey: "lr_live_xxxx",
baseURL: "https://api.arouter.com",
});
const response = await router.chatCompletion({
model: "gpt-4o",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(response.choices[0].message.content);
Streaming
Copy
Ask AI
const stream = await router.chatCompletionStream({
model: "gpt-4o",
messages: [{ role: "user", content: "Write a haiku." }],
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
Key Management
Use a management key (lr_mgmt_) to create and manage API keys.
Copy
Ask AI
const mgmt = new ARouter({
apiKey: "lr_mgmt_xxxx",
baseURL: "https://api.arouter.com",
});
const key = await mgmt.createKey({
name: "backend-service",
allowed_providers: ["openai", "anthropic"],
limit: 150,
limit_reset: "monthly",
});
console.log("API Key:", key.key);
const keys = await mgmt.listKeys();
console.log("Keys:", keys.data);
await mgmt.updateKey(key.data.hash, { disabled: true });
await mgmt.deleteKey(key.data.hash);