Choosing the model
string
required
A catalog model id, for example
deepseek-v4-flash. The provider-pinned form
is accepted and normalises to the same canonical id.- auto
- Pinned
What “cheapest” means
Cheapest that clears the task’s eval, not cheapest outright. A route is only eligible if it scores at or above the incumbent on that task’s own eval contract. Price breaks ties among routes that qualify; it never overrides the contract. Without a contract there is nothing to gate on, so the workload stays on the model you name rather than guessing.How a route gets promoted
1
History accumulates
Labelled calls build a trace corpus and a cost profile for the task.
2
Candidates are scored offline
Cheaper candidates are replayed against the task’s eval contract. This happens
out of band and does not touch your production traffic.
3
You approve
A candidate that clears the contract is proposed with its score and its
measured cost delta. It does not serve traffic until you accept it.
Approval is on by default and cannot be disabled for regulated tenants. No
route change reaches production traffic without a human accepting it.
4
It takes effect
New calls with
model: "deepseek-v4-flash" for that task use the new route. Pinned calls
are unaffected.Reading the decision
The response tells you what actually served the call, which is the only reliable way to know: the top-levelmodel is the model that served the call.
protege.route alongside your own request IDs. When a task’s quality moves,
that field is what tells you whether the route changed underneath it.
When a task stops getting cheaper
Routing works by finding an existing model that is good enough. A task that has exhausted the available models and is still expensive is the point at which training a specialist becomes the cheaper option. That is a separate engagement rather than an API call, and it is gated on the same eval contract.See the measured runs
Published benchmarks, with the runs that lost.