⚡ New — Kimi K3 is live: bring your own Moonshot key →

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 providers1000s of modelsIndic & global INR billingresidency enforced~50ms added latency

Get a keyRead the docs

🇮🇳 KrutrimSarvamOpenAIGroq+46 moredata_policy: india_only/v1BharatRouteryour 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 reconcilesone 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 playgroundHow 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 averifiable, short-lived identity issued byEkam, Krutrim's agent-identity control plane — no static key sitting in an env var. And the default takeszero 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 agentWhy 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_onlysits 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

01
🇮🇳

India residency, on demand

Send data_policy: india_only and requests route only to India-resident endpoints — enforced per request, not promised in a policy doc.

02

Routing & failover

Optimize each call for price, latency or uptime; pin a provider when you must; automatic failover with circuit breakers when you don’t.

03
🧩

Collections

Shareable, versioned routing chains — publish, fork and import a tested fallback recipe into your routing in one call.

04
🔌

Bring your own endpoint

Plug your own OpenAI-compatible deployment in as a ₹0 fallback step, admitted only after an automated compliance test.

05
🔑

Bring your own keys

Save a Krutrim or OpenAI key once — encrypted, never shown again — and ride your own account and rates. Free during beta.

06
🎯

Use-case model selection: auto:*

Skip the model debate — send auto:code, auto:agent, auto:vision, auto:reasoning or auto:sovereign as the model id and the gateway picks the best live route for that use case, per request. Humans get the same via the measured picker at /compare.

07
📄

Documents: PDFs parsed in-memory

POST a PDF — KYC packet, GST invoice, contract — and get structured markdown back, page-by-page vision parsing on India-resident models by default. Nothing touches disk (DPDP-first).

08
🎙️

Audio: speech in & out

Transcribe (Parakeet) and synthesize (Kokoro) speech behind the same API — first-party, India-resident, INR-priced.

09
👥

Teams & workspaces

Invite teammates with roles, share one prepaid wallet, and group keys and usage by environment.

10
🤖

Agent-native, not agent-compatible

An MCP server, llms.txt, OpenAPI, a live-health catalog, and ephemeral scoped keys your agent mints itself.

11
🪪

Agent identity, not API keys

Agents authenticate with a verifiable, short-lived Ekam identity — central revocation, per-agent attribution, billed to the right org. Zero setup by default.

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 keyWatch the guides