DEV Community

Cover image for MiniMax M3.1 Flash (ex-Space Bunny) on the API: Specs, Price, and a Measured Bug-Fix Cost
AIHubMix
AIHubMix

Posted on

MiniMax M3.1 Flash (ex-Space Bunny) on the API: Specs, Price, and a Measured Bug-Fix Cost

Result first: MiniMax M3.1 Flash is now callable per token on AIHubMix as minimax-m3.1-flash ($0.165 input / $0.66 output per million tokens). On a two-bug fix in one Python function, it passed all 215 hidden tests at both settings we compared. Left at its default effort, it averaged 6,673 output tokens and 56 seconds per fix. At reasoning_effort="low" it averaged 889 tokens and 9.5 seconds. That's $0.0045 vs $0.0006 per fix.

If you're switching from M2.7 (MiniMax already reroutes plan traffic) or evaluating it against M3, the per-token price is only half the story. The effort setting decides the other half.

What this model is

M3.1 Flash first shipped anonymously. On 23 September it appeared on OpenRouter and OpenCode as Space Bunny Alpha: free, 1M context, multimodal, thinking always on. According to CellCog's timeline it topped OpenRouter's daily chart ahead of DeepSeek V4.1 Flash and stayed OpenCode's most-used model for five days. The community matched it to MiniMax through the tokenizer before MiniMax said anything. cheaty's comparison on X found the text tokenizer "perfectly matches that of the MiniMax M3", and other testers matched 36/36 and 50/50 probe strings.

Timeline:

Date (2026) Event
23 Sep Space Bunny Alpha live on OpenRouter and OpenCode
27 Sep MiniMax names M3.1-Flash-Preview, default in MiniMax Code
30 Sep Token Plan becomes M Plan, includes M3.1 Flash
19 Oct M2.5/M2.7 closed to new users; plan requests routed to M3.1 Flash
19 Oct minimax-m3.1-flash live on AIHubMix, pay per token

MiniMax's model list now drops the "Preview" label and calls it MiniMax-M3.1-Flash, a "frontier multimodal coding model with 1M context window and tunable thinking depth." Every AIHubMix response reports that upstream name.

Spec diff vs M2.7

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 Text Text, image, video
Thinking 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 Retires 18 Nov 2026 Current

Unchanged: both think on every request, both speak MiniMax's Anthropic-compatible and OpenAI-compatible APIs, and both accept only tool_choice: auto per MiniMax's API reference.

The new knob is effort. MiniMax's text generation guide lists low, medium, high, xhigh, and max, and the model uses max when the field is omitted. M2.7 code doesn't send this field, so after a model swap, every request runs at max.

Price table

Per million tokens, checked 19 October 2026. Official prices are from MiniMax's pay-as-you-go page; M3's includes MiniMax's "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% below M2.7 ($0.165 ÷ $0.2958 ≈ 0.56) and about 43% below M3 ($0.165 ÷ $0.288 ≈ 0.57); output follows the same ratio. M3's official price doubles above 512K input tokens, while AIHubMix lists one flat price for Flash.

Measuring a real task

Prerequisites: an AIHubMix key in AIHUBMIX_API_KEY, and the openai Python SDK. The AIHubMix quick start covers both.

Task: a billing function billable_days(start, end, pauses) with two bugs. A pause that runs past the period end double-counts one day, and overlapping pauses are subtracted twice. The prompt describes the symptoms and asks for the corrected function only. A local harness then runs 215 hidden cases. Each setting ran three times through Chat Completions on 19 October 2026. These are AIHubMix's own measurements, not yet reproduced by anyone else.

The request, with cost computed from usage:

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
Enter fullscreen mode Exit fullscreen mode

Results (3 runs each):

Setting Avg output tokens Avg time Avg cost per fix Tests passed
Effort omitted (= max) 6,673 56 s $0.0045 215/215 every run
Effort low 889 9.5 s $0.0006 215/215 every run

Here is the arithmetic for the default row: 464 prompt tokens, about 192 of them cached, plus 6,673 output tokens. (272 × $0.165 + 192 × $0.0165 + 6,673 × $0.66) ÷ 1,000,000 ≈ $0.0045. Per 1,000 such fixes, that's about $4.45 at the default and $0.64 at low.

Variance was large: the default ranged from 4,589 to 9,680 output tokens, and from 39 to 82 seconds. The effort post in this series has all five levels.

Failure modes when you switch

  • Unset effort means max. If your client never sends an effort field, expect long turns and thinking-heavy bills. Fix: send reasoning_effort (Chat Completions) on every request; start at low.
  • No way to skip thinking. M3 can run without thinking; Flash can't. Short classification prompts spent almost nothing (0 to 6 thinking tokens) in our runs, but zero isn't guaranteed. If a code path needs a guaranteed non-thinking call, keep it on M3.
  • No Priority tier. Flash rejects the service_tier field. If you relied on M3's Priority tier (1.5× price) for latency, there's no equivalent here.
  • Video isn't on AIHubMix's listing yet. MiniMax documents video input; AIHubMix currently lists text and image. Base64 images and image URLs both worked in our tests.
  • Prompts need to be specific. An early Space Bunny user called it "insanely fast, but it needs clear and specific instructions, otherwise it's too lazy." Spell out the expected output and the checks the model should run.

What we can't verify

  • Quality against M3. MiniMax published no benchmark for M3.1 Flash, and Artificial Analysis has no entry for it. M3 has MiniMax's self-reported 59.0% on SWE-Bench Pro and an Artificial Analysis Intelligence Index of 29.2. Any Flash benchmark table you see is either M3's or unsourced.
  • MiniMax's own per-token price. Not published as of 19 October 2026.
  • Harder tasks. Our task was bounded, and low was enough. Three runs per setting can't tell you where higher effort starts paying off.
  • Open weights. MiniMax says it plans to release them, with no date. M3's weights are on Hugging Face.

Should you switch

  • M Plan / Token Plan users on M2.5 or M2.7: you already have; MiniMax reroutes the names starting today. Re-run evals and add an effort setting.
  • Pay-as-you-go users on M2.5 or M2.7: you have until 18 November. On AIHubMix, change the model ID and add reasoning_effort.
  • Teams on M3 for coding agents: try Flash at low/medium on a slice of traffic. AIHubMix's compare page shows both price cards, and the model page has the ID and endpoints.
  • Stay on M3 if you need open weights, thinking off, independent benchmarks, or the Priority tier.

Keep reading: the MiniMax M3.1 Flash series

Sources

Top comments (0)