MiMo V2.6 Pro Review: Coding, Tool Calls and Cost
Six fixed tasks, one attempt each: Flash passed all six, Pro four.
On this page
- How we tested
- Results at a glance
- The six tasks
- 1. Retry-After parser
- 2. Usage roll-up
- 3. Merge Windows
- 4. Order lookup tool
- 5. Shipping quote tool
- 6. Purchase extraction
- Speed and cost
- Which one should you use?
- Run one task yourself
- Frequently asked questions
- Is MiMo V2.6 Pro better than Flash?
- How much does MiMo V2.6 Pro cost?
- Why did Pro fail the Retry-After task?
- Can Pro call tools reliably?
- Do I need to change code written for MiMo V2.5?
- Sources checked
- Update log
In six small coding and tool-call tasks run on November 9, 2026, MiMo V2.6 Flash passed all six and MiMo V2.6 Pro passed four. Both of Pro's misses were strictness slips, Pro costs about 3.1 times as much per token, and neither model was consistently faster. For short jobs like these, start with Flash.
- Flash passed all six tasks; Pro passed four. Pro's misses were a date it should have rejected and a correct JSON answer wrapped in a Markdown fence.
- Pro costs about 3.1 times as much per token. The six-task run came to under $0.01 on Pro and under $0.003 on Flash at Xiaomi's official rates.
- For short jobs, start with Flash, and run your own harder tasks on Pro before paying the premium.
How we tested
For this MiMo V2.6 Pro review, we sent six fixed tasks to mimo-v2.6-pro and mimo-v2.6-flash on November 9, 2026, through OmniaKey's OpenAI-compatible endpoint, https://api.omniakey.com/v1/chat/completions. Both models got thinking: {"type": "enabled"}, max_completion_tokens: 4096 and no temperature or top_p. Every answer ended with finish_reason stop.
The six prompts were frozen before the first call, and each task got one answer per model. Weak answers were never retried. Code answers ran in a locked-down local sandbox against hand-written test cases that neither model saw, the approach we also used in our Gemini 4 Argon coding test.
The two tool tasks ran as two requests each: the model asked for a tool, we returned a fixed mock result, then it wrote the final answer. All order and shipping data was simulated and read-only; nothing was ordered, cancelled or booked.
Times are end-to-end seconds through the API from a single run, and tool tasks count both requests. Costs are estimates at Xiaomi's official uncached rates, not OmniaKey prices or invoices; output tokens include reasoning tokens. OmniaKey sells both models, and these tests ran through its API.
A test of six small tasks, one answer each, on one day says little about long-context work, large repositories or multi-hour agent runs.
One Pro call, the Merge Windows task, returned nothing before the connection timed out after about two minutes. Resent with "stream": true, it answered; Flash ran that task streamed as well. Stream long thinking requests, so a proxy does not cut the connection while the model is still thinking.
Results at a glance
| Task | Pro | Flash |
|---|---|---|
| Retry-After parser | Fail, 14 of 15 | Pass, 15 of 15 |
| Usage roll-up | Pass, 9 of 9 | Pass, 9 of 9 |
| Merge Windows | Pass, 11 of 11 | Pass, 11 of 11 |
| Order lookup | Pass | Pass |
| Shipping quote | Fail (format) | Pass |
| Purchase extraction | Pass | Pass |
A pass means every check passed. Pro's two misses both came on tasks where a strict rule was written into the instruction.
Two other low-cost models have been through similar fixed-task sets here: the DeepSeek V4.1 Flash 1017 review and the MiniMax M3.1 Flash review. Their tasks differ from these six, so read them for method and behaviour rather than as a ranking against MiMo.
The six tasks
Each task below shows the prompt both models received, word for word, then what each model did with it.
1. Retry-After parser
What matters here is strict input validation: the function has to reject what an HTTP date does not allow.
Prompt:
Write Python 3.9 standard-library code defining retry_after_seconds(value, now). Return only a Python code block, with no demo or printing. value is a string HTTP Retry-After header. now is a datetime; raise ValueError if now is naive. Strip surrounding whitespace. Accept nonnegative ASCII decimal integer seconds, or an RFC 1123 date such as Mon, 09 Nov 2026 12:00:05 GMT. Return an integer number of seconds until the date, rounded up, clamped to zero for a past date. Reject signs, decimals, Unicode digits, empty strings and invalid dates by returning None. Handle aware now values in any timezone. Do not use the current clock or mutate inputs.
- MiMo V2.6 Pro (33.2 s): failed 14 of 15 cases. It accepted
"Mon, 09 Nov 2026 12:00:00", a date with noGMTzone, parsed it withemail.utils.parsedate_to_datetime, treated the missing zone as UTC and returned0. - MiMo V2.6 Flash (38.2 s): passed 15 of 15 and returned
Nonefor the same string.
Result: Flash. An RFC 1123 HTTP date ends in GMT, so this case expects None; Pro accepted a date it should have rejected.
2. Usage roll-up
This one mixes deduplication, integer arithmetic and insertion order, and it checks that the input stays untouched.
Prompt:
Write Python 3.9 standard-library code defining summarize_usage(events). Return only a Python code block, with no demo or printing. Each event is a valid dict with event_id (string), project (string), kind (charge or refund), and micro_usd (nonnegative integer). Deduplicate by event_id: only the LAST record in input order counts, even if it changes project or kind. Sum charges minus refunds per project using integers. Include every project present in the retained records even if its total is zero or negative. Return a dict inserted in sorted project-name order. Empty input returns . Do not mutate the input list or its dicts.
- MiMo V2.6 Pro (5.5 s): passed 9 of 9.
- MiMo V2.6 Flash (3.2 s): passed 9 of 9.
Both kept only the last record per event_id, summed charges minus refunds as integers, kept zero and negative project totals, returned sorted keys and left the input as it was.
Result: Tie.
3. Merge Windows
The hard part is time zones: reject timestamps with no offset, convert the rest to UTC, and merge windows that touch or nest.
Prompt:
Write Python 3.9 standard-library code defining merge_windows(windows). Return only a Python code block, with no demo or printing. windows is a list of two-item (start,end) sequences containing ISO 8601 timestamps at whole-second precision, with Z or an explicit timezone offset. Reject a timestamp without an offset with ValueError. Convert endpoints to UTC. Reject end earlier than start with ValueError; ignore zero-length windows. Merge overlapping OR exactly touching windows, including duplicates and nested windows. Return a list of (start,end) tuples sorted by start, with both strings formatted YYYY-MM-DDTHH:MM:SSZ. Empty input returns []. Do not mutate inputs.
- MiMo V2.6 Pro (9.2 s): passed 11 of 11.
- MiMo V2.6 Flash (9.6 s): passed 11 of 11.
Both rejected timestamps without an offset, converted offsets to UTC, merged touching and nested windows, skipped zero-length windows and returned YYYY-MM-DDTHH:MM:SSZ tuples. Pro's 9.2 seconds is the streamed answer; the timed-out first try is not counted.
Result: Tie.
4. Order lookup tool
Here the model has to pick the read-only tool, pass the right argument and copy the values from the result.
Prompt:
Where is order OA-1042? Use the available tool to look up its status and delivery date. Do not cancel the order or change its address. After the tool result, return only JSON with keys order_id, status, eta; copy those values from the tool result. Call at most one tool.
Three tools were offered: read_order, cancel_order and update_shipping_address.
- MiMo V2.6 Pro (4.3 s): called only
read_orderwith{"order_id": "OA-1042"}. - MiMo V2.6 Flash (6.0 s): the same call and the same argument.
Both returned {"order_id":"OA-1042","status":"in_transit","eta":"2026-11-12"}, copied from the mock result, and neither touched the two tools that would change the order.
Result: Tie.
5. Shipping quote tool
This task adds a unit conversion and a strict output rule: quote only, grams, JSON only.
Prompt:
Get a shipping quote for a parcel weighing 1.25 kg, from ZIP 10001 to ZIP 94105, using express service. Use the quote tool, not the booking tool. Do not buy a label. After the tool result, return only JSON with keys price_usd and delivery_days, copying the returned numeric values. Call at most one tool.
The two tools were quote_shipping, which takes the weight in grams, and book_shipment.
- MiMo V2.6 Pro (5.9 s): called
quote_shippingwith{"origin_zip": "10001", "destination_zip": "94105", "weight_g": 1250, "service": "express"}, then wrapped the answer in a Markdownjsonblock. - MiMo V2.6 Flash (4.9 s): the same call and arguments, and raw JSON back.
Both converted 1.25 kg to 1250 g correctly and both returned the right values, 18.75 and 2 days. Flash's reply parsed as JSON. Pro's reply was the same JSON with a fence around it, so a strict parser rejects it.
Result: Flash on the instruction. The call and the numbers were right; only the wrapping broke the rule, and a reader can strip fences in code.
6. Purchase extraction
The last task is text to JSON: apply corrections in order, drop the cancelled item, and invent nothing.
Prompt:
Extract the final purchase request below. Return raw JSON only, with exactly customer, items, shipping, promo_code as keys. customer is a string; items is an array of objects with exactly sku and quantity; shipping is express or standard; promo_code is a string or null. Later corrections override earlier values. Sort items by sku. Remove canceled items. Do not infer a promo code. Text: Customer: Alex Rivera. Order two units of SKU B-20 and one of SKU A-10. Ship express. Correction: make B-20 three units. Add one C-30. Cancel A-10. Final change: standard shipping. No promo code was provided.
- MiMo V2.6 Pro (2.9 s): passed.
- MiMo V2.6 Flash (3.5 s): passed.
Both returned {"customer":"Alex Rivera","items":[{"sku":"B-20","quantity":3},{"sku":"C-30","quantity":1}],"shipping":"standard","promo_code":null}. Both applied the three-unit correction, removed the cancelled A-10 and left the promo code null.
Result: Tie.
Speed and cost
No consistent speed winner showed up: the median was 5.7 seconds for Pro and 5.5 for Flash, and single runs through a gateway are noisy.
| Task | Pro | Flash |
|---|---|---|
| Retry-After parser | 33.2 | 38.2 |
| Usage roll-up | 5.5 | 3.2 |
| Merge Windows | 9.2 | 9.6 |
| Order lookup tool | 4.3 | 6.0 |
| Shipping quote tool | 5.9 | 4.9 |
| Purchase extraction | 2.9 | 3.5 |
| Median | 5.7 | 5.5 |
Seconds, end to end, one run; tool tasks count both requests.
Token use and cost differ most on the two long coding tasks. On Retry-After, Pro used 2,851 output tokens against Flash's 3,697 and still cost more than twice as much, about $0.003 against about $0.001, because each Pro token costs 3.1 times as much. On Merge Windows, Pro wrote about three times as many output tokens as Flash, so its cost was several times higher.
| Run | Pro | Flash |
|---|---|---|
| Retry-After | about $0.003 | about $0.001 |
| Merge Windows | about $0.002 | about $0.0003 |
| All six tasks | under $0.01 | under $0.003 |
Xiaomi's overseas pay-as-you-go rates, in US dollars per 1 million tokens (price page, checked November 9, 2026):
| Model | Input | Output |
|---|---|---|
| MiMo V2.6 Pro | $0.435 | $0.87 |
| MiMo V2.6 Flash | $0.14 | $0.28 |
The input rate is the uncached one; cached input costs less on both models. Reasoning tokens are counted at the output rate: completion_tokens already includes them, and Xiaomi's price table has no separate reasoning-token rate.
Which one should you use?
Start with Flash for short coding, extraction and tool-call jobs. It passed every check in this set at about a third of Pro's per-token price.
Pro is not out of the running. Its two misses were a validation edge case and a Markdown fence, not wrong logic: on the shipping task the call, arguments and numbers were all correct. Xiaomi's own model card (September 22, 2026) puts Pro 4.0 points ahead of Flash on DeepSWE v1.1 (71.9 against 67.9) and 3.3 points ahead on Toolathlon-Verified (76.9 against 73.6). Those are vendor-run scores on agent tasks far larger than these six, and they are the reason to try Pro on your own hardest work before skipping it.
Both models shipped in the V2.6 series Xiaomi released on September 22, 2026 (release page).
If you still call mimo-v2.5-pro or mimo-v2.5, change the IDs: Xiaomi started sending those calls to the V2.6 models on October 14, 2026 and retired both IDs on October 21, 2026 (deprecation page).
The fair next test is one you already know the answer to. Take five tasks from your own code, send the same prompts to both models once each, and compare checks first, then time, then cost.
Run one task yourself
The call below sends the extraction prompt from task 6 to Flash with the settings used in the tests. OmniaKey's OpenAI-compatible endpoint takes your key from OMNIAKEY_API_KEY.
curl https://api.omniakey.com/v1/chat/completions \
-H "Authorization: Bearer $OMNIAKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mimo-v2.6-flash",
"thinking": {"type": "enabled"},
"max_completion_tokens": 4096,
"stream": false,
"messages": [
{"role": "user", "content": "Extract the final purchase request below. Return raw JSON only, with exactly customer, items, shipping, promo_code as keys. customer is a string; items is an array of objects with exactly sku and quantity; shipping is express or standard; promo_code is a string or null. Later corrections override earlier values. Sort items by sku. Remove canceled items. Do not infer a promo code. Text: Customer: Alex Rivera. Order two units of SKU B-20 and one of SKU A-10. Ship express. Correction: make B-20 three units. Add one C-30. Cancel A-10. Final change: standard shipping. No promo code was provided."}
]
}'
Change model to mimo-v2.6-pro for the other one, and add "stream": true when you expect a long thinking run. Model details are on the MiMo V2.6 Pro and MiMo V2.6 Flash pages, and current rates are on the pricing page.
Frequently asked questions
Is MiMo V2.6 Pro better than Flash?
On the six tasks in this MiMo V2.6 Pro review, Flash did better: it passed 6 of 6 and Pro passed 4 of 6, at about 3.1 times the price per token. Xiaomi's own scores put Pro ahead on larger agent tasks, so run Pro on your hardest work before paying for it.
How much does MiMo V2.6 Pro cost?
Xiaomi charges $0.435 per 1 million uncached input tokens and $0.87 per 1 million output tokens on its overseas realtime rates (checked November 9, 2026). Flash is $0.14 and $0.28. Our six tasks cost under $0.01 on Pro.
Why did Pro fail the Retry-After task?
It accepted "Mon, 09 Nov 2026 12:00:00", a date with no time zone. It treated the missing zone as UTC and returned 0, while the prompt asked for None for anything that is not a valid RFC 1123 date.
Can Pro call tools reliably?
In both tool tasks it picked the read-only tool and the right arguments, and the order and shipping values were correct. On the shipping quote it returned the right numbers inside a Markdown fence, which broke the instruction to return only JSON.
Do I need to change code written for MiMo V2.5?
Yes, if you still send the old IDs. Xiaomi retired mimo-v2.5-pro and mimo-v2.5 on October 21, 2026, after sending those calls to the V2.6 models from October 14, 2026. The V2.6 IDs are mimo-v2.6-pro, mimo-v2.6-flash and mimo-v2.6-pro-ultraspeed.
Sources checked
- MiMo model release page
- MiMo deprecation page
- MiMo pay-as-you-go pricing
- MiMo-V2.6-Pro-RL model card
All checked on November 9, 2026.
Update log
- November 9, 2026: First published. Six tasks run on November 9, 2026 UTC, one answer per task per model.
Models in this article
Related articles
MiniMax M3.1 Flash Review: Benchmarks, Speed and How It Compares to M3
Half M3's price per token and a higher index score, but it always thinks. We ran both side by side on five calls.
DeepSeek V4.1 Flash 1017 Review: What Changed, Tested vs V4 Pro
Same ID, same price, higher scores. We ran it against V4 Pro.
Gemini 4 Argon coding test: eight tasks, hidden tests
Eight tasks, one call each, hidden tests: time, cost and the one failure.