Gemini 3.6 Flash vs MiniMax M3
MiniMax M3 has been retired from our catalogue. Its figures below are the last published rates; calls to it are no longer served, while the other model in this comparison is.
Which one, when
Pick gemini-3.6-flash when audio is in the mix: it is the only one of the two that accepts audio input ($5 per million audio tokens, $0.5 cached) alongside text, image and video, and its 1048576-token context edges out the 1000000 of the other. minimax-m3 bills $0.3 in and $1.2 out per million against $1.5 and $7.5, so 5x cheaper on input and 6.25x on output, and it allows up to 524288 output tokens where gemini-3.6-flash caps at 65536. minimax-m3 also lets you disable thinking and is flagged for reasoning and long-context work, whereas gemini-3.6-flash always thinks.
Benchmarks
MiniMax M3: the vendor has not published benchmark scores.
Vendor-published: Alibaba (Qwen) Anthropic DeepSeek Google Moonshot OpenAI Tencent Z.ai
Pricing
| Gemini 3.6 Flash | MiniMax M3 | Δ | |
|---|---|---|---|
| Input / 1M tokens | $1.5 | $0.3 | 5× |
| Output / 1M tokens | $7.5 | $1.2 | 6.3× |
| Cache read / 1M tokens | $0.15 | $0.06 | 2.5× |
| Cache write | - | no separate charge | - |
Rates from the live catalogue at build time; each model page carries the current rate card.
Where they sit · input price per 1M tokens across all 76 chat models on this billing unit (log scale)
Capabilities
| Gemini 3.6 Flash | MiniMax M3 | |
|---|---|---|
| Tool calling | yes | yes |
| Thinking control | always on | configurable |
| Structured output | yes | - |
| Prompt caching | implicit + explicit | implicit (automatic) |
| Cache lifetime | not published | not published |
| Minimum cached prefix | 4096 tokens | 512 tokens |
Specs
| Gemini 3.6 Flash | MiniMax M3 | |
|---|---|---|
| Input modalities | text image audio video | text image video |
| Output modalities | text | text |
| Released | 2026-07-21 | 2026-06-01 |
| Knowledge cutoff | 2026-03 | - |
| Context window | 1M | 1M |
| Max output | 66K | 524K |
| Thinking parameter | thinkingLevel |
|
| Accepted values |
| thinking.type
reasoning_split
|
| Default | medium | adaptive: thinking on, with the model deciding when extra reasoning helps |
Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: Gemini 3.6 Flash · MiniMax M3
Switch between them with one line
Both ids are in every tab below; the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.chat.completions.create(
model="gemini-3.6-flash",
# model="minimax-m3", # uncomment this line, comment the one above
messages=[{"role": "user", "content": "Summarize this diff"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.chat.completions.create({
model: "gemini-3.6-flash",
// model: "minimax-m3", // uncomment this line, comment the one above
messages: [{ role: "user", content: "Summarize this diff" }],
});
console.log(resp.choices[0].message.content);curl https://synthorai.io/v1/chat/completions \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.6-flash",
# "model": "minimax-m3", # uncomment this line, comment the one above
"messages": [{"role": "user", "content": "Hello"}]
}'package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
resp, _ := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Model: "gemini-3.6-flash",
// Model: "minimax-m3", // uncomment this line, comment the one above
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Summarize this diff"),
},
})
fmt.Println(resp.Choices[0].Message.Content)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
ChatCompletion resp = client.chat().completions().create(
ChatCompletionCreateParams.builder()
.model("gemini-3.6-flash")
// .model("minimax-m3") // uncomment this line, comment the one above
.addUserMessage("Summarize this diff")
.build());
System.out.println(resp.choices().get(0).message().content().orElse(""));FAQ
Which is cheaper, Gemini 3.6 Flash or MiniMax M3?
MiniMax M3 is cheaper on the "Input / 1M tokens" row ($0.3 vs $1.5, 5.0× apart). Other rows may point the other way; the table above carries the full rate card, and real cost depends on your mix.
Can I A/B test Gemini 3.6 Flash against MiniMax M3 without two integrations?
Yes. Both are served through the same OpenAI-compatible endpoint with one API key. Switching is a one-line change to the model id, so you can route a fraction of traffic to each and compare bills directly.
Do Gemini 3.6 Flash and MiniMax M3 support prompt caching?
Yes. Both bill cache reads below their input rate, so warm-prefix workloads cost less than the list rates suggest. The exact cache-read rows are in the pricing table above.