Start with Fast. Move to Large when the problem is hard. That’s most of it. Here’s the rest, with the numbers.
The three models
| Model | Best for | Context | Reasons |
|---|---|---|---|
solcard-inference-fast | Almost everything. The default. | ~1M tokens | When you ask |
solcard-inference-large | Hard problems: tricky code, long chains of logic | 1M tokens | Always |
solcard-inference-base | General-purpose work, a second opinion | 262k tokens | When you ask |
All three:
- are open-weight models with their refusal training removed, so they answer questions a mainstream assistant turns down: security research, malware analysis for defense, red-teaming, hardening safety classifiers, synthetic training data;
- write up to 32,768 tokens per answer;
- take text only: no images, audio or files (the chat app reads your files into text first);
- call tools, stream, and work through the OpenAI Chat Completions, OpenAI Responses and Anthropic Messages APIs.
What a request costs
USD per 1M tokens:
| Model | Input | Cached input | Output |
|---|---|---|---|
| Fast | $1.25 | $0.125 | $2.50 |
| Large | $3.75 | $0.375 | $6.25 |
| Base | $1.25 | $0.125 | $3.75 |
Take one ordinary request: a 10,000-token prompt (a few files of code and a question) and a 1,000-token answer.
| Model | Input | Output | Total |
|---|---|---|---|
| Fast | $0.0125 | $0.0025 | $0.015 |
| Base | $0.0125 | $0.00375 | $0.01625 |
| Large | $0.0375 | $0.00625 | $0.04375, plus its thinking |
Large costs about three times as much as Fast, before it thinks. Its reasoning tokens are billed as output too, so a hard question can cost several times the table.
In a long conversation, most of your input is cached, at a tenth of the price. A coding agent resends the whole conversation every turn, so this is where most of its input lands.
Reasoning: when to let it think
A reasoning model works the problem out in tokens you don’t see before it writes the answer. It’s slower and you pay for the thinking, but on hard problems it’s right more often.
Fast and Base don’t reason unless you ask. Turn it on per request:
{
"model": "solcard-inference-fast",
"reasoning_effort": "medium",
"messages": [{ "role": "user", "content": "Find the race condition in this function." }]
}
| API | Field | Values |
|---|---|---|
| Chat Completions | reasoning_effort | none, low, medium, high |
| Responses | reasoning.effort | none, low, medium, high |
| Messages | thinking.type, output_config.effort | enabled, adaptive or disabled; low to max |
Large always reasons. That’s what you pay for when you pick it.
With reasoning on, the answer gets at least 256 tokens of room, so the thinking can’t eat the whole budget. The reply’s usage tells you how many tokens went to reasoning.
Picking one
- Chat, drafting, summaries, extraction, most code: Fast.
- Fast got it wrong, or the problem needs several steps held in mind at once: Fast with
reasoning_effort: "medium", then Large. - A long agent session on a big codebase: Fast for the routine turns, Large for planning and the hard bugs. Caching keeps the long context cheap on both.
- You want a different model’s take on the same prompt: Base.
You can switch on every request. One balance pays for all three, and GET /v1/models always has the live list and prices.