One OpenAI-compatible endpoint for the models you already pay for.
Routing by cost, quality or latency with Bring-Your-Own-Key (BYOK) and 0% token markup. SentioGate automatically falls back to another model if one fails.
Client App / SDK ───▶ [ SentioGate Router ] ──┬──▶ OpenAI
│ ├──▶ Anthropic
⚡ Cost / quality / latency ├──▶ Google Gemini
🛡️ Automatic fallback ├──▶ DeepSeek
🔒 Encrypted key Vault └──▶ Groq / Mistral / xAI / ...
- 0% Token Markup: SentioGate is Bring-Your-Own-Key (BYOK). You pay your providers' standard rates directly; SentioGate adds no fee per token.
- Routing you control: send
model: "auto"and chooseroute_preferencecost(default),qualityorlatency, or pin a specificprovider/model. - Drop-in OpenAI Compatibility: works with the OpenAI SDK, LangChain and other OpenAI-compatible tools by changing the base URL and API key.
- Automatic fallback: SentioGate automatically falls back to another model if one fails, so a single provider outage or rate limit doesn't have to break your app.
- Your keys stay yours: provider keys are stored encrypted in your Vault, decrypted only in memory to call the provider, and shown back masked.
Explore our open-source developer libraries and resources:
- sentiogate-js — Lightweight, zero-dependency TypeScript & Node.js client SDK (
@sentiogate/sdk). Supports streaming and opt-in retries. - sentiogate-python — Pure standard-library Python SDK (
sentiogate-python) with streaming support. - llm-routing-benchmarks — Small offline synthetic benchmark demonstration; live metrics are on the benchmarks dashboard.
- Developer Hub & Playground — Interactive visualizer showing routing in action.
import os
from sentiogate import AutoRouterClient
client = AutoRouterClient(api_key=os.environ["SENTIOGATE_API_KEY"])
response = client.chat(
model="auto", # SentioGate picks the model
messages=[{"role": "user", "content": "Explain quantum computing in 10 words."}],
extra_body={"route_preference": "latency"}, # "cost" (default), "quality" or "latency"
)
print(response["choices"][0]["message"]["content"])import { AutoRouter } from "@sentiogate/sdk";
const router = new AutoRouter({
baseUrl: "https://api.sentiogate.dev",
apiKey: process.env.SENTIOGATE_API_KEY,
});
for await (const chunk of router.streamChat({
model: "auto",
messages: [{ role: "user", content: "Optimize this SQL query..." }],
extraBody: { route_preference: "cost" },
})) {
process.stdout.write(chunk.choices?.[0]?.delta?.content || "");
}import os
from openai import OpenAI
# Just update base_url and api_key
client = OpenAI(
base_url="https://api.sentiogate.dev/v1",
api_key=os.environ["SENTIOGATE_API_KEY"],
)We believe in open metrics. View provider latency and comparative benchmarks:
- 🌐 Live Web Benchmarks: sentiogate.app/benchmarks
- 📈 Benchmark Methodology & Code: SentioGate/llm-routing-benchmarks
- ⚖️ Comparison Guide (SentioGate vs OpenRouter & LiteLLM): sentiogate.app/compare
- Web Application & Dashboard: https://sentiogate.app
- Interactive Documentation: https://sentiogate.app/docs
- Free Chatbot & Gateway Tools: https://sentiogate.app/free-ai-tools
- GitHub Pages Developer Hub: https://sentiogate.github.io
- Developer Inquiries: support@sentiogate.app