TL;DR. One two-bug Python fix, 215 hidden tests, three runs per model through one AIHubMix key, on 19 October 2026. All 12 runs passed every test. At default settings, Claude Haiku 5.5 finished in about 7 s for $0.0007 per fix, DeepSeek V4.1 Flash 1017 in about 15 s for $0.0014, and MiniMax M3.1 Flash in 56 s for $0.0045. With reasoning_effort: "low", M3.1 Flash dropped to 9.5 s and $0.0006, the cheapest configuration tested.
On this task, the default thinking level shaped the bill more than the per-token price did.
The three models
| MiniMax M3.1 Flash | DeepSeek V4.1 Flash 1017 | Claude Haiku 5.5 | |
|---|---|---|---|
| AIHubMix model ID | minimax-m3.1-flash | deepseek-v4.1-flash-1017 | claude-haiku-5-5 |
| Input / output per 1M | $0.165 / $0.66 | $0.155 / $0.62 | $0.10 / $0.50 |
| Cache read per 1M | $0.0165 | $0.0031 | $0.01 |
| Context / max output | 1M / 512K | 1M / 384K | 1M / 128K |
| Input types | Text, image, video | Text, image | Text, image |
| Thinking can be off | No | Yes | Yes |
| Default thinking | max | On | medium |
| Open weights | Not yet | Yes (MIT) | No |
These are AIHubMix list prices on 19 October 2026. A 30% AIHubMix discount on DeepSeek V4.1 Flash 1017 runs from 19 to 25 October and isn't included. Haiku 5.5's rate rises to $0.50 / $2.50 above 100K prompt tokens. DeepSeek's own API doubles its price at peak hours; AIHubMix lists one price. M3.1 Flash's video input is documented by MiniMax, while AIHubMix lists text and image.
Spec sources: MiniMax's model list, DeepSeek's models and pricing page, and Anthropic's Haiku page.
Why these three? They're the cheap tier of each vendor and launched within four weeks of each other:
- DeepSeek V4.1 Flash came out on 10 September and its 1017 update on 17 October.
- Haiku 5.5 came out on 7 October.
- M3.1 Flash ran anonymously as Space Bunny Alpha from 23 September, was named on 27 September, and became callable per token on AIHubMix on 19 October.
During its free OpenRouter week, Space Bunny topped the daily chart ahead of DeepSeek V4.1 Flash.
Prerequisites
- An AIHubMix key in
AIHUBMIX_API_KEY(the quick start covers it). - Python 3.10+ and
pip install openai. - All three models answer on
https://aihubmix.com/v1/chat/completions, so only the model ID changes.
The task and the grader
The function under test has two bugs. A pause that runs past the period end subtracts the end day, which isn't in the period. Overlapping pauses get subtracted twice.
def billable_days(start: date, end: date, pauses: list[tuple[date, date]]) -> int:
"""Days in the half-open period [start, end) when the subscription was active.
`pauses` holds inclusive (first_day, last_day) ranges..."""
total = (end - start).days
for p_start, p_end in pauses:
s = max(p_start, start)
e = min(p_end, end)
if s <= e:
total -= (e - s).days + 1
return total
The prompt describes the two symptoms and asks for the corrected function in one code block. The grader pulls the last code block from the reply and runs it against 215 cases in an isolated subprocess:
- 15 hand-written edge cases: touching, nested, and duplicate pauses, a pause covering the whole period, an empty period, and a pause starting on the end date
- 200 random cases from a fixed seed, each checked against a brute-force reference that counts day by day
The original function passes 138 of the 215.
The request loop
import os, time
from openai import OpenAI
client = OpenAI(base_url="https://aihubmix.com/v1", api_key=os.environ["AIHUBMIX_API_KEY"])
prompt = open("task.md").read()
for model, extra in [("minimax-m3.1-flash", {"reasoning_effort": "low"}),
("deepseek-v4.1-flash-1017", {}),
("claude-haiku-5-5", {})]:
t0 = time.time()
r = client.chat.completions.create(model=model, max_tokens=32768,
messages=[{"role": "user", "content": prompt}], **extra)
print(model, round(time.time() - t0, 1), "s", r.usage.completion_tokens, "output tokens")
Thinking tokens are in usage.completion_tokens_details.reasoning_tokens. Cost is computed from prompt_tokens, prompt_tokens_details.cached_tokens, and completion_tokens at each model's AIHubMix price. Thinking is billed as output on all three.
Results
Three runs per row, Chat Completions, max_tokens 32,768, measured by AIHubMix on 19 October 2026:
| Model and setting | Avg thinking tokens | Avg output tokens | Avg time | Avg cost per fix | Tests |
|---|---|---|---|---|---|
| Claude Haiku 5.5 (default) | 755 | 1,323 | 7.2 s | $0.0007 | 215/215 ×3 |
| DeepSeek V4.1 Flash 1017 (default) | 1,823 | 2,148 | 14.6 s | $0.0014 | 215/215 ×3 |
| MiniMax M3.1 Flash (default = max) | 6,364 | 6,673 | 56.3 s | $0.0045 | 215/215 ×3 |
| MiniMax M3.1 Flash (low) | 591 | 889 | 9.5 s | $0.0006 | 215/215 ×3 |
Here is what the numbers say:
- Same correctness. Twelve perfect fixes. This task doesn't separate the models on quality.
- About 8× the thinking at default. Flash's default spent 6,364 thinking tokens against Haiku's 755. That's why Haiku's default costs about a sixth of Flash's default.
-
Flash at
lowis the cheapest, at $0.64 per 1,000 fixes against Haiku's $0.70. Haiku is still faster. - Throughput. Output tokens divided by wall time came to about 183 tok/s for Haiku, 148 for DeepSeek, and 112 for Flash.
Per 1,000 fixes: Haiku about $0.70, DeepSeek about $1.35, and Flash about $4.45 at default or $0.64 at low.
A second check sorted five support tickets into four labels, with each model at its default and at its lowest thinking setting. All 30 answers were correct, and every call cost under $0.0001. Thinking tokens per call were 0–6 for Flash, 0 for Haiku, and about 25 for DeepSeek.
Failure modes and fixes
Flash's default looks like a hang. With no effort field, M3.1 Flash thinks at max, and a small fix took 56 s on average. Client timeouts tuned for a fast model will fire. The fix is to send reasoning_effort on every request and start at low.
reasoning_effort: "none" doesn't zero DeepSeek's thinking through AIHubMix. On the triage prompts, DeepSeek used about 25 reasoning tokens with none and with the default alike. The cost difference is negligible. Just don't assume none gives you a non-thinking reply on this route.
Haiku's long-prompt price cliff. Above 100K prompt tokens, Haiku 5.5 bills $0.50 / $2.50. As an estimate for a 300K-token prompt with no cache, counting input only and assuming the higher rate applies to the whole prompt as OrcaRouter describes: Haiku costs 300,000 × $0.50 ÷ 1M = $0.15, while M3.1 Flash costs 300,000 × $0.165 ÷ 1M ≈ $0.05, about the same as DeepSeek. That's roughly 3× per call. Route large-context calls away from Haiku, or cache aggressively.
Promo prices drift. DeepSeek V4.1 Flash 1017's AIHubMix page shows the discounted price until 25 October. Budget on the list price.
What this test can't tell you
- Quality differences. Every run passed, so a harder, multi-file task is needed to rank the models on correctness.
- Statistical confidence. Three runs per setting is a small sample, and thinking length varies a lot between runs.
- M3.1 Flash on a benchmark. MiniMax hasn't published one and Artificial Analysis doesn't list it. DeepSeek's benchmark scores are self-reported in its V4.1 Flash technical report. Haiku's Artificial Analysis score of 43 is cited by OrcaRouter.
- Video input through AIHubMix. It's in MiniMax's docs but wasn't tested here.
- Haiku's exact long-prompt rule. The $0.15 figure assumes the higher rate covers the whole prompt.
Which one to use
- A person waiting, short prompts: Claude Haiku 5.5.
- Benchmarks, self-hosting, or a real non-thinking mode: DeepSeek V4.1 Flash 1017.
-
Large context, long outputs, or video, with effort set explicitly: MiniMax M3.1 Flash at
lowormedium.
To check the price cards side by side, use AIHubMix's compare pages: M3.1 Flash vs DeepSeek V4.1 Flash 1017 and M3.1 Flash vs Claude Haiku 5.5.
Keep reading: the MiniMax M3.1 Flash series
- For what M3.1 Flash is and what it replaced, from Space Bunny to its price against M2.7 and M3: MiniMax M3.1 Flash (ex-Space Bunny) on the API: Specs, Price, and a Measured Bug-Fix Cost
- Flash's numbers above swing on one setting. Here's the same fix at all five effort levels: Measuring MiniMax M3.1 Flash's Five Effort Levels on One Bug Fix
- If you're porting MiniMax M2.5/M2.7 code rather than starting fresh, read the 400s and silent changes first: Fixing "requires adaptive thinking" (2013) When Moving from MiniMax M2.7 to M3.1 Flash
Top comments (0)