MiniMax M3 API Parity Test: Chat vs Responses vs Anthropic

We sent the same 50 deterministic tasks through MiniMax Chat Completions, Responses, and Anthropic Messages twice. All 300 calls were correct; three differed only in JSON whitespace.

We sent 300 live, paid requests to MiniMax M3 through three different API surfaces. The practical result was short deterministic, non-streaming text-output semantic parity on this frozen dataset: Chat Completions, Responses, and Anthropic Messages each returned 100 correct answers from 100 requests, with no API or format failures. Across the 100 matched endpoint triplets, normalized text was exactly identical 97% of the time. The remaining three triplets were not model disagreements: they contained the same valid JSON keys and values, differing only in insignificant whitespace.

This is the distinction that matters for an integration decision. The benchmark measured 100% semantic accuracy and 97% normalized textual agreement. If your application parses structured output instead of comparing raw strings byte for byte, all three MiniMax M3 interfaces behaved equivalently on this test set. The endpoint choice can therefore be based mainly on the SDK and request format that best fit your stack.

MiniMax M3 API parity benchmark comparing Chat Completions, Responses, and Anthropic Messages across 300 requests
One model, three API formats, 100 matched triplets and 300 total requests.

The result at a glance

MetricChat CompletionsResponsesAnthropic Messages
Requests100100100
API success100%100%100%
Format valid100%100%100%
Semantic accuracy100%100%100%
Mean latency1,399 ms1,404 ms1,320 ms
p50 latency1,012 ms1,001 ms1,018 ms
p95 latency3,630 ms3,630 ms3,024 ms
Mean effective input tokens206.4206.4206.4
Mean output tokens8.688.748.61
Corrected estimated cost, 100 requests$0.00463080$0.00462120$0.00458088
Fastest within matched triplets352441

Bottom line: all 300 requests succeeded and were scored correct. All three endpoints were semantically identical in 100 of 100 triplets; 97 of 100 were also exact textual matches after ordinary text normalization.

What “API parity” means in this test

MiniMax exposes the same model through multiple interface conventions. The OpenAI-style Chat Completions endpoint accepts a message array. The Responses endpoint separates instructions from input. The Anthropic-compatible Messages endpoint uses Anthropic-shaped system and message fields. These formats make migration easier, but compatibility at the request-schema level does not automatically prove that the returned answer will be the same.

CapabilityStatus
Short deterministic text outputTested
Non-streaming requestsTested
Chat / Responses / Anthropic endpointsTested
ToolsNot tested
Multimodal inputNot tested
StreamingNot tested
Server ToolsNot tested
Long-context and multi-turn behaviorNot tested
Priority routingNot tested

We defined parity in two layers. First, semantic accuracy asks whether each response satisfies deterministic ground truth. Arithmetic and classification outputs had to match exactly after basic normalization. Ordered transformations and date-format tasks had explicit expected strings. JSON extraction had to return a directly parseable object containing the exact expected values. Second, text agreement asks whether all three extracted response strings are identical after text normalization. The first measure reflects application correctness; the second catches presentational differences.

That two-layer scoring explains the headline numbers. Every endpoint scored 100/100 for semantic accuracy, and every matched triplet had three correct answers. Exact normalized text agreement was 97/100 because three JSON extraction repetitions inserted spaces after commas and colons on one endpoint while another returned compact JSON. For example, {"open": false} and {"open":false} parse to precisely the same value. Those three cases were formatting variations only—not incorrect fields, missing data, or divergent reasoning.

Methodology: 50 tasks, repeated twice, across three endpoints

The live run completed on July 28, 2026. We built a balanced dataset of 50 deterministic cases: 10 arithmetic tasks, 10 sentiment classifications, 10 ordered transformations, 10 JSON extractions, and 10 date-format compliance tasks. Every case was executed twice. For each case and repetition, the harness launched one request to each endpoint concurrently, producing 100 endpoint triplets and 300 billable requests.

  • Model: MiniMax-M3
  • Service tier: Standard
  • Sampling: temperature 0.1 and top-p 0.95
  • Output allowance: an equivalent 256-token maximum on every endpoint
  • Generation mode: non-streaming, with thinking or reasoning disabled
  • Timeout: 120 seconds per request
  • Dispatch control: the three requests in each triplet started concurrently, while endpoint creation order rotated between triplets

Concurrent dispatch reduced the chance that short-term network or server conditions would favor an endpoint simply because it always ran first. Rotating the creation order added another small protection against client-side ordering effects. We waited one second between triplet groups. This was a parity experiment rather than a maximum-throughput load test, so the latency figures describe these controlled individual requests, not the capacity of a production deployment under sustained concurrency.

