Skip to main content
Route picks the model used when a caller doesn’t pass one. Define it once, change it without touching code. A typical use: your app runs on openai/gpt-5-mini everywhere, then you switch a single high-stakes project to anthropic/claude-opus-4-7 by editing one rule.

Set up a rule

Open Controls → Route in platform.opper.ai. Each rule has one setting: the default model for that scope.
ScopeApplies to
OrganizationEvery call in your org.
ProjectCalls in one or more projects.
The most specific rule wins. A project-level default overrides org-level. The model picker only shows models allowed by Comply at the same scope. If your allowlist denies every model, you’ll see a prompt to broaden it first. Leave the default blank (“Auto”) and Opper picks based on the call’s hints (prefer: fast | cheap | quality | balanced).

Callers can still pick a model

Passing an explicit model works as long as Comply allows it. Use this for per-call trade-offs: cheaper models for background jobs, higher-quality ones for user-facing replies. If the requested model isn’t allowed, the call fails with a clear error. It doesn’t silently fall back to the default.

Where you see the result

A Route event appears on the trace span with a Compass icon, status Applied, the rule name, and a scope badge. The model that actually ran shows in the span’s Model field. In the playground, the model picker is the per-call equivalent of a Route rule. Use Compare models to run the same input across several models in parallel before you change a rule. Turn on Project controls to test against your real allowlist.
Keep model names out of application code. Pin defaults per scope and switch models by editing the rule.