curl -X POST https://api.vibetool.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/minimax-m3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.vibetool.ai/v1"
)
response = client.chat.completions.create(
model="minimax/minimax-m3",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
const response = await fetch('https://api.vibetool.ai/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'minimax/minimax-m3',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "https://api.vibetool.ai/v1/chat/completions"
payload := []byte(`{"model": "minimax/minimax-m3", "messages": [{"role": "user", "content": "Hello!"}]}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
{
"id": "chat_202601201327_c17f839a",
"object": "chat.completion",
"model": "minimax/minimax-m3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 10,
"total_tokens": 18
}
}
{
"error": {
"message": "Invalid request",
"type": "invalid_request_error",
"param": null,
"code": 400
}
}
{
"error": {
"message": "Invalid API Key provided",
"type": "authentication_error",
"param": null,
"code": 401
}
}
{
"error": {
"message": "Your credit balance is insufficient",
"type": "billing_error",
"param": null,
"code": 402
}
}
{
"error": {
"message": "Permission denied",
"type": "permission_error",
"param": null,
"code": 403
}
}
{
"error": {
"message": "Resource not found",
"type": "invalid_request_error",
"param": null,
"code": 404
}
}
{
"error": {
"message": "Conflict",
"type": "conflict_error",
"param": null,
"code": 409
}
}
{
"error": {
"message": "Rate limit reached for requests",
"type": "rate_limit_error",
"param": null,
"code": 429
}
}
{
"error": {
"message": "An internal server error occurred",
"type": "server_error",
"param": null,
"code": 500
}
}
{
"error": {
"message": "Service unavailable",
"type": "server_error",
"param": null,
"code": 503
}
}
MiniMax Series
MiniMax-M3
MiniMax-M3 is a long-context reasoning model with deep thinking mode and multimodal input (text, image, video, PDF). 1M context, 131K max output. Call minimax/minimax-m3 through the Vibetool Unified API with OpenAI-compatible Chat Completions.
POST
/
v1
/
chat
/
completions
curl -X POST https://api.vibetool.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/minimax-m3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.vibetool.ai/v1"
)
response = client.chat.completions.create(
model="minimax/minimax-m3",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
const response = await fetch('https://api.vibetool.ai/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'minimax/minimax-m3',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "https://api.vibetool.ai/v1/chat/completions"
payload := []byte(`{"model": "minimax/minimax-m3", "messages": [{"role": "user", "content": "Hello!"}]}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
{
"id": "chat_202601201327_c17f839a",
"object": "chat.completion",
"model": "minimax/minimax-m3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 10,
"total_tokens": 18
}
}
{
"error": {
"message": "Invalid request",
"type": "invalid_request_error",
"param": null,
"code": 400
}
}
{
"error": {
"message": "Invalid API Key provided",
"type": "authentication_error",
"param": null,
"code": 401
}
}
{
"error": {
"message": "Your credit balance is insufficient",
"type": "billing_error",
"param": null,
"code": 402
}
}
{
"error": {
"message": "Permission denied",
"type": "permission_error",
"param": null,
"code": 403
}
}
{
"error": {
"message": "Resource not found",
"type": "invalid_request_error",
"param": null,
"code": 404
}
}
{
"error": {
"message": "Conflict",
"type": "conflict_error",
"param": null,
"code": 409
}
}
{
"error": {
"message": "Rate limit reached for requests",
"type": "rate_limit_error",
"param": null,
"code": 429
}
}
{
"error": {
"message": "An internal server error occurred",
"type": "server_error",
"param": null,
"code": 500
}
}
{
"error": {
"message": "Service unavailable",
"type": "server_error",
"param": null,
"code": 503
}
}
Overview
MiniMax-M3 is MiniMax’s latest generation long-context reasoning model, engineered for deep analytical work across massive inputs. With a 1,000,000-token context window and the ability to output up to 131,072 tokens in a single response, M3 is purpose-built for tasks that require sustained logical coherence, multi-step reasoning, and the synthesis of information from heterogeneous data sources. What sets MiniMax-M3 apart is its native support for multimodal input — you can feed it text, images, and video directly into the chat. This makes it an ideal choice for video understanding pipelines, document-heavy analysis workflows, and research scenarios where information lives across multiple media types. The model’s “deep thinking mode” further enhances its ability to break down complex problems into intermediate reasoning steps before producing a final answer, improving accuracy on mathematically intense, code-oriented, or logic-heavy queries. Accessing MiniMax-M3 through Vibetool means you get all of this capability behind a single OpenAI-compatible endpoint, with one API key and one consistent request format. You can swap models, run comparisons, and scale usage without touching your integration logic. Vibetool handles routing, authentication, and billing in one place — so your team stays focused on building rather than managing upstream provider relationships.Model Slug:
minimax/minimax-m3Use this exact slug when making API requests to Vibetool.Model Specifications
- Context Window: 1,000,000 tokens (1M tokens)
- Max Output Tokens: 131,072 tokens (131K tokens)
- Input Modalities: Text, Image, Video
- Output Modalities: Text
- Deep Thinking Mode: Enabled — enhances chain-of-thought reasoning for complex tasks
Pricing
Pricing: See vibetool.ai/pricing for current rates.Use Cases
- Long-Document & Video Understanding: Ingest entire research papers, legal briefs, or hours of video content in a single request. M3 can reason across text and visual frames simultaneously without chunking.
- Deep Analytical Reasoning: Tackle multi-step mathematical proofs, algorithmic design, and complex logic puzzles. The deep thinking mode surfaces intermediate reasoning steps before delivering a final answer.
- Multimodal RAG & Retrieval Augmentation: Build retrieval-augmented generation pipelines that mix text, images, and video transcripts. M3 can combine information from multiple media types to answer questions that span modalities.
- Code Generation & Review: Generate, refactor, and explain code across a wide range of programming languages, with the ability to reason over large codebases that fit within the 1M-token context window.
curl -X POST https://api.vibetool.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/minimax-m3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.vibetool.ai/v1"
)
response = client.chat.completions.create(
model="minimax/minimax-m3",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
const response = await fetch('https://api.vibetool.ai/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'minimax/minimax-m3',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "https://api.vibetool.ai/v1/chat/completions"
payload := []byte(`{"model": "minimax/minimax-m3", "messages": [{"role": "user", "content": "Hello!"}]}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
{
"id": "chat_202601201327_c17f839a",
"object": "chat.completion",
"model": "minimax/minimax-m3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 10,
"total_tokens": 18
}
}
{
"error": {
"message": "Invalid request",
"type": "invalid_request_error",
"param": null,
"code": 400
}
}
{
"error": {
"message": "Invalid API Key provided",
"type": "authentication_error",
"param": null,
"code": 401
}
}
{
"error": {
"message": "Your credit balance is insufficient",
"type": "billing_error",
"param": null,
"code": 402
}
}
{
"error": {
"message": "Permission denied",
"type": "permission_error",
"param": null,
"code": 403
}
}
{
"error": {
"message": "Resource not found",
"type": "invalid_request_error",
"param": null,
"code": 404
}
}
{
"error": {
"message": "Conflict",
"type": "conflict_error",
"param": null,
"code": 409
}
}
{
"error": {
"message": "Rate limit reached for requests",
"type": "rate_limit_error",
"param": null,
"code": 429
}
}
{
"error": {
"message": "An internal server error occurred",
"type": "server_error",
"param": null,
"code": 500
}
}
{
"error": {
"message": "Service unavailable",
"type": "server_error",
"param": null,
"code": 503
}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Was this page helpful?