MiniMax M3.1 Flash Hands-On: How Reasoning Effort Determines Bug-Fixing Cost

MiniMax M3.1 Flash hands-on: default max reasoning effort makes bug fixes ~7× costlier than the low setting.
MiniMax M3.1 Flash is live on AIHubMix at $0.165 input / $0.66 output per million tokens, roughly 43%–44% cheaper than M2.7 and M3. In a hands-on test on a two-bug Python billing function, all 215 hidden tests passed at both default max and low effort, but max averaged 6,673 output tokens, 56 seconds, and $0.0045 per fix, versus 889 tokens, 9.5 seconds, and $0.0006 at low. The key takeaway: per-token price is only half the story—migration code that omits reasoning_effort silently defaults to max, creating a hidden cost trap. Flash also lacks explicit cache_control, a Priority tier, and switchable thinking, and no official benchmarks exist.
MiniMax M3.1 Flash Hands-On: How Reasoning Effort Determines Bug-Fixing Cost
Bottom line first: MiniMax M3.1 Flash is now available on AIHubMix under the model ID minimax-m3.1-flash with token-based billing: $0.165 input / $0.66 output per million tokens. On a Python function repair task containing two bugs, it passed all 215 hidden tests at both reasoning effort settings. At the default setting, each fix averaged 6,673 output tokens and 56 seconds; switching to reasoning_effort="low" cut that to 889 tokens and 9.5 seconds. Cost dropped from $0.0045 to $0.0006 per fix.
If you're migrating from M2.7 or deciding between M3 and Flash, the per-token price is only half the story. The other half is determined by the reasoning effort setting.