Each response was also checked independently for transport success, parseability, API status, output format, and task correctness. No endpoint required retries to produce the reported 100% success rate. The downloadable artifact linked below contains the sanitized request-level results, triplet comparison table, run manifest, and corrected summary so the aggregate claims can be audited.

Equivalent payloads for the three MiniMax M3 APIs

The prompt, sampling controls, model, service tier, and output limit remained constant. Only the fields required by each interface changed. This is the mapping used in the benchmark:

InterfacePathSystem and user mappingReasoning controlOutput-limit field
Chat Completions/v1/chat/completionsSystem message + user message in messagesthinking.type = "disabled"max_completion_tokens
Responses/v1/responsesinstructions + inputreasoning.effort = "none"max_output_tokens
Anthropic Messages/anthropic/v1/messagessystem + one user messagethinking.type = "disabled"max_tokens
const API_KEY = process.env.MINIMAX_API_KEY;
const BASE_URL = "https://api.minimax.io";

function payloadFor(api, system, prompt) {
  const common = {
    model: "MiniMax-M3",
    service_tier: "standard",
    temperature: 0.1,
    top_p: 0.95,
    stream: false
  };

  if (api === "chat") {
    return {
      path: "/v1/chat/completions",
      body: {
        ...common,
        thinking: { type: "disabled" },
        reasoning_split: true,
        max_completion_tokens: 256,
        messages: [
          { role: "system", content: system },
          { role: "user", content: prompt }
        ]
      }
    };
  }

  if (api === "responses") {
    return {
      path: "/v1/responses",
      body: {
        ...common,
        reasoning: { effort: "none" },
        max_output_tokens: 256,
        instructions: system,
        input: prompt
      }
    };
  }

  return {
    path: "/anthropic/v1/messages",
    body: {
      ...common,
      thinking: { type: "disabled" },
      max_tokens: 256,
      system,
      messages: [{ role: "user", content: prompt }]
    }
  };
}

async function callMiniMax(spec) {
  const response = await fetch(BASE_URL + spec.path, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify(spec.body)
  });
  if (!response.ok) throw new Error(`${spec.path}: HTTP ${response.status}`);
  return response.json();
}

const system = "Return only the requested answer.";
const prompt = "Calculate 37 × 14.";
const specs = ["chat", "responses", "anthropic"]
  .map(api => payloadFor(api, system, prompt));
const results = await Promise.all(specs.map(callMiniMax));

The response extraction step is necessarily endpoint-specific: Chat Completions reads the assistant message, Responses reads its output text structure, and Anthropic Messages reads text content blocks. Normalize those shapes into one internal type at the adapter boundary. Downstream application code can then work with a consistent object regardless of which interface you select.

How to reproduce a fair comparison

Save one request-level record for every call: endpoint, case ID, repetition, dispatch position, start and finish timestamps, HTTP status, raw text, parsed output, token-usage fields, and any error. Join records by a stable triplet ID so that each prompt is compared only with its two matched calls. Predeclare the ground truth, normalizer, parser, and pass/fail rules before running the benchmark; changing them after seeing outputs turns evaluation into interpretation.

Dispatch each matched trio concurrently under identical model settings, timeout, service tier, and output cap. Rotate creation or launch order across triplets to prevent a fixed first-request advantage. Evaluate JSON twice: parse it and compare the resulting values for semantic accuracy, then separately compare normalized strings for literal agreement. That distinction keeps harmless whitespace or serialization differences from being mislabeled as model errors.

Keep credentials in environment variables, never in the dataset. Before publishing artifacts, remove authorization headers, request IDs that could expose account data, and any logs containing secrets or private prompts. Preserve raw usage fields as well as normalized effective input tokens, document the normalization formula, and recalculate estimated costs whenever the provider changes rates. A reproducible report should therefore ship the protocol version, sanitized request-level rows, scoring code, and the exact pricing assumptions used for that run.

Latency was close at the median

Median latency clustered tightly around one second: 1,012 ms for Chat Completions, 1,001 ms for Responses, and 1,018 ms for Anthropic Messages. A 17 ms spread between the fastest and slowest median is too small to drive an architecture decision here. Mean latency was also similar, although the Anthropic-compatible endpoint recorded the lowest mean at 1,320 ms versus 1,399 ms for Chat and 1,404 ms for Responses.

The tail showed the largest difference. Anthropic Messages had a 3,024 ms p95, while Chat and Responses were both approximately 3,630 ms. It was the fastest member of 41 triplets, compared with 35 for Chat and 24 for Responses. Still, that is not proof that the Anthropic-shaped route is inherently faster. This was one 300-request run from one client location, on one day, using short deterministic prompts. The endpoints may share substantial infrastructure, and ordinary internet variation can move results at this scale. For a latency-sensitive product, repeat the experiment from your deployment region with production-sized prompts and streaming settings.

