⚡ नया — Kimi K3 अब लाइव: अपनी Moonshot key जोड़ें →
दस्तावेज़

Client SDKs और frameworks

BharatRouter OpenAI wire format बोलता है, इसलिए आपको किसी ख़ास SDK की ज़रूरत नहीं — जो OpenAI-compatible client आप पहले से इस्तेमाल करते हैं उसे gateway पर लगाएँ और बाक़ी कुछ न बदलें। यह पेज आम stacks के लिए drop-in दिखाता है, और बताता है कि चार BharatRouterrouting extensions हर एक में कहाँ जाते हैं।

drop-in पैटर्न

Base URLhttps://api.bharatrouter.com/v1
AuthAuthorization: Bearer br-…sign in करें और एक key बनाएँ
Extensionsoptimize, provider, data_policy, upstream_key — request body में भेजे जाते हैं, router द्वारा consume होते हैं, और gateway छोड़ने से पहले हटा दिए जाते हैं

per-SDK बस एक सवाल है — extensions कहाँ जाते हैं। हर OpenAI client के पास non-standard फ़ील्ड के लिए एक escape hatch है। इस पेज के अंत की table हर एक को सूचीबद्ध करती है।

OpenAI SDK — Python

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"))

OpenAI SDK — Node / TypeScript

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);

Vercel AI SDK

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);

LangChain

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);

LlamaIndex

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"))

Embeddings

वही 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))

extensions कहाँ जाते हैं, per SDK

SDK / frameworkoptimize / data_policy / … कैसे भेजें
OpenAI SDK (Python)extra_body={...}
OpenAI SDK (Node)request object पर top-level फ़ील्ड (ज़रूरत हो तो cast करें)
Vercel AI SDKproviderOptions.openai (या extraBody)
LangChain (Py)model_kwargs={"extra_body": {...}}
LangChain (JS)modelKwargs: {...}
LlamaIndexadditional_kwargs={...}
Raw HTTP / curlrequest body में top-level JSON फ़ील्ड

एजेंट बना रहे हैं? tool-calling और MCP के लिए एजेंट देखें। किसी अन्य platform से आ रहे हैं? माइग्रेशन गाइड देखें। रेसिपी कुकबुक में हैं।