Documentation

Models

Model ids, availability and how to list them.

Model ids

An id is provider/model, for example anthropic/claude-haiku-4-5-20251001-v1:0. Ids are stable: we do not silently repoint one model id at another, so the model you tested is the model you get.

The short form works too. anthropic/claude-haiku-4.5 reaches the same model as the full id above, because it begins exactly one id we list — which is what an editor sends when its own model catalogue uses the shorter names. When a short id would match more than one of ours it is refused rather than guessed at, so you are never billed for a model you did not mean.

Browse them with prices on the Models page, or fetch them from the API.

Listing models

GET https://api.sothe.net/v1/models needs no key.

Shell
1curl https://api.sothe.net/v1/models
JSON
1{2  "object": "list",3  "data": [{4    "id": "anthropic/claude-haiku-4-5-20251001-v1:0",5    "object": "model",6    "name": "Claude Haiku 4.5",7    "owned_by": "Anthropic",8    "status": "available",9    "input_modalities": ["text", "image"],10    "context_length": 200000,11    "supports_tools": true,12    "supports_caching": true,13    "pricing": { "prompt": 0.92, "completion": 4.6, "unit": "usd_per_1m_tokens" }14  }]15}

Prices are USD per million tokens. Because a million tokens and a million micro-dollars line up, that same number is also the micro-USD price of a single token.

Availability

statusMeaning
availableWe can serve it right now. Only these can be called.
unavailableListed with a price, but not callable yet. Calling it returns 503 model_unavailable.
coming-soonAnnounced with no public price yet.
Filter on status

If you build a model picker, keep only available. The list deliberately includes the others so you can see what is coming, rather than having them disappear and reappear.

Capabilities

FieldMeaning
input_modalitiesWhat the model can read. Sending a kind it can't read is refused, not ignored — see Images, audio & video.
context_lengthMaximum input tokens. Exceeding it returns 400 upstream_validation.
supports_toolsWhether the model accepts tool definitions. false means a request carrying tools is refused with 400 tools_not_supported.
supports_cachingWhether repeated prompt prefixes are cached and billed at the provider's cache rate. See Prompt caching.
null means we have not established it

Bedrock publishes neither of the last two, so we measure them: every model gets a probe request, and the value is recorded only when the answer is unambiguous. A null is us declining to guess rather than a capability the model lacks — try it and see.

Choosing one

  • input_modalities tells you what a model can read. Sending an image to a text-only model is refused rather than ignored.
  • Prices vary by more than a hundredfold across the catalog, so the cheapest model that passes your evals is usually the right default.
  • Pin the exact id in code and change it deliberately. Presets let you change it without a deploy.
  • Building an agent? Filter on supports_tools first — an agent that cannot call functions is not an agent. The Models page has a filter for it.

Other tools

Anything that speaks the OpenAI API works: coding agents like Continue, Cline, Roo Code and Aider, chat front ends like LibreChat and Open WebUI, and any SDK. Editors & agents has the settings for each of those by name; in general, pick the provider called OpenAI Compatible (or "Custom", "OpenAI-compatible endpoint") rather than "OpenAI", then fill in:

SettingValue
Base URLhttps://api.sothe.net/v1
API keysk-so-v1-…
ModelAn id from /models, e.g. anthropic/claude-haiku-4-5-20251001-v1:0
Context windowcontext_length for that model
Max output tokensYour choice; we default to 8,192
Coding agents need tool calling

Roo Code's OpenAI Compatible provider requires native tool calling and has no fallback, and most agents are the same. Choose a model whose supports_tools is true, or the agent will fail on its first action.