One API for 200+ AI models

Stop juggling API keys and provider dashboards. Route requests across OpenAI, Anthropic, Google Gemini, Mistral and DeepSeek, track costs in real time, and switch models without changing your code.

Integration

Drop-in compatible.
Zero learning curve.

Already using an OpenAI SDK? Point it at api.openvertexrouter.com and you're done. Works with any language or framework.

  • Works with the OpenAI SDK in any language, with no new dependencies
  • Change one line: the base URL
  • Every request metered: cost, latency, and token usage
terminalbash
curl https://api.openvertexrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $OVR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{ "role": "user", "content": "Hello" }]
  }'
client.tstypescript
import OpenAI from "openai";

const client = new OpenAI({
  // the only change
  baseURL: "https://api.openvertexrouter.com/v1",
  apiKey: process.env.OVR_API_KEY,
});

const completion = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{ role: "user", content: "Hello" }],
});
route.tstypescript
// app/api/chat/route.ts
import OpenAI from "openai";

const client = new OpenAI({
  // the only change
  baseURL: "https://api.openvertexrouter.com/v1",
  apiKey: process.env.OVR_API_KEY,
});

export async function POST(req: Request) {
  const { messages } = await req.json();
  const completion = await client.chat.completions.create({
    model: "anthropic/claude-sonnet-5",
    messages,
  });
  return Response.json(completion.choices[0].message);
}
client.pypython
import os
from openai import OpenAI

client = OpenAI(
    # the only change
    base_url="https://api.openvertexrouter.com/v1",
    api_key=os.environ["OVR_API_KEY"],
)

completion = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Hello"}],
)
Client.javajava
OpenAIClient client = OpenAIOkHttpClient.builder()
    // the only change
    .baseUrl("https://api.openvertexrouter.com/v1")
    .apiKey(System.getenv("OVR_API_KEY"))
    .build();

ChatCompletion completion = client.chat().completions().create(
    ChatCompletionCreateParams.builder()
        .model("anthropic/claude-sonnet-5")
        .addUserMessage("Hello")
        .build());
client.gogo
client := openai.NewClient(
    // the only change
    option.WithBaseURL("https://api.openvertexrouter.com/v1"),
    option.WithAPIKey(os.Getenv("OVR_API_KEY")),
)

completion, err := client.Chat.Completions.New(ctx,
    openai.ChatCompletionNewParams{
        Model: "anthropic/claude-sonnet-5",
        Messages: []openai.ChatCompletionMessageParamUnion{
            openai.UserMessage("Hello"),
        },
    })
client.phpphp
$client = OpenAI::factory()
    // the only change
    ->withBaseUri('https://api.openvertexrouter.com/v1')
    ->withApiKey(getenv('OVR_API_KEY'))
    ->make();

$completion = $client->chat()->create([
    'model' => 'anthropic/claude-sonnet-5',
    'messages' => [['role' => 'user', 'content' => 'Hello']],
]);
client.rbruby
client = OpenAI::Client.new(
  # the only change
  uri_base: "https://api.openvertexrouter.com/v1",
  access_token: ENV["OVR_API_KEY"]
)

completion = client.chat(parameters: {
  model: "anthropic/claude-sonnet-5",
  messages: [{ role: "user", content: "Hello" }]
})

How it works

Every request through your own instance

Each call runs on infrastructure allocated to your account alone, with isolated provider keys. No shared gateway, no noisy neighbours. Choose between a single instance sized to your workload (Business) and several instances running in parallel behind a load balancer (Enterprise).

Your team's appsUnified APIProvider routingBudget ControlKey FailoverModel routingObservabilityOVRAI GATEWAY

Why teams switch

10

providers, one endpoint

OpenAI, Anthropic, Google, Mistral, DeepSeek and more — behind one key.

200+

models

From ten providers. Switch models by changing a string.

30%

cost efficiency

Intelligent caching, routing strategies.

99.999%

uptime

Battle-tested infrastructure built for reliability, even at scale.

Platform capabilities

Everything you need to run LLMs in production

Eight capabilities that turn a pile of provider accounts into one gateway you can actually govern.

Unified API

Keep your existing OpenAI SDK code. Change the base URL and you're live.

Multi-provider access

OpenAI, Anthropic, Google, Mistral and DeepSeek through one integration. Switch models by changing a string.

Dedicated instances

Your own gateway instance, sized to your workload, with isolated provider keys.

Budget control

Prepaid balances with hard caps. Every request is pre-authorized before it leaves.

Limits & alerts

Per-key spend limits, with alerts at 80, 90 and 100% of budget.

Smart routing

Provider and model routing with built-in key failover, following the rules you set.

Usage analytics

Real-time spend and token metrics for every request your team sends.

Per-model, per-provider breakdown

Break down usage and spend by provider and model to spot expensive outliers quickly.

Pricing

Two plans, one pricing model

The same structure on both: a monthly subscription plus provider usage. Only the numbers change with your volume.

Enterprise

Custom pricing

Scaled deployment, negotiated terms, payment terms. For teams above $15,000/month.

  • Multiple instances behind a load balancer
  • Redundancy and version pinning
  • Net 15 / 30 payment terms, bank transfer accepted
  • Dedicated account manager
  • Contractual SLA available
Contact sales

*Monthly subscription varies with instance size.

See full pricing and plan comparison →

Newsletter

Follow what we ship

One email when something worth knowing changes: a new model, a pricing update, a new routing guide.

  • New models and providers as they land
  • Pricing and platform changes
  • Routing and cost guides from the blog

No spam. Unsubscribe anytime. Privacy Policy