docs/providers/minimax.md
OpenClaw's MiniMax provider defaults to MiniMax M2.7.
MiniMax also provides:
MiniMax-VL-01music-2.6web_search through the MiniMax Token Plan search APIProvider split:
| Provider ID | Auth | Capabilities |
|---|---|---|
minimax | API key | Text, image generation, music generation, video generation, image understanding, speech, web search |
minimax-portal | OAuth | Text, image generation, music generation, video generation, image understanding, speech |
| Model | Type | Description |
|---|---|---|
MiniMax-M2.7 | Chat (reasoning) | Default hosted reasoning model |
MiniMax-M2.7-highspeed | Chat (reasoning) | Faster M2.7 reasoning tier |
MiniMax-VL-01 | Vision | Image understanding model |
image-01 | Image generation | Text-to-image and image-to-image editing |
music-2.6 | Music generation | Default music model |
music-2.5 | Music generation | Previous music generation tier |
music-2.0 | Music generation | Legacy music generation tier |
MiniMax-Hailuo-2.3 | Video generation | Text-to-video and image reference flows |
Choose your preferred auth method and follow the setup steps.
<Tabs> <Tab title="OAuth (Coding Plan)"> **Best for:** quick setup with MiniMax Coding Plan via OAuth, no API key required.<Tabs>
<Tab title="International">
<Steps>
<Step title="Run onboarding">
```bash
openclaw onboard --auth-choice minimax-global-oauth
```
This authenticates against `api.minimax.io`.
</Step>
<Step title="Verify the model is available">
```bash
openclaw models list --provider minimax-portal
```
</Step>
</Steps>
</Tab>
<Tab title="China">
<Steps>
<Step title="Run onboarding">
```bash
openclaw onboard --auth-choice minimax-cn-oauth
```
This authenticates against `api.minimaxi.com`.
</Step>
<Step title="Verify the model is available">
```bash
openclaw models list --provider minimax-portal
```
</Step>
</Steps>
</Tab>
</Tabs>
<Note>
OAuth setups use the `minimax-portal` provider id. Model refs follow the form `minimax-portal/MiniMax-M2.7`.
</Note>
<Tip>
Referral link for MiniMax Coding Plan (10% off): [MiniMax Coding Plan](https://platform.minimax.io/subscribe/coding-plan?code=DbXJTRClnb&source=link)
</Tip>
<Tabs>
<Tab title="International">
<Steps>
<Step title="Run onboarding">
```bash
openclaw onboard --auth-choice minimax-global-api
```
This configures `api.minimax.io` as the base URL.
</Step>
<Step title="Verify the model is available">
```bash
openclaw models list --provider minimax
```
</Step>
</Steps>
</Tab>
<Tab title="China">
<Steps>
<Step title="Run onboarding">
```bash
openclaw onboard --auth-choice minimax-cn-api
```
This configures `api.minimaxi.com` as the base URL.
</Step>
<Step title="Verify the model is available">
```bash
openclaw models list --provider minimax
```
</Step>
</Steps>
</Tab>
</Tabs>
### Config example
```json5
{
env: { MINIMAX_API_KEY: "sk-..." },
agents: { defaults: { model: { primary: "minimax/MiniMax-M2.7" } } },
models: {
mode: "merge",
providers: {
minimax: {
baseUrl: "https://api.minimax.io/anthropic",
apiKey: "${MINIMAX_API_KEY}",
api: "anthropic-messages",
models: [
{
id: "MiniMax-M2.7",
name: "MiniMax M2.7",
reasoning: true,
input: ["text"],
cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 },
contextWindow: 204800,
maxTokens: 131072,
},
{
id: "MiniMax-M2.7-highspeed",
name: "MiniMax M2.7 Highspeed",
reasoning: true,
input: ["text"],
cost: { input: 0.6, output: 2.4, cacheRead: 0.06, cacheWrite: 0.375 },
contextWindow: 204800,
maxTokens: 131072,
},
],
},
},
},
}
```
<Warning>
On the Anthropic-compatible streaming path, OpenClaw disables MiniMax thinking by default unless you explicitly set `thinking` yourself. MiniMax's streaming endpoint emits `reasoning_content` in OpenAI-style delta chunks instead of native Anthropic thinking blocks, which can leak internal reasoning into visible output if left enabled implicitly.
</Warning>
<Note>
API-key setups use the `minimax` provider id. Model refs follow the form `minimax/MiniMax-M2.7`.
</Note>
openclaw configureUse the interactive config wizard to set MiniMax without editing JSON:
<Steps> <Step title="Launch the wizard"> ```bash openclaw configure ``` </Step> <Step title="Select Model/auth"> Choose **Model/auth** from the menu. </Step> <Step title="Choose a MiniMax auth option"> Pick one of the available MiniMax options:| Auth choice | Description |
| --- | --- |
| `minimax-global-oauth` | International OAuth (Coding Plan) |
| `minimax-cn-oauth` | China OAuth (Coding Plan) |
| `minimax-global-api` | International API key |
| `minimax-cn-api` | China API key |
The MiniMax plugin registers the image-01 model for the image_generate tool. It supports:
1:1, 16:9, 4:3, 3:2, 2:3, 3:4, 9:16, 21:9To use MiniMax for image generation, set it as the image generation provider:
{
agents: {
defaults: {
imageGenerationModel: { primary: "minimax/image-01" },
},
},
}
The plugin uses the same MINIMAX_API_KEY or OAuth auth as the text models. No additional configuration is needed if MiniMax is already set up.
Both minimax and minimax-portal register image_generate with the same
image-01 model. API-key setups use MINIMAX_API_KEY; OAuth setups can use
the bundled minimax-portal auth path instead.
Image generation always uses MiniMax's dedicated image endpoint
(/v1/image_generation) and ignores models.providers.minimax.baseUrl,
since that field configures the chat/Anthropic-compatible base URL. Set
MINIMAX_API_HOST=https://api.minimaxi.com to route image generation
through the CN endpoint; the default global endpoint is
https://api.minimax.io.
When onboarding or API-key setup writes explicit models.providers.minimax
entries, OpenClaw materializes MiniMax-M2.7 and
MiniMax-M2.7-highspeed as text-only chat models. Image understanding is
exposed separately through the plugin-owned MiniMax-VL-01 media provider.
The bundled minimax plugin registers MiniMax T2A v2 as a speech provider for
messages.tts.
speech-2.8-hdEnglish_expressive_narratorspeech-2.8-hd, speech-2.8-turbo,
speech-2.6-hd, speech-2.6-turbo, speech-02-hd,
speech-02-turbo, speech-01-hd, and speech-01-turbo.messages.tts.providers.minimax.apiKey, then
minimax-portal OAuth/token auth profiles, then Token Plan environment
keys (MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY,
MINIMAX_CODING_API_KEY), then MINIMAX_API_KEY.minimax-portal OAuth host and strips Anthropic-compatible path suffixes
such as /anthropic.ffmpeg, because the Feishu/Lark file API only
accepts file_type: "opus" for native audio messages.speed and vol, but pitch is sent as an
integer; OpenClaw truncates fractional pitch values before the API request.| Setting | Env var | Default | Description |
|---|---|---|---|
messages.tts.providers.minimax.baseUrl | MINIMAX_API_HOST | https://api.minimax.io | MiniMax T2A API host. |
messages.tts.providers.minimax.model | MINIMAX_TTS_MODEL | speech-2.8-hd | TTS model id. |
messages.tts.providers.minimax.voiceId | MINIMAX_TTS_VOICE_ID | English_expressive_narrator | Voice id used for speech output. |
messages.tts.providers.minimax.speed | 1.0 | Playback speed, 0.5..2.0. | |
messages.tts.providers.minimax.vol | 1.0 | Volume, (0, 10]. | |
messages.tts.providers.minimax.pitch | 0 | Integer pitch shift, -12..12. |
The bundled MiniMax plugin registers music generation through the shared
music_generate tool for both minimax and minimax-portal.
minimax/music-2.6minimax-portal/music-2.6minimax/music-2.5 and minimax/music-2.0lyrics, instrumental, durationSecondsmp3action: "status"To use MiniMax as the default music provider:
{
agents: {
defaults: {
musicGenerationModel: {
primary: "minimax/music-2.6",
},
},
},
}
The bundled MiniMax plugin registers video generation through the shared
video_generate tool for both minimax and minimax-portal.
minimax/MiniMax-Hailuo-2.3minimax-portal/MiniMax-Hailuo-2.3aspectRatio and resolutionTo use MiniMax as the default video provider:
{
agents: {
defaults: {
videoGenerationModel: {
primary: "minimax/MiniMax-Hailuo-2.3",
},
},
},
}
The MiniMax plugin registers image understanding separately from the text catalog:
| Provider ID | Default image model |
|---|---|
minimax | MiniMax-VL-01 |
minimax-portal | MiniMax-VL-01 |
That is why automatic media routing can use MiniMax image understanding even when the bundled text-provider catalog still shows text-only M2.7 chat refs.
The MiniMax plugin also registers web_search through the MiniMax Token Plan
search API.
minimaxMINIMAX_CODE_PLAN_KEYMINIMAX_CODING_API_KEY, MINIMAX_OAUTH_TOKENMINIMAX_API_KEY when it already points at a token-plan credentialplugins.entries.minimax.config.webSearch.region, then MINIMAX_API_HOST, then MiniMax provider base URLsminimax; OAuth CN/global setup can steer region indirectly through models.providers.minimax-portal.baseUrl and can provide bearer auth through MINIMAX_OAUTH_TOKENConfig lives under plugins.entries.minimax.config.webSearch.*.
This prevents MiniMax's streaming endpoint from emitting `reasoning_content` in OpenAI-style delta chunks, which would leak internal reasoning into visible output.
```json5
{
env: { MINIMAX_API_KEY: "sk-..." },
agents: {
defaults: {
models: {
"anthropic/claude-opus-4-6": { alias: "primary" },
"minimax/MiniMax-M2.7": { alias: "minimax" },
},
model: {
primary: "anthropic/claude-opus-4-6",
fallbacks: ["minimax/MiniMax-M2.7"],
},
},
},
}
```
minimax/<model>minimax-portal/<model>MiniMax-M2.7MiniMax-M2.7-highspeedMiniMax-VL-01 media providermodels.json if you need exact cost trackingopenclaw models list to confirm the current provider id, then switch with openclaw models set minimax/MiniMax-M2.7 or openclaw models set minimax-portal/MiniMax-M2.7- Upgrading to **2026.1.12** (or run from source `main`), then restarting the gateway.
- Running `openclaw configure` and selecting a **MiniMax** auth option, or
- Adding the matching `models.providers.minimax` or `models.providers.minimax-portal` block manually, or
- Setting `MINIMAX_API_KEY`, `MINIMAX_OAUTH_TOKEN`, or a MiniMax auth profile so the matching provider can be injected.
Make sure the model id is **case-sensitive**:
- API-key path: `minimax/MiniMax-M2.7` or `minimax/MiniMax-M2.7-highspeed`
- OAuth path: `minimax-portal/MiniMax-M2.7` or `minimax-portal/MiniMax-M2.7-highspeed`
Then recheck with:
```bash
openclaw models list
```