MIMO 2.5 PRO API

Fix the MiMo 2.5 Pro API connection one field at a time

A working request needs the right Xiaomi host, the api-key header, the exact model ID, and a request body MiMo accepts. This guide starts with failure symptoms, then checks thinking, streaming, context, and provider routing in a fixed order.

Jump to the API contract

Official docs checked 2026-08-27. MiMo-V2.5-Pro is not currently listed in Tabbit's model picker, so Tabbit is presented as a separate supported-model route.

Tabbit desktop browser new-tab screen with a central chat prompt and a right-side Chat panel.

WHAT THE OFFICIAL DOCS SAY

Most failed calls are contract mismatches

Xiaomi documents two base URL families, one model ID, and both OpenAI and Anthropic compatibility. Community reports add clues about provider rejection and calls that spend input tokens without returning useful output. Those reports are debugging leads, not service guarantees.

01

Host and credential

Pay-as-you-go OpenAI requests use https://api.xiaomimimo.com/v1 and an api-key header. Token Plan uses its dedicated host and tp-xxxxx credential.

02

Model and body

The official example uses model mimo-v2.5-pro and /chat/completions. Keep messages valid before changing sampling or agent fields.

03

Reasoning is state

Deep thinking returns reasoning_content. In a tool-call conversation, Xiaomi says to pass the complete field back in later assistant messages or the API can return 400.

THE SMALLEST KNOWN-GOOD REQUEST

Start with curl before tuning an SDK

This is the official OpenAI-compatible shape, reduced to the fields that identify the route. Set the key in your shell, never in a committed file.

COPYABLE BASELINE

curl --location --request POST 'https://api.xiaomimimo.com/v1/chat/completions' \
--header "api-key: $MIMO_API_KEY" \
--header "Content-Type: application/json" \
--data-raw '{"model":"mimo-v2.5-pro","messages":[{"role":"user","content":"Hello"}],"max_completion_tokens":1024,"stream":false}'

The official docs also show max_completion_tokens, temperature 1.0, top_p 0.95, stream false, and penalty fields. Deep thinking can force the recommended sampling defaults.

  1. 01

    Choose the account route

    For pay-as-you-go, use https://api.xiaomimimo.com/v1. For Token Plan, replace it with the exclusive Base URL shown after subscription.

  2. 02

    Send Xiaomi authentication

    Use api-key: $MIMO_API_KEY and Content-Type: application/json. Do not assume that every OpenAI client will translate Authorization into the documented header.

  3. 03

    Use the exact ID

    Set model to mimo-v2.5-pro. A provider gateway may expose a different slug, so copy the gateway model ID from its current catalog.

  4. 04

    Add one user turn

    Begin with messages containing a single user message. Add tools, thinking, and streaming after this request returns a valid completion.

THINKING, STREAMING, CONTEXT

Three controls that change the response shape

Use the API behavior as your test oracle. A blank final answer may be a client that reads only content while the useful text is still arriving in reasoning_content, or a budget consumed by thinking.

01

thinking.type

Send {"type":"enabled"} or {"type":"disabled"}. Xiaomi lists both mimo-v2.5-pro and mimo-v2.5 as enabled by default. In the Python SDK, put this non-standard field in extra_body.

02

stream and finish

With streaming enabled, reasoning_content chunks arrive first, then content chunks. Accumulate both streams, stop on finish_reason, and handle the final usage chunk before [DONE].

03

Context and budget

Do not guess an undocumented context-window number. Keep the complete messages array within the current model and account limit. max_completion_tokens covers thinking plus the final answer, so a long thought can leave little answer room.

In deep thinking, Xiaomi says custom temperature and top_p are not effective. Their recommended values are 1.0 and 0.95. If a client insists on sending those fields, inspect the actual server response rather than assuming the custom value won.

ROUTE DIFFERENCES

Official API, Token Plan, and gateways are different contracts

OpenAI compatibility describes the request style, not billing, model aliases, headers, quotas, moderation, or stream behavior. Record the host and provider with every failed request.

CheckXiaomi officialGateway or custom provider
OpenAI basehttps://api.xiaomimimo.com/v1Use the provider's current base URL
Token Planhttps://token-plan-cn.xiaomimimo.com/v1 with tp-xxxxxUsually not interchangeable with a pay-as-you-go key
Model fieldmimo-v2.5-proCopy the exact current provider slug
Authapi-key: MIMO_API_KEYFollow the gateway header and key format
Limits and policyCheck Xiaomi account usage and API consoleCheck provider quota, moderation, RPM, TPM, and concurrency

