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.
1curl https://api.sothe.net/v1/models1{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
| status | Meaning |
|---|---|
available | We can serve it right now. Only these can be called. |
unavailable | Listed with a price, but not callable yet. Calling it returns 503 model_unavailable. |
coming-soon | Announced with no public price yet. |
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
| Field | Meaning |
|---|---|
input_modalities | What the model can read. Sending a kind it can't read is refused, not ignored — see Images, audio & video. |
context_length | Maximum input tokens. Exceeding it returns 400 upstream_validation. |
supports_tools | Whether the model accepts tool definitions. false means a request carrying tools is refused with 400 tools_not_supported. |
supports_caching | Whether repeated prompt prefixes are cached and billed at the provider's cache rate. See Prompt caching. |
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_modalitiestells 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_toolsfirst — 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:
| Setting | Value |
|---|---|
| Base URL | https://api.sothe.net/v1 |
| API key | sk-so-v1-… |
| Model | An id from /models, e.g. anthropic/claude-haiku-4-5-20251001-v1:0 |
| Context window | context_length for that model |
| Max output tokens | Your choice; we default to 8,192 |
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.