Not to be confused with memory models, which are standing
answers a space keeps current. This page is about the LLM that does the work.
Every model is available on every plan
There is no plan gate. A Developer account can select the most expensive model in the catalog, and a Scale account pays the same rate for it. That works because credits are derived from each model’s real per-token cost. A credit balance is therefore a spend cap, and the choice of model cannot move it. It only changes how fast the balance goes down. Spent entirely on input, the same 5,000 credits buy roughly 10.7M tokens ofnova-micro, 2.5M of gpt-oss, or 68K
of claude-opus-4.6, and cost us the same either way.
The practical limit is throughput, not entitlement: request-per-minute quotas are
per model, and the premium models carry the least headroom. See requests_per_minute
in the table below.
The default
Omitmodel and you get openai.gpt-oss-120b-1:0, also reachable as the tier
name balanced. It replaced Nova Pro as the default in September 2026: same
extraction quality on our own benchmark, a fifth of the credits per operation,
and twenty times the requests-per-minute headroom. Nova Pro is still selectable
by name as nova-pro.
Pick one, and copy the call
Take a name out of the rate table below and drop it into themodel field. Nothing else about the call changes:
"model": "gpt-oss" is the default, so that call is also what you get by leaving
the field out: 2 credits per 1K input, 8 per 1K output, 1,000 requests a
minute. Swap the one string for any other name in the table — nova-lite for a
fifth of the rate, claude-opus-4.6 for about forty times it — and the credit rate
moves with it.
The same field works on the chat proxy, and on
PUT /v1/spaces/{id}/reason-settings to make it the space default.
Three ways to name a model
A short name, likenova-pro, deepseek or glm, is what you will use most. One per
model, and pinned to that model permanently: a short name is never re-pointed at
something else.
Most short names carry no version, because most families have one member here.
Where a family has two, both names carry the version: claude-sonnet-4.5 and
claude-sonnet-4.6, claude-opus-4.5 and claude-opus-4.6. That is the same
promise, not an exception to it. A bare claude-sonnet would have to mean one
of them today and could only mean the other later, which is exactly the
substitution short names exist to prevent.
A tier name, like fast or balanced, names an intent rather than a model, and Anona
keeps it pointed at a sensible choice as the landscape changes. That re-pointing is the
value: ask for fast and you keep getting whatever “fast” should mean.
A full model id, like us.amazon.nova-pro-v1:0, also works, and always has. Nothing
that already sends one needs to change. GET /v1/models returns the full id for every
model, along with its exact credit rates.
A host-qualified name, like cerebras/gpt-oss-120b, is accepted for any model served
outside Bedrock. It is the provider/model form other tools use, and it is worth knowing
because two entries here can be the same open weights at different hosts: gpt-oss and
gpt-oss-turbo are both GPT-OSS 120B, and gpt-oss-turbo charges 2.33x on input and
1.25x on output, which is 2.02x blended. If you are ever unsure which one a name refers
to, spell the host out.
model is:
openrouter/<vendor>/<model>. This one
is GPT-OSS 120B again, at a third host and its own, lower, price:
openai/gpt-oss-120b) is not accepted, because more than
one host serves those weights and the price depends on which.
The first two agree today. balanced is an intent that may be re-pointed later,
and in September 2026 it moved from Nova Pro to GPT-OSS; gpt-oss is that model
permanently. If you had pinned nova-pro, you are still on Nova Pro.
Using it from the API
Resolution runs request → space default → platform default, so a request always wins over a stored setting.PUTs replace the whole record, which is why the SDK methods send every
field: an argument you leave out is an argument that clears.
Because the proxy is drop-in, a stock OpenAI SDK can set it once and forget it:
fast is later re-pointed at a different model, spaces that already chose
it stay where they are. You picked a behaviour, not a subscription to ours.
GET /v1/spaces/{space_id}/reason-settings reads the current value; sending
{"model": null}, or DELETE, returns the space to the platform default.
That resource holds a second setting beside the model — depth,
how hard reason looks before it answers — and the PUT replaces the whole
record, so a body naming only model clears the depth. Send both fields, which
is why the example above states "depth": null rather than leaving it out.
The reason model also writes the space’s memory models. A memory model is a
reason answer the space keeps, so POST /v1/spaces/{id}/models and
POST /v1/spaces/{id}/models/{id}/refresh run on the same model /v1/reason
does, and so does a refresh that consolidation starts on its own. Change the
reason model and the next refresh picks it up — existing content is not
rewritten until then.
Using it from the dashboard
Open a space, then the chat defaults tab:
Each row has an override toggle. Left off, the row is inherited: the space
follows the platform default, and it keeps following it if that default ever moves.
Turn the toggle on and the picker appears, listing every model with its credit rate
per 1K tokens so the cost of the choice is visible at the moment you make it.
These write the same
reason-settings and chat-settings resources the API uses,
so a value set here is the value a request sees, and vice versa.
List what you can use
client.models.list() works
unchanged against the proxy. Entries come back cheapest
first, ordered by relative_cost. The names, alias, default, the credit
rates, requests_per_minute, and relative_cost are Anona’s additions; an SDK
that does not know about them ignores them. short_name always names this exact
model and never moves; alias names a tier and may be re-pointed.
default marks the model you get by omitting the model field. At most one
entry carries it, and sometimes none, when this deployment serves a model
outside the catalog.
Where each model works
Most models answer everything. A few answer chat only, andGET /v1/models says
which with supports_memory_operations — read it rather than assuming, and
filter on it before offering a list as a reason model.
The reason is the shape of the product rather than a restriction on you. Chat
requests are proxied: Anona calls the model’s host directly, so any host we hold
a key for can answer one. Memory operations — /v1/reason, the memory models,
the Slack and MCP asks — run inside the memory engine, which talks to one host.
A model outside it is refused with unsupported_model and a message naming what
is available, rather than accepted and failed later.
provider names the host. It matters because the same open weights can be
served by more than one, at different prices and very different speeds:
gpt-oss and gpt-oss-turbo are the same 120B model, the second on Cerebras at
roughly 2x the credits and, measured over tool-calling calls of the shape reason
sends, several times faster per step. Anona
holds every one of these keys; there is no bring-your-own-key path, and a model
you can name is one we pay for.
What it costs
Credit rates are derived from each model’s real per-token price, so a model that costs five times more charges roughly five times the credits, with no rounding into tiers. Cost vs default compares againstgpt-oss, blended 10:1 input:output. It is a
shopping aid, not a billing figure: a model’s in/out ratio is its own. Llama 70B
charges the same for both, GPT-OSS charges 4x more for output, so cost a real
workload from the exact credit rates on GET /v1/models, not from the multiplier.
GET /v1/models is the authoritative list; this table is a snapshot. The two can
differ in length as well as in content: a model whose host this deployment holds no
key for is not listed, though it stays resolvable by id so naming it gets you a
precise model_unavailable rather than a flat unsupported_model. If a name in this
table is missing from your GET /v1/models, that is why.
Reason also carries a flat base of 5 credits, so a short answer on a cheap model
costs 5 rather than fractions of one.
A worked example. A reason call reading 4,000 tokens of context and writing 400 on
the default costs
5 + (4 × 2.0) + (0.4 × 8.0) ≈ 16 credits. The same call on
nova-micro costs 5 + (4 × 0.47) + (0.4 × 1.87) ≈ 8 credits, and at that end of
the catalog the flat base is most of the bill, not the tokens.Which model answered
Reason echoes it back, so you can reconcile an answer and its cost against the model that actually produced them rather than the one you asked for:Errors
Anona never quietly substitutes a different model. If the one you named cannot serve the request, the request fails and says so.
Request limits are per model, which is also a reason to choose one: the
high-throughput models carry forty times the headroom of the premium ones
(1,000 rpm against Opus’s 25).
Choosing well
- Leave it alone unless you have a reason. The default is the balanced option.
-
fastfor high-volume, low-stakes work: classification, short recall summaries, anything where you would rather have ten answers than one better one. -
A premium model for reason over a large space, where the synthesis is the
product and a better one is worth several times the credits.
mistral-largeis 3.1x the default andkimi4.3x; the Claude family runs fromclaude-haikuat 7.9x toclaude-opus-4.6at 39.3x. Price is identical within each Claude family, so prefer the higher version: it carries a larger context window for the same rate. -
Watch the credit burn, not the plan. Nothing stops a Developer account
running any model in the catalog; it simply exhausts the month’s credits sooner.
claude-opus-4.6burns about 170 times faster thannova-micro, and the dearest entry in the catalog about 355 times faster. Both figures are the ratio of the Cost vs default column below, so they carry its 10:1 blend. -
gpt-oss-turbois cheapest exactly where it is fastest. It is the same model as the default at a faster host. It charges 2.33x on input and only 1.25x on output, so what you pay depends on the shape of the call — and so does what you gain. Measured against prod with alternating calls:So: worth it for drafting, summarising and anything that writes at length, where it is over three times faster for a third more credits. Not worth it for stuffing a large context in to get a sentence back — that is where it costs most and helps least. A short interactive reply is free either way, because both land on the 3-credit chat floor. Choose it per call rather than as a space default. - Measure before pinning an id. Reason is a multi-step agent loop, so a slower model costs more wall time than its per-call latency suggests.