STATUS CODE CHECKLIST

Use the response code to narrow the search

Change one variable at a time. Save the request host, model, response body, and timestamp before retrying.

400

Malformed body, unsupported field, invalid messages, or a tool-call history that omits reasoning_content.

Replay the smallest request. Check JSON, model, messages, thinking placement, and complete reasoning_content pass-through.

401

The key is absent, expired, copied with the wrong prefix, or sent in the wrong header.

Load the intended key from an environment variable and use the documented api-key header. Never print the secret.

403

The account or route is not allowed, or a gateway policy rejected the request.

Confirm Xiaomi account access, plan host, model entitlement, provider policy, and moderation result.

404

Host path or model alias does not exist at this route.

Check /v1/chat/completions, the exact base URL, and the current model catalog. Do not append /v1 twice.

429

Rate, token, concurrency, or account quota was exceeded.

Inspect usage and limits in the active console or provider. Back off with jitter and reduce parallel calls.

EMPTY

The request returns quickly but content is empty, or a stream appears to hang.

Log each delta, including reasoning_content and finish_reason. Raise max_completion_tokens, verify stream parsing, and test with thinking disabled.

A BROWSER PATH WHEN YOU DO NOT NEED AN API

Use Tabbit for the question, not the credential plumbing

The current Tabbit picker does not list MiMo-V2.5-Pro. That means there is no honest one-click MiMo integration to promise here. If your goal is research, page understanding, or a multi-model answer, choose a model that is actually listed in Tabbit and keep the API debugging separate.

Tabbit new-tab model picker showing currently listed GPT, Gemini, and Claude models.
01

Pick a listed model

The model picker is visible on a new tab. Use a currently available model without creating a Xiaomi key or copying a base URL.

Tabbit multi-model chat showing five supported model responses side by side.
02

Bring the page context

Ask about the current page or reference pages and files from the browser prompt. This solves a different problem from sending a raw API request.

Tabbit Deep Research view with Google results and an execution-steps sidebar.
03

Compare answers

Tabbit can place supported model replies side by side, then you can use Deep Research to collect sources and execution steps.

WHICH PATH FITS?

API control versus browser context

MiMo through Xiaomi is the right tool when you own the integration. Tabbit is the shorter path when you want to read and work with web pages using a supported model.

NeedMiMo APITabbit
CredentialsCreate and protect a Xiaomi or provider keyUse the models exposed in the picker
Request controlChoose host, model, body, thinking, tools, and streamAsk from the browser context
Tool-call statePersist assistant reasoning_content correctlyNo raw API message replay required
Web researchBuild search, fetch, and citation plumbingUse browser pages and Deep Research flow

MIMO API FAQ

Questions that usually appear after the first failed call

What is the official MiMo 2.5 Pro endpoint?+

For pay-as-you-go OpenAI compatibility, Xiaomi documents https://api.xiaomimimo.com/v1 and the /chat/completions path. Token Plan has a separate Base URL.

Which API key header does Xiaomi document?+

The official curl uses api-key: $MIMO_API_KEY. Keep the key in an environment variable and confirm whether a gateway documents another header.

What model ID should I send?+

The Xiaomi example uses mimo-v2.5-pro. A gateway can publish another alias, so use the exact ID in that provider catalog.

How do I turn deep thinking on or off?+

Send thinking.type as enabled or disabled. In the OpenAI Python SDK, place the non-standard field in extra_body. Xiaomi says both V2.5 models default to enabled.

Why is my final answer empty or slow?+

Thinking can consume the completion budget and add latency. In a stream, reasoning_content arrives before content. Accumulate both, set enough max_completion_tokens, and verify finish_reason.

Why does a later tool call return 400?+

When deep thinking and tool calls are used, Xiaomi requires the full prior reasoning_content in the assistant message passed to the next request. Missing it can make context incomplete.

Does MiMo have a fixed context window I can copy into my client?+

Do not copy an undocumented number from a third-party page. Check the current Xiaomi model and account limits, then leave room for thinking and final output.

Can I use MiMo-V2.5-Pro directly in Tabbit?+

The current Tabbit picker does not list it. Use Xiaomi or a gateway for the API, or choose a model currently listed in Tabbit for browser research and page tasks.

Ready to stop guessing at the next 400?

Replay the minimal Xiaomi request, then add thinking, tools, and streaming one field at a time. For browser work, use a supported Tabbit model without setting up an API key.

Available model access and provider limits can change. Recheck the official docs before shipping.

© 2026 Tabbit Browser. The AI-native browser that understands your context.