model (or pick in a routing config on the Routing page). Per-token prices for all of them live on the platform’s Pricing page (Inference → Pricing); prices are not repeated here so they can’t go stale.
Identifier spelling
Belvedir uses provider-prefixed identifiers for every provider except OpenAI, whose baregpt-* ids are the convention. Bare ids from provider-native SDKs are normalized server-side (claude-sonnet-5 → anthropic/claude-sonnet-5, grok-4.6 → x-ai/grok-4.6, gemini-* → google/*, mistral-* → mistralai/*, deepseek-* → deepseek/*), so a call site migrated from another SDK keeps working with the id it already names.
Anthropic
Served directly on Anthropic’s API.
That is every model Anthropic’s API serves; dated snapshot ids (
claude-opus-4-5-20251101, …) resolve to the same rates.
OpenAI
Served directly on OpenAI’s API. Bare ids are the norm; theopenai/ prefix is also accepted. Any current OpenAI chat id (gpt-*, chatgpt-*, o-series) routes here; the priced line-up:
That is every callable chat model OpenAI’s API serves, at OpenAI’s list prices; dated snapshot ids resolve to the same rates. OpenAI’s pro and codex models are served only on their Responses API, which the router doesn’t speak, and the versioned chat-latest ids are deprecated on OpenAI’s side; both return a clear error naming the base model to use instead.
xAI
Served through OpenRouter, priced from the provider’s reported cost per call.Open models
Beyond this list, any OpenRouter model id works as a pass-through: the call executes on OpenRouter and bills at OpenRouter’s reported cost for that call.
If your organization has Chinese models turned off under Project Permissions, Chinese-lab identifiers (Qwen, GLM, DeepSeek, Kimi) are unavailable for that project: the router never picks one, and a call naming one returns a clear error.
Batch tier
Models served on Anthropic, OpenAI, and Sail also have a deferred batch tier at half of list price. OpenRouter-served models have no batch tier.Your own models
- Local models (Ollama-style
name:tagids such asqwen3:4b,llama3.1:8b,gpt-oss:20b): the decision endpoint can route to them, but your app executes the call; the inference endpoint returns a clear400for them. - Fine-tuned models (your project’s trained models, by name): same rule; the decision endpoint routes to them and your app serves them.
- Bring your own provider: register a model id with your own base URL and key under Cloud Inference in the dashboard, and the inference endpoint executes that id on your endpoint instead — metered but never billed. This lifts the
400for local and fine-tuned ids too.