Product Use cases Compare Pricing Docs Blog
Read the docs Join the waitlist

Compare · unhardcoded vs OpenRouter

compare

unhardcoded vs OpenRouter.

OpenRouter is one key to a huge model catalog. unhardcoded is the model decision layer — it routes over your own provider keys by a policy you send with each call, and proves the choice with a trace.

at a glance

Access to many models, or an enforced model decision.

OpenRouter is about breadth of access through one account. unhardcoded is about where the routing decision lives, whose keys it runs on, and whether you can audit it later.

unhardcodedOpenRouter
Where the route is decidedSent with the call (policy_ir)Provider preferences (OpenRouter picks)
Provider keys & billingYour keys, your pricingIts own account & pricing
Choosing a modelCheapest that clears your rulesCheapest route
Quality floorEnforced per call, fails loudNot enforced
Decision auditReplayable by fingerprintGeneration logs
Open & self-hostOpen policy_ir, self-host freeClosed

Figures and routing outcomes elsewhere on this page are illustrative. See the full landscape on the compare hub.

what OpenRouter is good at

One key to a very wide catalog.

OpenRouter is convenience. One account and one key reach a large multi-provider catalog with automatic route selection. For breadth of access and one-key simplicity, it is hard to beat — you try a new model by changing a string.

One account, many providers

A single key reaches a broad catalog spanning multiple providers — no per-provider onboarding to start experimenting.

Automatic provider selection

OpenRouter picks a route for you, and you can express provider preferences per request when you want a say.

Breadth for prototyping

Swap among many models behind one endpoint while you are still figuring out which one your workload needs.

where unhardcoded is different

Your keys, an enforced floor, a replayable decision.

The axis isn't access — it's where the routing decision lives. OpenRouter picks a route through its own account and pricing. unhardcoded runs the decision you sent, over your provider keys and pricing.

Your keys, your pricing

Inference runs on your provider accounts at your negotiated rates. unhardcoded prices per run, not per token, and never resells inference.

An enforced quality floor

A cheapest-route optimizer can land beneath your bar. unhardcoded filters on the bench_intelligence score (a 0..1 catalog field), fails loud when nothing clears it, and never silently downgrades.

A decision you can audit

The routing decision is an open object you control — not a log you read after the fact. Every run leaves a replayable trace: candidates, the rejecting rule, the winner, fallback.

which to reach for

Breadth to explore, policy to decide.

Reach for OpenRouter when one-key access to the widest catalog is the priority and you are still discovering which model a workload needs. Reach for unhardcoded in production — when the app must run on your own keys and pricing, enforce a floor that fails loud, and prove which model answered and why. They aren't exclusive: explore on OpenRouter, then express the production decision as a policy over your own keys, enforced and traced.

trace · req-204815200 OK
selectedgemini-3.5-flash
reasonscore 0.54 ≥ floor, tools ✓, cheapest survivor
rejecteddeepseek-v4-flash · below bench_intelligence floor
cost$0.018 · ↓71% vs gpt-5.5 baseline · illustrative
policyon your keys · fingerprint 301140696-1054914287 · sigma-pol/v1

See where the model decision lives across the field on the compare hub, or watch spend drop on cut model spend.

Keep the access. Own the decision.

Route over your own provider keys, enforce the quality floor, and replay every model decision from its fingerprint. Join the waitlist and we'll get you set up.

No SDK rewriteYour provider keysEvery request traced