User guide

Choosing a model

How the model list is filtered and priced.

You see what you are granted

GET /v1/models returns the enabled models and managed models granted to you — directly, through one of your groups, or through an all-users grant — plus the models of your own connected subscriptions (my/…), which need no grant. Without grants you can only use your own subscriptions.

When you work under a team — through a team token or the Working under selector — only that team’s grants and all-teams grants count, so you see only that team’s models.

If a model you expect is missing, ask an administrator to grant it. Nothing about your account needs to change.

Model names can be curated

Administrators can edit a model’s display name, context window and prices in Admin → Models → Edit. The catalog then lists the model under that name, and it becomes the name to use in the model field of your requests; the raw upstream identifier is reported alongside it as janus.native_name. Use the model name shown in the catalog — not the provider’s own catalog — when configuring a tool.

Renames are backward compatible: the original upstream name keeps resolving forever, so a tool configured before a rename never breaks. One limitation: a request that carries the display name in a body the gateway cannot rewrite (file uploads and other non-JSON payloads) is refused with an error naming the native model name to use instead.

Prices are per million tokens

Every model carries up to five rates: input, output, cached input, and — for providers that bill prompt-cache writes, such as Anthropic — 5-minute and 1-hour cache-write rates. Cached input tokens are billed at the cached rate — OpenAI-style providers count them inside the input total, Anthropic and Bedrock report them separately; cache-write tokens are metered separately and billed at the matching cache-write rate.

A model cannot be enabled without a rate card (except in local-only mode, where costs are not tracked). Automatic metadata can supply supported prices; unknown prices are distinct from explicitly free prices. An explicitly saved $0 rate card counts: self-hosted models can be enabled free of charge, and their usage is attributed at $0.00.

Context windows

Each model in the catalog shows its context window — the maximum number of tokens it accepts as input, reported as context_window (in tokens) in the API. Discovery refreshes it from the upstream, then an exact reference for that provider. In Admin → Models → Edit, administrators can override context and each price independently, or choose Use automatic to reset one field.

A dash means the context window is not recorded (context_window is 0), not that the model has none. Direct API calls are never rejected or truncated on this value, but auto-routing skips a model a request would not fit, and Janus Chat drops the oldest messages of a long chat to fit it.

Health and error rate

Each model card on the Models page carries live health. The badge mirrors what administrators see under Admin → Upstreams: Healthy with the last probe latency when the provider answered, Down when the last probe failed (the card is tinted red and names the error) or when every one of at least 3 requests in the last ten minutes failed upstream, Degraded when at least 10% of recent requests failed, and No data when the upstream has not been probed and nothing has been requested yet.

Errors (10 min) is the share of requests to that model over the trailing ten minutes that failed on the provider side — a 5xx response or the provider being unreachable or rate-limiting the gateway. Requests Janus refused on policy grounds (quota, grant, blocking rule) are not counted on either side of the ratio, so your own quota does not make a model look unhealthy. The API reports the same figures on GET /api/v1/models as request_count_10m, error_count_10m, error_rate_percent, upstream_reachable, upstream_last_latency_ms, and health.

A model marked Down will fail requests until the upstream recovers; if it stays down, contact an administrator rather than retrying in a loop.