MiMo is Xiaomi's model family — the general mimo-v2.5 and the Pro tier, documented with 1M-token context windows and native OpenAI- and Anthropic-format surfaces. Through DaoXE you call /v1/chat/completions with a MiMo ID from GET /v1/models under the same key as every other family — which exact MiMo IDs your account carries is a live-list question, not a given. Cost routing: cheapest APIs guide.
Call MiMo through DaoXE#
Chat path: /v1/chat/completions with Authorization: Bearer. MiMo thinks by default: the vendor documents thinking (enabled/disabled) with enabled as the factory state for the current v2.5 IDs. Sampling is locked while thinking — custom temperature/top_p are forced to the vendor's recommended 1.0/0.95 — and max_completion_tokens is the cap that covers thinking and answer.
curl --fail-with-body --show-error --silent \
https://daoxe.com/v1/chat/completions \
-H "Authorization: Bearer ${DAOXE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_EXACT_MODEL_ID",
"max_tokens": 64,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}'# MiMo reasoning IDs think by DEFAULT, lock temperature/top_p, and 400 if a
# tool-call round drops reasoning_content. max_completion_tokens (not max_tokens)
# is the cap that covers thinking + answer.
from openai import OpenAI
client = OpenAI(base_url="https://daoxe.com/v1", api_key="YOUR_DAOXE_KEY")
r = client.chat.completions.create(
model="YOUR_EXACT_MODEL_ID", # a mimo-* id from GET /v1/models
messages=[{"role": "user", "content": "2+2? Think briefly, then answer."}],
max_completion_tokens=2048, # thinking + answer share this budget
# thinking is ON by default; to opt out explicitly:
extra_body={"thinking": {"type": "disabled"}}, # non-standard: extra_body
)
msg = r.choices[0].message
print(getattr(msg, "reasoning_content", None)) # thinking trace
print(msg.content) # final answer
print(r.usage.completion_tokens_details.reasoning_tokens) # thinking spend
How MiMo exposes reasoning#
MiMo puts the trace in a dedicated reasoning_content field on the message — the same shape as DeepSeek — while usage.completion_tokens_details.reasoning_tokens reports the spend. Two twists make it the strictest of the reasoning families: thinking is ON unless you send thinking: {"type": "disabled"}, and the multi-turn contract is enforced, not advisory — a tool-call round that drops reasoning_content gets a 400, where DeepSeek-style APIs degrade or the docs merely warn. Whether a given relay path forwards the non-standard thinking field and preserves reasoning_content is exactly the kind of thing to verify — one test call before you commit a client.
MiMo-specific notes#
- Thinking is the default, not the opt-in. The
thinkingfield ({"type": "enabled"}/{"type": "disabled"}) is non-standard — send it via your SDK's extra-body — and omitting it leaves thinking ON for the v2.5 IDs. Clients that assume a plain-text answer should disable it explicitly or parsereasoning_content. - Dropping reasoning_content 400s in tool loops. The vendor is blunt: in multi-turn agent conversations with tool calls, every echoed assistant message must carry its
reasoning_contentback, or the API returns a 400 error. It names the affected clients by protocol — Cursor, Roo Code, Codex, Zed, Goose and friends on the OpenAI side; OpenCode, Kilo Code and friends on the Anthropic side. Build history from raw message objects, never from a trimmed summary. - Sampling params are accepted but ignored while thinking. Custom
temperature/top_pdo not error — they are silently forced to 1.0/0.95. Tuning them on a thinking request is a no-op, so stop cargo-culting them. - max_completion_tokens, not max_tokens, owns the budget. The cap spans thinking plus answer, so an undersized cap truncates the answer after a long think. Exact IDs always come from
GET /v1/models.
What it costs#
One balance, one top-up rate
Top-up runs at a flat 1 RMB = $1 of credit on every payment method, and each model then bills at its own USD rate — live per-model rates are on the live pricing page. That rate is the same on Alipay, WeChat Pay, USDT, bank card (Visa · Mastercard), Apple Pay and Google Pay — one balance, shared by every model in the catalog, with no plan to choose and no monthly minimum. Rates are account-scoped and do change, so confirm with one small top-up rather than trusting a number in a guide.
Verify you actually get the model#
Prove the endpoint works before blaming the client — if this fails, no setting will fix it:
export DAOXE_API_KEY="your_api_key"
# List the exact model IDs your account can call
curl --fail-with-body --show-error --silent \
https://daoxe.com/v1/models \
-H "Authorization: Bearer ${DAOXE_API_KEY}"Confirm connectivity, then diff a fixed prompt at temperature-equivalent settings (MiMo enforces its own while thinking) against the official MiMo API to make sure the tier matches:
Verify us — don't trust us
Point the open benchmark at DaoXE and at the official API and compare at temperature 0. Then learn to detect model swapping so a cheaper endpoint can't quietly swap you to a smaller model.
Frequently asked questions#
How do I turn MiMo thinking off?
Send thinking with {"type": "disabled"} in the request body. It's a non-standard field — use your SDK's extra-body option. Omitting it leaves thinking ON for the current v2.5 IDs.
Why did my agent get a 400 mid-conversation?
In multi-turn tool use, every echoed assistant message must include its reasoning_content. If your framework trims that field when rebuilding history, the API rejects the request — rebuild history from raw message objects.
Why is my temperature setting ignored?
While thinking is on, MiMo forces temperature/top_p to its recommended defaults (1.0/0.95). The parameter is accepted but overridden — no error, no effect.
How much does MiMo cost here?
Per-model, account-scoped — see live pricing. Top-up is a flat 1 RMB = $1 of credit on every payment method.
Try DaoXE — and benchmark it yourself
One key for GPT, Claude, Gemini, DeepSeek and more. Point the open benchmark at us and compare — don't take our word for it.