Methodology correction

Usage fields are not directly comparable until cache accounting is normalized. Chat Completions and Responses reported input totals that included cache-read tokens. In the Anthropic-compatible response, input_tokens excluded cache reads, which were reported separately. Treating only that first Anthropic field as total input would undercount usage and make the endpoint appear artificially cheaper.

We corrected the summary by defining effective Anthropic input as input_tokens + cache_read_input_tokens + cache_creation_input_tokens. Cache-read tokens retained the published cache-read price in the cost calculation; they were not repriced as ordinary input. After normalization, every endpoint averaged exactly 206.4 effective input tokens per request, or 20,640 across its 100 requests.

The corrected estimated costs were $0.00463080 for Chat Completions, $0.00462120 for Responses, and $0.00458088 for Anthropic Messages. The total for all 300 requests was $0.01383288. The small endpoint differences came from observed output-token counts and cache categories, not different prompt content. Rates can change, so use the official MiniMax pay-as-you-go pricing page for budgeting rather than treating this historical run total as a quote.

Which endpoint should you choose?

For this dataset, correctness does not break the tie. Choose Chat Completions if your application already uses OpenAI-compatible message arrays or depends on mature chat-oriented client abstractions. Choose Responses if your integration is built around the newer instructions-and-input pattern. Choose Anthropic Messages when an Anthropic-compatible SDK or existing Messages adapter makes migration materially simpler. Our MiniMax Anthropic-compatible API guide covers that route in more detail.

Whichever interface you select, avoid comparing raw JSON strings in production. Parse JSON, validate its schema, and compare values. Also keep endpoint-specific response extraction and usage normalization inside a small adapter. That design makes switching interfaces far less disruptive and protects analytics from accounting differences. For broader setup material, see our MiniMax API guide, MiniMax M3 model overview, and MiniMax pricing guide. The primary references are MiniMax’s official API overview and official M3 model page.

Package maintenance — verified July 30, 2026: The repaired ZIP restores the generated datasets and schema required by the offline validator and adds a verified internal SHA-256 manifest. The published benchmark result is unchanged. ZIP SHA-256: ea47ff83c2351acc08c91ad8a8fd815e159359bfda48cd0643f9228d99eceea3.

Limitations

  • Accuracy is scoped to this dataset. A 100% score means all 50 deterministic cases, repeated twice, passed. It does not imply universal MiniMax M3 accuracy on open-ended reasoning, long context, coding, or domain-expert tasks.
  • The prompts were intentionally short. Effective input averaged 206.4 tokens and output averaged fewer than nine tokens. Long responses may expose different latency, formatting, or token-accounting behavior.
  • This was non-streaming Standard tier. Time to first token, streaming smoothness, Priority-tier behavior, tools, multimodal input, and multi-turn conversation state were outside the protocol.
  • Latency is a snapshot. One location and one run cannot establish a permanent endpoint ranking. Regional routing, client networking, time of day, and service load can change the distribution.
  • Textual agreement was deliberately strict. It treated internal JSON spacing as a string difference even when parsed objects were identical. That makes the 97% figure useful for spotting serialization variation, but 100% semantic accuracy is the more relevant application metric.

Frequently asked questions

Did one MiniMax M3 endpoint produce more correct answers?

No. Chat Completions, Responses, and Anthropic Messages each returned 100 correct responses from 100 requests. All 100 matched triplets contained three correct answers.

Why was exact agreement 97% if accuracy was 100%?

Three JSON triplets differed only in whitespace. One response used spaces after separators, while another used compact JSON. Every version parsed successfully and contained the same keys, strings, booleans, and values. There were no semantic disagreements.

Was the Anthropic-compatible endpoint cheaper?

Its corrected estimated cost was slightly lower in this test, but the difference across 100 short requests was less than five hundredths of a cent. That difference is too small to justify choosing an endpoint. Normalize cache-related usage fields and apply the current official rates to your own workload.

Which endpoint was fastest?

The Responses endpoint had the lowest median latency at 1,001 ms. Anthropic Messages recorded the lowest mean, the lowest p95, and the highest number of fastest-triplet wins. The differences were not large enough to declare a universal winner, so you should benchmark the endpoints from your own region using representative prompts.

Can I migrate without rewriting my application?

If your application already uses OpenAI- or Anthropic-compatible requests, MiniMax’s compatible endpoints can substantially reduce the required changes. However, you should still verify supported fields, handle each endpoint’s response structure correctly, normalize usage reporting, and run regression tests for the features your application uses.


Methodology note: This article reports the completed Protocol 1.0.0 run and uses the corrected summary for effective input tokens and estimated cost. Raw artifacts were sanitized before publication. No response was manually changed to improve its score.