MiniMax Vision — Image Understanding via mmx CLI
Status
✅ WORKING (2026-05-04) — mmx vision describe is the correct and only reliable method after vision.minimax.chat DNS resolution started failing.
mmx CLI Installation
Official docs: https://platform.minimax.io/docs/token-plan/minimax-cli
Package: mmx-cli (npm), command: mmx
# Install via npm
npm install -g mmx-cli
# Verify
mmx --versionAuthenticate with your API key:
mmx auth login --api-key sk-xxxxxService region: If you get 401 errors, set region manually:
mmx config set --key region --value global # Overseas (platform.minimax.io)
mmx config set --key region --value cn # Mainland China (platform.minimaxi.com)Run mmx alone to open the interactive CLI panel.
The Problem
vision_analyzetool useshttps://vision.minimax.chat/v1alpha1/gvisor?model=pro- This domain no longer resolves — DNS returns “Could not resolve host” from both Termux and Windows
curltovision.minimax.chatfails with DNS errorInvoke-RestMethodfrom Windows PC also fails with same DNS error- The
vision.minimax.chatdomain appears to be deprecated/down
The Working Solution
Method 1: mmx CLI (Recommended — Always Works)
mmx vision describe \
--image /path/to/image.png \
--prompt "Your question about the image"Example:
mmx vision describe \
--image /data/data/com.termux/files/home/.hermes/image_cache/img_5653234a3dfc.png \
--prompt "List all the menu items visible in this UI screenshot."Options:
--image <path-or-url>— Local file path or image URL--file-id <id>— Pre-uploaded file ID--prompt <text>— Question about the image (default: “Describe the image.”)
Important: Pass full absolute path, not relative path.
Method 2: Direct API with MiniMax-M2.7
The MiniMax-M2.7 model supports multimodal input (image + text) via base64:
import urllib.request, json, base64
with open('image.png', 'rb') as f:
b64 = base64.b64encode(f.read()).decode()
payload = json.dumps({
'model': 'MiniMax-M2.7',
'messages': [{
'role': 'user',
'content': [
{'type': 'text', 'text': 'Your question'},
{'type': 'image_url', 'image_url': {'url': f'data:image/png;base64,{b64}'}}
]
}]
}).encode()
req = urllib.request.Request(
'https://api.minimax.io/v1/chat/completions',
data=payload,
headers={
'Authorization': 'Bearer <API_KEY>',
'Content-Type': 'application/json'
},
method='POST'
)
with urllib.request.urlopen(req, timeout=30) as resp:
result = json.loads(resp.read())
print(result['choices'][0]['message']['content'])Known limitations: This approach may return “I cannot see the image” depending on how the model processes the base64. Success is inconsistent.
Verified Models
| Model | Vision | Text Chat | Notes |
|---|---|---|---|
MiniMax-M2.7 | ✅ via base64 | ✅ | Best for vision |
MiniMax-M2 | ⚠️ via base64 | ✅ | Inconsistent on vision |
MiniMax-Text-01 | ❌ | ❌ | Token plan doesn’t support this model |
image-01 | N/A | N/A | Image generation only, not vision |
Troubleshooting
vision.minimax.chat DNS failure
Symptom: curl: (6) Could not resolve host: vision.minimax.chat
Cause: Domain is deprecated/down
Fix: Use mmx vision describe instead — the mmx CLI has its own routing that bypasses the broken domain.
mmx vision returns “I cannot see the image”
Try: Use a direct local file path (not URL), full absolute path.
# WRONG
mmx vision describe --image ./img.png
# CORRECT
mmx vision describe --image /data/data/com.termux/files/home/.hermes/image_cache/img.pngmmx vision times out
Fix: Try again. If persistent, the image may be too large (>10MB). Compress and retry.
Key Learnings (2026-05-04)
- mmx CLI is the reliable vision tool — it has built-in routing that always works
vision.minimax.chatis deprecated — never trust that URL in code anymore- MiniMax API key works fine — the issue is purely endpoint routing
- MiniMax-M2.7 is the best model — supports multimodal and chat equally well
See Also
minimax-image-genskill — image generation (separate from vision)mmx --help— full CLI reference