MiMo on RunAPI
Use OpenAI-compatible Chat Completions at https://runapi.ai/v1 as the primary
protocol. Keep the exact public model identity throughout the request.
Primary protocol recipe
Authenticate
Set OPENAI_API_KEY to a RunAPI API key and OPENAI_BASE_URL to
https://runapi.ai/v1. Keep the key in the environment or a secret manager.
Send request
from openai import OpenAI
client = OpenAI(api_key="YOUR_RUNAPI_TOKEN", base_url="https://runapi.ai/v1")
response = client.chat.completions.create(
model="mimo-v2.5-pro",
messages=[{"role": "user", "content": "Summarize this decision."}],
)
print(response.choices[0].message.content)
For longer output, request terminal usage while streaming:
stream = client.chat.completions.create(
model="mimo-v2.5",
messages=[{"role": "user", "content": "Write a status update."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print(chunk.usage)
Verify result
For a synchronous call, require one response choice with a final assistant
message and read usage from that response. For SSE, consume through [DONE]
and require the terminal usage chunk requested by include_usage. An HTTP 2xx
without the expected final content and Usage is incomplete.
Stop boundaries
Correct a rejected request shape at most once, using the structured error and this verified allowlist. Retry a transport failure once only when no response or Usage was returned and replay is safe. On a terminal RunAPI failure, retain the request ID and error, then stop without changing model or protocol.
Positive verified request allowlist
Start with only this verified request shape:
mimo-v2.5-pro: a text-onlymessageshistory with system, user, and assistant roles.mimo-v2.5: the same text shape, plus synchronous Chat Completions content parts containingtextand public HTTP(S)image_url.urlvalues.- Both models: synchronous calls or SSE with
stream_options.include_usage. mimo-v2.5Chat Completions: an optionalmetadataobject with string values, for example{"user_id": "customer-123"}, on synchronous or streaming requests. Do not rely on metadata being echoed in the response or available for stored-completion lookup.mimo-v2.5Chat Completions supports custom functiontools,tool_choice(auto,none,required, or a named function), andparallel_tool_calls. Preserve assistanttool_calls, their IDs, andreasoning_contentwhen supplied; return each result as atoolmessage with the matchingtool_call_id. Continue until the model returns final text. Both sync and SSE are supported.- For Claude Code with
mimo-v2.5, use native Anthropic Messages as described in the compatibility reference. Tool calling is not enabled for Pro or Responses.
Add an optional control only when the current RunAPI contract or a successful validation result explicitly verifies it for the selected model and mode.
Compatibility protocols
Load compatibility protocols only when an existing client requires Responses or Anthropic Messages. Keep the primary recipe in this file for new integrations.
Supported models
| Model ID | Use when |
|---|---|
mimo-v2.5-pro |
Higher-quality verified text generation |
mimo-v2.5 |
Text, custom tool calling, Claude Code, and synchronous Chat image requests |
References
- Model overview and pricing: https://runapi.ai/models/mimo.md
- Provider page: https://runapi.ai/providers/xiaomi.md
- Catalog: https://runapi.ai/models.md
