🎬 New — watch the 2-minute guide videos →

India's AI inference gateway

One API.
Every model.
In India.

Indic and global models behind one API, with data-residency you can enforce per request, INR billing, and routing that optimizes for price, latency or uptime. Swap one line, keep your code — and it’s built for AI agents as much as for people.

50 providers 1000s of models Indic & global INR billing residency enforced

Get a key Read the docs

🇮🇳 Krutrim Sarvam OpenAI Groq +46 more data_policy: india_only /v1 BharatRouter your app

Sangam · ensemble routing

Don’t pick a model — ask a panel new

Ask once; a panel of models deliberate in parallel and a synthesizer reconciles one best answer. Open-weight, reproducible, and BYOK — run it on your own provider keys.

🧠

A panel deliberates

An open-weight panel — Qwen2.5 · Llama 3.1 · Qwen2.5-VL — answers in parallel; transparent and reproducible.

⚖️

One reconciled answer

A synthesizer resolves consensus and contradictions into a single best reply.

🇮🇳

India-resident, on request

Pin every stage to India with data_policy: india_only. Or run the panel anywhere, switch to a frontier panel with bharatrouter/sangam, or bring your own keys.

Try the Sangam playground How Sangam works

Agent identity · Ekam

Give your agents an identity, not a password new

An API key is a long-lived shared secret — fine for one person, wrong for a fleet of agents spun up and torn down all day. On BharatRouter an agent authenticates with a verifiable, short-lived identity issued by Ekam, Krutrim's agent-identity control plane — no static key sitting in an env var. And the default takes zero setup: create an agent and we provision the identity for you.

🪪

Short-lived, not a stored secret

A minutes-long token, minted per run and auto-expiring. Nothing durable to leak — one stolen secret isn't a standing breach.

🛑

Revoke once, everywhere

Kill the identity and every live token dies cluster-wide — not one API key at a time, by hand.

🧾

Attributed & billed to the right org

Spend, rate limits and budgets resolve to this agent acting for this org — not one shared key you can't tell apart.

Create an agent Why agents need identity

Three steps

From OpenAI SDK to India-routed in one line

1

Swap one line

Point your OpenAI base_url at BharatRouter and keep your SDK and code exactly as they are.

2

Route on your terms

Add data_policy or optimize and we pick the best healthy route, failing over automatically when one errors.

3

Pay in INR

Prepaid credits at per-token rates — ₹100 free to start, no card on file, no surprise bills.

One knob · optimize

Four ways to route

Set optimize once as a default or override it per request. Every mode reorders the same pool of healthy routes by what you care about — and data_policy: india_only sits on top as a hard filter, never a trade-off.

price

Cheapest that does the job

Lowest ₹/Mtok route first. The default — most calls don’t need anything fancier.

latency

Fastest to respond

Orders by observed latency, so interactive paths stay snappy; untried routes still get a turn.

uptime

Most reliable

Favours the lowest failure rate — sticks with whatever has been answering cleanly.

auto

Let us balance it

Reliability first, then latency and price trade off against each other. One knob, sensible defaults.

The full scoring and the auto formula are in the routing docs.

Drop-in replacement

It’s the OpenAI API, plus two extras

Point your base URL at BharatRouter and add data_policy and optimize. Same call from any stack.

# curl
curl https://api.bharatrouter.com/v1/chat/completions \
  -H "Authorization: Bearer br-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5-7b-instruct",
    "messages": [{"role":"user","content":"namaste"}],
    "data_policy": "india_only",
    "optimize": "price"
  }'
// Node — npm i openai
import OpenAI from "openai";
const client = new OpenAI({
  baseURL: "https://api.bharatrouter.com/v1",
  apiKey: "br-...",
});

const r = await client.chat.completions.create({
  model: "qwen2.5-7b-instruct",
  messages: [{ role: "user", content: "namaste" }],
  data_policy: "india_only", optimize: "price",  // extras
});

When a model goes dark, your traffic keeps moving

Disable a provider mid-stream and watch requests re-route to a healthy model — Krutrim, a global provider, or a self-hostable endpoint you control — in milliseconds. No code change, no downtime, no foreign kill-switch wired into your roadmap.

Try the live failover demo →

The whole gateway

Everything in one place

New here? The guides walk through each of these in under two minutes.

Live from the gateway

Indic & global, one catalog

Loading catalog…

Full catalog with pricing & health →

Bring your own keys

50 providers, one gateway

Save a provider key once and requests ride your own account and rates, with our routing and failover on top. fallback providers can ride our keys when yours hit limits; the rest route through your key only. Free during beta.

Loading providers…

All providers, with details → · How BYOK works →

We benchmarked it — and published everything

Open GLM matched frontier coding quality at about a third of the cost in our benchmark. Real numbers, reproducible on GitHub.

All posts →

Build on India’s AI gateway

One API for Indic and global models — with residency you can prove, INR pricing, and routing you control.

Get a key Watch the guides