Stop hand-wiring
provider SDKs.
One API in front of OpenAI, Anthropic, Gemini, and your own self-hosted models. Cost- and latency-aware routing, response caching, and automatic fallback — so a provider outage doesn’t become your outage.
The right model, every time
Every request is scored on cost, latency, quality, and reliability, then sent to the best eligible model — automatically.
Don't pay for the same answer twice
Exact-match and semantic (pgvector) caching cut repeat costs to zero, with tenant isolation and configurable safeguards.
Try a model without the risk
Sample real traffic to an alternate model and compare it against production — your client only ever sees the response you chose to serve.
A provider outage isn't your outage
Retries with full-jitter backoff, a circuit breaker per provider, and automatic fallback chains keep requests flowing.
See where every request went
Cost, latency, cache hits, and the routing decision behind them — queryable in the dashboard, in real time.
Sign up, grab a key
Free plan, no card required. Your first API key is one click away in the dashboard.
Point your client at us
Swap the base URL and key in your existing OpenAI SDK. Everything else — messages, streaming, tool calls — stays the same.
Watch it route
Every request is classified and scored against your registered models, then sent to the best eligible one.
OpenAI-compatible. Point your existing client at /v1/chat/completions with your router API key — no new SDK to learn.
curl https://api.niuron.ai/v1/chat/completions \
-H "Authorization: Bearer ar_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "Explain routing in one sentence."}]
}'from openai import OpenAI
client = OpenAI(
base_url="https://api.niuron.ai/v1",
api_key="ar_live_...", # Dashboard -> API keys
)
resp = client.chat.completions.create(
model="auto", # or pin one, e.g. "gpt-4o"
messages=[{"role": "user", "content": "Explain routing in one sentence."}],
)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.niuron.ai/v1",
apiKey: "ar_live_...", // Dashboard -> API keys
});
const resp = await client.chat.completions.create({
model: "auto", // or pin one, e.g. "gpt-4o"
messages: [{ role: "user", content: "Explain routing in one sentence." }],
});model: "auto" lets the router pick; request a specific model (e.g. gpt-4o, claude-sonnet-5) to pin it instead — the response shape is identical either way.
Every OpenAI-compatible coding agent takes the same two settings — swap them in and keep the tool you already use.
Base URL: https://api.niuron.ai/v1
API Key: ar_live_...
(click Verify)Base URL: https://api.niuron.ai/v1
API Key: ar_live_...
Model ID: autoBase URL: https://api.niuron.ai/v1
API Key: ar_live_...models:
- name: niuron
provider: openai
model: auto
apiBase: https://api.niuron.ai/v1
apiKey: ar_live_...export OPENAI_API_BASE=https://api.niuron.ai/v1
export OPENAI_API_KEY=ar_live_...
aider --model openai/autoOPENAI_BASE_URL=https://api.niuron.ai/v1
OPENAI_API_KEY=ar_live_...