Esc to close · ⌘K / Ctrl-K opens search anywhere
BharatRouter OpenAI wire format बोलता है, इसलिए आपको किसी ख़ास SDK की ज़रूरत नहीं — जो OpenAI-compatible client आप पहले से इस्तेमाल करते हैं उसे gateway पर लगाएँ और बाक़ी कुछ न बदलें। यह पेज आम stacks के लिए drop-in दिखाता है, और बताता है कि चार BharatRouterrouting extensions हर एक में कहाँ जाते हैं।
| Base URL | https://api.bharatrouter.com/v1 |
|---|---|
| Auth | Authorization: Bearer br-… — sign in करें और एक key बनाएँ |
| Extensions | optimize, provider, data_policy, upstream_key — request body में भेजे जाते हैं, router द्वारा consume होते हैं, और gateway छोड़ने से पहले हटा दिए जाते हैं |
per-SDK बस एक सवाल है — extensions कहाँ जाते हैं। हर OpenAI client के पास non-standard फ़ील्ड के लिए एक escape hatch है। इस पेज के अंत की table हर एक को सूचीबद्ध करती है।
extensions extra_body में जाते हैं।
from openai import OpenAI
client = OpenAI(base_url="https://api.bharatrouter.com/v1", api_key="br-...")
r = client.chat.completions.create(
model="gemma-4-e4b-it",
messages=[{"role": "user", "content": "namaste"}],
extra_body={"data_policy": "india_only", "optimize": "price"},
)
print(r.choices[0].message.content)
# किस route ने serve किया? .with_raw_response से x-br-provider header पढ़ें:
raw = client.chat.completions.with_raw_response.create(
model="gemma-4-e4b-it", messages=[{"role": "user", "content": "namaste"}],
)
print("served by:", raw.headers.get("x-br-provider"))JS SDK अनजान फ़ील्ड forward करता है, इसलिए extensions standard फ़ील्ड के साथ रह सकते हैं।
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.bharatrouter.com/v1",
apiKey: "br-...",
});
const r = await client.chat.completions.create({
model: "gemma-4-e4b-it",
messages: [{ role: "user", content: "namaste" }],
// BharatRouter extensions सीधे pass होते हैं:
data_policy: "india_only",
optimize: "latency",
} as any);
console.log(r.choices[0].message.content);custom baseURL के साथ OpenAI-compatible provider इस्तेमाल करें; extensionsproviderOptions (या extraBody) से भेजें।
import { createOpenAI } from "@ai-sdk/openai";
import { streamText } from "ai";
const bharat = createOpenAI({
baseURL: "https://api.bharatrouter.com/v1",
apiKey: process.env.BHARATROUTER_API_KEY,
});
const result = await streamText({
model: bharat("gemma-4-e4b-it"),
prompt: "Explain UPI in two lines",
providerOptions: { openai: { data_policy: "india_only", optimize: "price" } },
});
for await (const delta of result.textStream) process.stdout.write(delta);ChatOpenAI को gateway पर लगाएँ। extensions model_kwargs(Python) / modelKwargs (JS) में जाते हैं।
# Python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://api.bharatrouter.com/v1",
api_key="br-...",
model="gemma-4-e4b-it",
model_kwargs={"extra_body": {"data_policy": "india_only", "optimize": "price"}},
)
print(llm.invoke("namaste").content)// JavaScript
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "gemma-4-e4b-it",
apiKey: "br-...",
configuration: { baseURL: "https://api.bharatrouter.com/v1" },
modelKwargs: { data_policy: "india_only", optimize: "price" },
});
console.log((await llm.invoke("namaste")).content);gateway base URL के साथ OpenAI-like LLM इस्तेमाल करें।
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="gemma-4-e4b-it",
api_base="https://api.bharatrouter.com/v1",
api_key="br-...",
is_chat_model=True,
additional_kwargs={"data_policy": "india_only", "optimize": "price"},
)
print(llm.complete("namaste"))वही swap embeddings के लिए भी चलता है — किसी भी OpenAI embeddings client को gateway पर लगाएँ।
from openai import OpenAI
client = OpenAI(base_url="https://api.bharatrouter.com/v1", api_key="br-...")
e = client.embeddings.create(model="bge-m3", input=["namaste", "vanakkam"])
print(len(e.data[0].embedding))| SDK / framework | optimize / data_policy / … कैसे भेजें |
|---|---|
| OpenAI SDK (Python) | extra_body={...} |
| OpenAI SDK (Node) | request object पर top-level फ़ील्ड (ज़रूरत हो तो cast करें) |
| Vercel AI SDK | providerOptions.openai (या extraBody) |
| LangChain (Py) | model_kwargs={"extra_body": {...}} |
| LangChain (JS) | modelKwargs: {...} |
| LlamaIndex | additional_kwargs={...} |
| Raw HTTP / curl | request body में top-level JSON फ़ील्ड |
एजेंट बना रहे हैं? tool-calling और MCP के लिए एजेंट देखें। किसी अन्य platform से आ रहे हैं? माइग्रेशन गाइड देखें। रेसिपी कुकबुक में हैं।