From Anonymous Model to Official Release
M3.1 Flash first appeared anonymously. On September 23, it landed on OpenRouter and OpenCode under the name Space Bunny Alpha—free, 1M context, multimodal, with thinking always on. According to CellCog's timeline, it topped the OpenRouter daily chart, beating DeepSeekAd V4.1 Flash, and was the most-used model on OpenCode for five consecutive days. The community matched it to MiniMax via tokenizer before MiniMax made any official statement—X user cheaty's comparison found its text tokenizer "exactly identical to MiniMax M3," and other testers cross-validated the conclusion with 36/36 and 50/50 probe strings.
The official timeline:
| Date | Event |
|---|---|
| September 23 | Space Bunny Alpha launches on OpenRouter and OpenCode |
| September 27 | MiniMax names it M3.1-Flash-Preview, making it the default model in MiniMax Code |
| September 30 | Token PlanAd becomes M Plan, incorporating M3.1 Flash |
| October 19 | M2.5/M2.7 closed to new users; plan requests routed to M3.1 Flash |
| October 19 | minimax-m3.1-flash launches on AIHubMix with pay-per-token billing |
MiniMax's model list has now dropped the "Preview" label. The official name is MiniMax-M3.1-Flash, positioned as "a frontier multimodal coding model with a 1M context window and adjustable thinking depth." Every AIHubMix response reports this upstream name.
Tokenizer fingerprinting is a technique for identifying a model without relying on official announcements. Because different models use tokenizers with different vocabulary sizes, subword segmentation rules, and special token IDs during training, the same text produces different token counts and ID sequences across tokenizers. Researchers feed probe strings (such as words of specific lengths or punctuation combinations) into an anonymous model, count its tokens or compare the returned token IDs against the tokenizer signatures of known models, and thereby infer the anonymous model's identity with high confidence. cheaty's observation—that Space Bunny Alpha's text tokenizer is exactly identical to MiniMax M3—rests on precisely this principle, and other testers' cross-validation with 36/36 and 50/50 probe strings further rules out coincidence.
Spec Differences vs. M2.7
| Item | MiniMax M2.7 | MiniMax M3.1 Flash |
|---|---|---|
| Context window | 204,800 | 1,000,000 |
| max_tokens (recommended/max) | 65,536 / 204,800 | 131,072 / 524,288 |
| Input types | Text | Text, image, video |
| Thinking mode | Always on, no levels | Always on, five levels |
| Default thinking depth | — | max |
| Explicit cache_control | Supported, writes billed | Not supported |
| Default top_p | 0.9 | 0.95 |
| Status | Retiring November 18, 2026 | Current flagship |
What stays the same: both think on every request, both support MiniMax's Anthropic-compatible and OpenAI-compatible APIs, and both accept only tool_choice: auto.
The key new knob is reasoning effort. MiniMax's text generation guide lists five levels—low, medium, high, xhigh, and max—with max used when the field is omitted. M2.7 code doesn't send this field, so after switching models, every request runs at max effort—the most easily overlooked cost trap in migration.
reasoning_effort is a field in OpenAI-compatible APIs that controls the model's thinking depth (chain-of-thought length), typically accepting enum values like low, medium, and high, with some vendors adding more levels. It doesn't change model weights; instead, through system prompts or decoding strategies, it guides how many internal reasoning tokens the model invests before generating its final answer. For models billed by output tokens, this field directly determines cost: the higher the level, the more hidden thinking tokens the model generates, and the higher the bill and latency. M3.1 Flash extends the field to five levels and defaults to max, meaning requests that don't explicitly pass the parameter run at the deepest thinking level—a cost multiplier easily overlooked in migration code.
Price Comparison: Where Flash Is Cheaper
Price per million tokens, verified October 19. Official prices come from MiniMax's pay-as-you-go page; M3's price includes its "permanent 50% off" label.
| Model | Official input/output | AIHubMix input/output | AIHubMix cache read |
|---|---|---|---|
| MiniMax M2.7 | $0.30 / $1.20 | $0.2958 / $1.1832 | $0.05916 |
| MiniMax M3.1 Flash | Not published | $0.165 / $0.66 | $0.0165 |
| MiniMax M3 | $0.30 / $1.20 | $0.288 / $1.152 | — |
On AIHubMix, Flash is about 44% cheaper than M2.7 ($0.165 ÷ $0.2958 ≈ 0.56) and about 43% cheaper than M3 ($0.165 ÷ $0.288 ≈ 0.57), with the same ratios on the output side. M3's official price doubles once input exceeds 512K tokens, while AIHubMix lists a single flat price for Flash.
Explicit cache_control refers to the Anthropic-compatible API feature that lets callers mark specific prompt segments with cache_control to write them to the server-side cache, with subsequent requests that hit the cache billed at a discounted read price. It suits repeated prefixes like long system prompts and fixed documents and can significantly cut input costs. MiniMax M3.1 Flash doesn't support this field, but the API still automatically reports prompt_tokens_details.cached_tokens, indicating automatic prefix caching exists server-side; the difference is that callers can't manually control what gets cached or guarantee a hit. For teams relying on explicit caching to compress long-context costs, this difference needs to factor into model selection.
Hands-On: A Real Two-Bug Repair Task
Prerequisites: An AIHubMix key configured in the AIHUBMIX_API_KEY environment variable, and the openai Python SDK installed. AIHubMix's quick-start docs cover both steps.
Task design: A billing function billable_days(start, end, pauses) with two bugs—pause intervals extending past the billing period's end add an extra day, and overlapping pauses get deducted twice. The prompt describes the symptoms and asks for only the corrected function in return. A local test harness then runs 215 hidden cases. Each setting was run three times via Chat Completions on October 19. The following data comes from AIHubMix's own measurements and has not yet been reproduced by third parties.
The request code is below; cost is computed from the usage field:
import os
from openai import OpenAI
client = OpenAI(base_url="https://aihubmix.com/v1", api_key=os.environ["AIHUBMIX_API_KEY"])
PRICE_IN, PRICE_OUT, PRICE_CACHE = 0.165, 0.66, 0.0165 # AIHubMix, per 1M tokens
def run(prompt, effort=None):
extra = {"reasoning_effort": effort} if effort else {}
r = client.chat.completions.create(
model="minimax-m3.1-flash",
max_tokens=32768,
messages=[{"role": "user", "content": prompt}],
**extra,
)
u = r.usage
cached = (u.prompt_tokens_details.cached_tokens or 0) if u.prompt_tokens_details else 0
cost = ((u.prompt_tokens - cached) * PRICE_IN + cached * PRICE_CACHE
+ u.completion_tokens * PRICE_OUT) / 1e6
return r.choices[0].message.content, u.completion_tokens, cost
Results across three runs:
| Setting | Avg output tokens | Avg time | Avg cost per fix | Tests passed |
|---|---|---|---|---|
| Omit effort (= max) | 6,673 | 56 s | $0.0045 | 215/215 every time |
| effort=low | 889 | 9.5 s | $0.0006 | 215/215 every time |
The arithmetic for the default row: 464 prompt tokens (about 192 cached) plus 6,673 output tokens. (272 × $0.165 + 192 × $0.0165 + 6,673 × $0.66) ÷ 1,000,000 ≈ $0.0045. Over 1,000 such fixes, the default setting costs about $4.45 versus about $0.64 at low.
Variance is considerable: default-level output tokens ranged from 4,589 to 9,680, and time from 39 to 82 seconds. Another article in this series measured all five effort levels.
Five Failure Modes When Migrating
No effort set means max. If your client never sends the effort field, prepare for long turns and hefty thinking bills. Fix: send reasoning_effort on every request, starting with low.
You can't skip thinking. M3 can run with thinking off; Flash can't. In testing, short classification prompts consumed almost no thinking tokens (0 to 6), but zero consumption isn't guaranteed. If a code path requires guaranteed non-thinking calls, stay on M3.
No Priority tier. Flash rejects the service_tier field. If you rely on M3's Priority tier (1.5× price) for guaranteed latency, there's no equivalent here.
AIHubMix doesn't list video input yet. MiniMax's docs state video support, but AIHubMix currently lists only text and image. Base64 images and image URLs both worked in testing.
Prompts must be specific. One early Space Bunny user called it "insanely fast, but it needs clear, specific instructions or it gets lazy." Spell out the expected output and the checks the model should run.
What Can't Be Verified Yet
Quality comparison with M3. MiniMax published no benchmarks for M3.1 Flash, and Artificial Analysis hasn't listed it either. M3 has MiniMax's self-reported SWE-Bench Pro 59.0% and an Artificial Analysis Intelligence Index of 29.2. Any Flash benchmark table you see is either M3 data or unsourced.
MiniMax's own per-token price. Not published as of October 19.
Harder tasks. This task was bounded, and low sufficed. Three runs per setting can't tell you where higher effort levels start paying off.
Open weights. MiniMax says it plans to release them, but no date. M3's weights are already on Hugging Face.
SWE-Bench Pro is an extended version of the SWE-Bench family, used to evaluate a model's ability to resolve issues in real software repositories. Compared with the original SWE-Bench, it broadens task sources and difficulty coverage, requiring the model to locate defects in a given repository, modify code, and make hidden tests pass, with the pass rate as the score. The benchmark is widely used for head-to-head comparisons of coding models, but scores are typically run and published by vendors themselves, and reproduction conditions (such as whether retries are allowed or the test harness version) affect comparability. The article notes that M3's SWE-Bench Pro 59.0% is self-reported by MiniMax, while Flash has no corresponding data, so it can't be used to judge the quality gap between the two on real repair tasks.
Should You Switch?
M Plan / Token Plan users on M2.5 or M2.7: You're already in it—MiniMax rerouted model names starting today. Re-run your evals with the effort setting included.
Pay-as-you-go M2.5 or M2.7 users: You have until November 18. On AIHubMix, change the model ID and add reasoning_effort.
Teams building coding agents on M3: Try Flash's low/medium levels on a small slice of traffic. AIHubMix's comparison page shows both price cards, and the model page has the ID and endpoint.
When to stay on M3: You need open weights, switchable thinking, independent benchmark data, or the Priority tier.
Related articles

Chain of Thought Isn't Just for AI: How Humans Can Use CoT to Improve Thinking Quality
Chain of Thought isn't just a prompt trick for large models. Starting from a Hacker News discussion, this article analyzes why CoT works for human thinking too, breaks down actionable ways to transfer it, and highlights the key differences between human CoT and machine CoT.
Cloudflare Teams Up with OpenAI: Closi…
Cloudflare Teams Up with OpenAI: Closing the Loop from Vulnerability Discovery to Defense with AI
Cloudflare uses OpenAI Daybreak to investigate security vulnerabilities and generate reviewable remediation plans, while developers use Codex to boost coding efficiency and quality.

Orca Multi-Agent Orchestration in Practice: A Guide to Parallel Collaboration with Claude and Codex
Orca is Stable AI's free open-source agent workbench supporting 34 agents like Claude Code and Codex in parallel. Learn its Git worktree isolation, multi-model orchestration, and mobile management.