Skip to main content
By default every call runs on the model Anona serves as standard. You can name a different one (per request, in the dashboard, or as a default for a space), and credits are charged at that model’s own rate rather than a flat tier.
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 of nova-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

Omit model 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 the model 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, like nova-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.
The difference between the first two matters. A short name is stable; a tier name may move. If you have measured a model and want that exact behaviour to stay put, name it: gpt-oss, not balanced.
These all name the same model, and any of them is accepted anywhere model is:
And these three all name the Cerebras-hosted one, which is a different model and a different price:
Models served through OpenRouter are named openrouter/<vendor>/<model>. This one is GPT-OSS 120B again, at a third host and its own, lower, price:
The vendor name on its own (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.
Both settings 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:
A space default is stored as a resolved model id, even when you send a tier name. If 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.
PUT /v1/spaces/{id}/chat-settings replaces the whole record, so a field you omit is cleared, not kept. The reason settings are a separate resource for exactly this reason, so saving chat defaults never disturbs them — but that PUT replaces its whole record too, and it holds both model and depth.

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

The envelope is the standard OpenAI list shape, so 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, and GET /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 against gpt-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.
  • fast for 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-large is 3.1x the default and kimi 4.3x; the Claude family runs from claude-haiku at 7.9x to claude-opus-4.6 at 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.6 burns about 170 times faster than nova-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-turbo is 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.