Skip to content

Auto stays in the tier you set.

Cost tiers: low, balanced, high. Lower is cheaper. Higher is more capable. Send hopscotch/auto and the project tier is the band. Name a model instead and that is what runs.

auto

Auto

Lower is cheaper.
Cost tier
model
hopscotch/auto
cost tier
low

Or write the list yourself.

A model slug you already know, or a hop list with failover. That is the add-on. It is not how the cost tier is chosen.

Auto is hopscotch/auto, a slug you send on purpose, not a cheaper stand-in. When a slug is sold by more than one upstream, the catalog lists them. A 200 is still the model you named.

routes
  • skip unhealthy
    1. [initial]

      Claude Sonnet 52 in · 10 out / 1M

    2. [2]fallback

      GPT-5.6 Sol4 in · 20 out / 1M

    3. [3]fallback

      Gemini 3.6 Flash1.50 in · 7.50 out / 1M

When a hop cannot serve.

Failover is classified, not guessed. A 429 from the first model, a 503 from the second, and the third serves. Your client saw one request and one answer; the log kept all three attempts and the reason each one moved on.

transient[RETRY ONCE, THEN TREAT AS CAPACITY]

A 429, a 5xx, a reset, or a time-to-first-token timeout. The same route gets one more attempt, because most of these clear on their own.

capacity[REROUTE NOW, COOL THE ROUTE DOWN]

The model is unavailable on this provider, or the Retry-After is long enough that waiting is worse than moving. We go to the next hop and stop offering this one for a while.

deterministic[NEVER RETRY, NEVER REROUTE]

Malformed request, context length exceeded, unsupported parameter. Another upstream would fail the same way, so you get the error rather than a slower version of it.

fatal-internal[SURFACE 500, DO NOT RETRY]

Our adapter cannot parse a well-formed response. That is our bug, and retrying a bug just bills you twice for it.

You set the tier.