Skip to main content
← All use cases

The scenario

Every reason call costs credits, and the cost difference between the cheapest and the most expensive model in the catalog is more than a hundredfold. Most spaces do not need the expensive one; one or two do. What this recipe shows that no other does: reading the model catalog and pinning a model per space, so cost follows importance instead of being one global setting.

Step 1 — See what you can actually use

The catalog is generated and checked in, not fetched live, so pricing is reproducible — a price change arrives as a reviewed release, never as a surprise on your bill. Aliases exist for the common cases: fast, balanced. Naming an alias means “whatever we currently think is the sensible default at that tier”.

Step 2 — Pin one to a space

Step 3 — Check what a space is actually on

null means the space is on the deployment default — which is the right answer for most spaces, and worth confirming before you debug a cost you did not expect.

Step 4 — Undo it

Resetting is better than pinning to today’s default by name: a space pinned to an explicit id keeps that model forever, including after we move the default to something better and cheaper.

Evals

  1. Ask the same question of one space on fast and on balanced.
  2. Compare the answers side by side, not in isolation — the cheap model is often indistinguishable on factual recall and noticeably worse on synthesis.
  3. Check get_usage before and after to see the real credit difference.
  4. Pick per space based on that, not on the model’s reputation.

Guardrails

A pinned model is pinned forever. It will not follow the platform default forward, so a space pinned today is still on today’s model in a year. Reset rather than re-pin unless you have a reason to freeze it.
  • Reason settings are owner-only. A read-only member of a shared space cannot change what it thinks with.
  • This is reason only. The drop-in proxy’s model is chosen per call or via chat settings; they are separate knobs.
  • An unknown model id is a 400, not a fallback. That is deliberate — silently answering with a different model than you asked for would corrupt any comparison you were trying to make.

Where to go next

Cut the bill without cutting recall — the other half of the cost story, which is how much context you send rather than which model reads it.