MaaS_MiniMax_M3.1
Model Overview
| Item | value |
|---|---|
| Model ID (model) | MiniMax-M3.1-Flash |
| context window | 1,000,000 tokens (total of input and output) |
| Maximum Output | For the max_completion_tokensparameter of Chat Completions and the max_tokensparameter of Anthropic Messages: the recommended value is 131072 (128K), the upper limit is 524288 (512K), and the minimum value is 1. The max_output_tokensparameter of Responses does not have the same specified values |
| input modality | text, images, and videos |
| Output Modality | Text; additionally returns reasoning content and supports tool calls |
| Default Thinking Mode | Enabled and cannot be disabled. The default thinking depth is max, and can be adjusted to low, medium, high, xhigh, max |
| Explicit Prompt Cache | Anthropic cache_controlis not supported. The response usagemay still return cache counts; Responses provide the prompt_cache_key |
Request Protocol
https
Header
| Parameter Name | Type | Required | Description |
|---|---|---|---|
| Content-Type | string | Yes | application/json |
| Authorization | string | Yes | Bearer ${your_AK} |
OpenAI Chat Completions
Request URL
POST https://genaiapi.cloudsway.net/v1/ai/{endpointPath}/chat/completions
Request Body Parameters
| Parameter Name | Secondary Parameters | Three-level parameters | CET-4 Parameters | Type | Required | Description |
|---|---|---|---|---|---|---|
| model | - | - | - | string | Yes | Fixed as MaaS_Minimax_M3.1_flash_20261019 (original model from the vendor: MiniMax-M3.1-Flash) |
| messages | - | - | - | array[object] | Yes | Conversation history. Supports text, images, videos and tool calls. For multi-round tool calls, the complete assistant message (including tool_calls) and reasoning_content must be carried back as is. |
| role | - | - | string | Yes | system, user, assistant, tool |
|
| name | - | - | string | No | Sender name. Used for differentiation when multiple instances of the same role exist. | |
| content | - | - | string or array | No | An array of text or content blocks. The schema only lists roleas required |
|
| type | - | string | Yes | Required when the content block is an array: text, image_url, video_url |
||
| text | - | string | No | type= texttext at this time |
||
| image_url | - | object | No | type= image_url. Supported formats: JPEG, PNG, GIF, WEBP. Single image file size ≤ 10 MB, total request body size ≤ 64 MB |
||
| url | string | Yes | Image URL or Base64 data URL | |||
| detail | string | No | low, default, high, default value is default. Approximate per-image token usage: low usually ranges from several hundred up to around 600 tokens; default typically falls between 1k–3k, with a maximum of roughly 5k; high usually sits in the thousands, topping out at 15k+. Refer to the response usagefor the exact figure |
|||
| max_long_side_pixel | integer | No | Longest side in pixels, minimum 1 | |||
| video_url | - | object | No | type= video_url. Supported formats: MP4, AVI, MOV, MKV. URL/Base64 video size ≤ 50 MB; |
||
| url | string | Yes | Video URL or Base64 data URL | |||
| detail | string | No | Frame extraction resolution: low, default, high, default is default |
|||
| fps | number | No | Frame extraction frequency, default value is 1, range [0.2, 5]. A higher value means higher sensitivity, more tokens and slower processing speed. | |||
| max_long_side_pixel | integer | No | Maximum side pixel count of a single frame, minimum value: 1 | |||
| tool_calls | - | - | array[object] | No | Tool calls in the assistant message. Must be echoed back exactly as is in the next round | |
| id | - | string | Yes | Tool Call ID | ||
| type | - | string | Yes | Fixed function |
||
| function | - | object | Yes | function call | ||
| name | string | Yes | function name | |||
| arguments | string | Yes | function input parameter, JSON string | |||
| tool_call_id | - | - | string | No | Required when role= tool, take the value of tool_calls[]. idfrom the previous round. Ignored for other roles |
|
| thinking | - | - | - | object | No | This model enforces thinking; if omitted, it is equivalent to being enabled. disabledReturns HTTP 400 (error code 2013) |
| type | - | - | string | No | This model only accepts adaptive, with adaptiveas the default. disabledwill return HTTP 400 |
|
| reasoning_effort | - | - | - | string | No | Depth of thinking, only this model actually takes effect. low, medium, high, xhigh, max, default value maxis omitted. nonereturns HTTP 400. The higher the gear, the more thinking tokens and the higher the latency. |
| reasoning_split | - | - | - | boolean | No | true, the thinking content goes into reasoning_content; when set to false, the thinking content remains in contentvia think tags. This model does not support false. This field does not toggle the thinking function. No default value is provided in the source document. |
| stream | - | - | - | boolean | No | Whether to use streaming; defaults to false |
| stream_options | - | - | - | object | No | Streaming Options |
| include_usage | - | - | boolean | No | Whether to return token usage in the stream, default false |
|
| max_completion_tokens | - | - | - | integer | No | Maximum generation length. This model recommends 131072 (128K), with a maximum limit of 524288 (512K) and a minimum value of 1. When generation stops due to length, finish_reasonwill be length |
| temperature | - | - | - | number | No | Sampling temperature, range [0,2], default 1 |
| top_p | - | - | - | number | No | Nuclear sampling, range [0,1]. The default value for this model is 0.95 |
| tools | - | - | - | array[object] | No | Tool definition, currently only supports function |
| type | - | - | string | Yes | Fixed function |
|
| function | - | - | object | Yes | function definition | |
| name | - | string | Yes | function name | ||
| description | - | string | No | function description | ||
| parameters | - | object | Yes | function parameter JSON Schema | ||
| max_tokens | - | - | - | integer | No | Deprecated, please use max_completion_tokensinstead. Minimum value is 1. Thinking tokens count towards this limit; a value too small will result in finish_reason= lengthand an empty content. |
Request Example
curl -X POST 'https://genaiapi.cloudsway.net/v1/ai/{endpointPath}/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${your_AK}' \
-d '{
"model": "MaaS_Minimax_M3.1_flash_20261019",
"reasoning_effort": "max",
"thinking": {"type": "adaptive"},
"max_completion_tokens": 131072,
"messages": [
{"role": "user", "content": "Which is bigger, 9.11 or 9.9?"}
]
}'
Response Example
{
"id": "066b36619b147e326d17053cccdef70f",
"object": "chat.completion",
"created": 1780220769,
"model": "MaaS_Minimax_M3.1_flash_20261019",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "9.9 is bigger. 9.9 = 9.90, which is greater than 9.11.",
"reasoning_content": "Comparing 9.11 and 9.90, the decimal part 90 > 11, so 9.9 is bigger."
}
}
],
"usage": {
"prompt_tokens": 170,
"completion_tokens": 303,
"total_tokens": 473,
"prompt_tokens_details": {"cached_tokens": 157}
},
"input_sensitive": false,
"output_sensitive": false,
"base_resp": {"status_code": 0, "status_msg": ""}
}
finish_reasonValue options: stop, length, content_filter, tool_calls. Simple turns may not return reasoning_content, so check for null before reading. The Usage field in OpenAPI only declares total_tokens; official examples also return prompt_tokens, completion_tokens, and prompt_tokens_details.cached_tokens.
Example of streaming request
curl -X POST 'https://genaiapi.cloudsway.net/v1/ai/{endpointPath}/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${your_AK}' \
-d '{
"model": "MaaS_Minimax_M3.1_flash_20261019",
"reasoning_effort": "max",
"stream": true,
"stream_options": {"include_usage": true},
"messages": [{"role": "user", "content": "Which is bigger, 9.11 or 9.9?"}]
}'
```plain text data: {"id":"066a2db7cb70134c45f5d6443d434c2c","object":"chat.completion.chunk","created":1780153015,"model":"MaaS_Minimax_M3.1_flash_20261019","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"Comparing the two decimal numbers"},"finish_reason":null}]}
data: {"id":"066a2db7cb70134c45f5d6443d434c2c","object":"chat.completion.chunk","created":1780153015,"model":"MaaS_Minimax_M3.1_flash_20261019","choices":[{"index":0,"delta":{"role":"assistant","content":"9.9 is bigger."},"finish_reason":"stop"}]}
`The finish_reason of streaming chunks in the origin server enumeration is stop`, `length`, and is null when not finished.
### SDK Calling Method
```python
from openai import OpenAI
client = OpenAI(
base_url="https://genaiapi.cloudsway.net/v1/ai/{endpointPath}",
api_key="${your_AK}",
)
response = client.chat.completions.create(
model="MaaS_Minimax_M3.1_flash_20261019",
reasoning_effort="max",
messages=[{"role": "user", "content": "Which is bigger, 9.11 or 9.9?"}],
extra_body={"thinking": {"type": "adaptive"}},
)
print(response.choices[0].message.reasoning_content)
print(response.choices[0].message.content)
OpenAI Responses
Request URL
POST https://genaiapi.cloudsway.net/v1/ai/{endpoint}/responses
Request Body Parameters
| Parameter Name | Secondary Parameters | Three-level parameters | CET-4 Parameters | Type | Required | Description |
|---|---|---|---|---|---|---|
| model | - | - | - | string | Yes | Fixed as MaaS_Minimax_M3.1_flash_20261019 (original model from the vendor: MiniMax-M3.1-Flash) |
| input | - | - | - | string or array | Yes | Plain text, or an array of conversation history |
| type | - | - | string | No | Array item types: message (default), function_call, function_call_output, reasoning |
|
| role | - | - | string | No | When type=message: user, assistant, system, developer, tool |
|
| content | - | - | string or array | No | type= messagetext or multimodal content blocks |
|
| type | - | string | Yes | input_text, output_text, input_image, input_video |
||
| text | - | string | No | input_text/ output_texttext |
||
| image_url | - | string or object | No | input_image. Formats: JPEG, PNG, GIF, WEBP |
||
| url | string | Yes | Required when in object format; valid values: image URL or Base64 string | |||
| detail | string | No | low, default, high; the default is default |
|||
| video_url | - | string or object | No | input_video. Formats: MP4, AVI, MOV, MKV. Large files are processed via the File API |
||
| url | string | Yes | Required when in object format; valid values: video URL or Base64 | |||
| fps | number | No | Frame extraction frequency, default value 1, range [0.2, 5] | |||
| detail | string | No | low, default, high; the default is default |
|||
| max_long_side_pixel | integer | No | The pixel count of the longest edge of the video frame. No minimum/maximum values are provided in the source document. | |||
| call_id | - | - | string | No | function_callor function_call_outputtool call ID |
|
| name | - | - | string | No | function_callfunction name |
|
| arguments | - | - | string | No | function_callparameters, JSON string |
|
| output | - | - | string or array | No | function_call_outputtool response |
|
| summary | - | - | array | No | type= reasoningreasoning snippet |
|
| type | - | string | No | summary_text |
||
| text | - | string | No | Reasoning Text | ||
| instructions | - | - | - | string | No | System Instructions |
| max_output_tokens | - | - | - | integer | No | Maximum output tokens. Thought tokens count towards this limit; a value that is too small will result in status= incomplete, and there will be no messagein output. The source document does not specify the upper and lower limits for this value |
| temperature | - | - | - | number | No | Sampling temperature. The specified range is (0,1], with a default value of 1; the schema defines a minimum of 0 and a maximum of 1. This differs from the [0,2] range used for Chat Completions |
| top_p | - | - | - | number | No | Kernel sampling. The description is in the range (0,1], with a default value of 0.95; the minimum of the schema is 0 and the maximum is 1 |
| stream | - | - | - | boolean | No | truemeans moving SSE when enabled, default value is false |
| tools | - | - | - | array[object] | No | Tool List |
| type | - | - | string | Yes | Fixed function |
|
| name | - | - | string | Yes | function name | |
| description | - | - | string | No | function description | |
| parameters | - | - | object | No | Parameter JSON Schema | |
| tool_choice | - | - | - | string | No | Only auto, where the model decides whether to invoke tools |
| metadata | - | - | - | object | No | Request metadata, where both keys and values are strings |
| prompt_cache_key | - | - | - | string | No | Prompt cache routing identifier |
| text | - | - | - | object | No | Output Format Control |
| format | - | - | object | No | format object | |
| type | - | string | No | Only text, default text |
||
| reasoning | - | - | - | object | No | This model always performs reasoning even when reasoningis omitted |
| effort | - | - | string | No | The model-specific clause accepts low, medium, high, xhigh, max; the default value maxmay be omitted. nonereturns HTTP 400. The schema enumeration additionally includes minimal, which the source document does not specify whether the model accepts. |
Request Example
curl -X POST 'https://genaiapi.cloudsway.net/v1/ai/{endpoint}/responses' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${your_AK}' \
-d '{
"model": "MaaS_Minimax_M3.1_flash_20261019",
"reasoning": {"effort": "max"},
"input": "Which is bigger, 9.11 or 9.9?"
}'
Response Example
{
"id": "07229fa48d63ee86b664bb1c3a2257b7",
"object": "response",
"created_at": 1792240804,
"model": "MaaS_Minimax_M3.1_flash_20261019",
"status": "completed",
"output": [
{
"id": "07229fa48d63ee86b664bb1c3a2257b7_rs",
"type": "reasoning",
"status": "completed",
"summary": [],
"content": [{"type": "reasoning_text", "text": "9.9 = 9.90, which is greater than 9.11."}]
},
{
"id": "07229fa48d63ee86b664bb1c3a2257b7_msg",
"type": "message",
"status": "completed",
"role": "assistant",
"content": [{"type": "output_text", "text": "9.9 is bigger than 9.11.", "annotations": []}]
}
],
"output_text": "9.9 is bigger than 9.11.",
"usage": {
"input_tokens": 218,
"output_tokens": 68,
"total_tokens": 286,
"input_tokens_details": {"cached_tokens": 189},
"output_tokens_details": {"reasoning_tokens": 36}
},
"error": null,
"incomplete_details": null
}
status values: completed, incomplete, failed. incomplete_details.reason values: max_output_tokens, content_filter. output may also contain type=function_call (including call_id, name, arguments).
Stream Request Example
curl -X POST 'https://genaiapi.cloudsway.net/v1/ai/{endpoint}/responses' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${your_AK}' \
-d '{
"model": "MaaS_Minimax_M3.1_flash_20261019",
"reasoning": {"effort": "max"},
"stream": true,
"input": "Which is bigger, 9.11 or 9.9?"
}'
The streaming event types from the origin server, in order, include: response.created, response.in_progress, response.output_item.added, response.content_part.added, response.reasoning_text.delta, response.reasoning_text.done, response.content_part.done, response.output_item.done, response.output_text.delta, response.output_text.done, response.completed.
data: {"type":"response.created","sequence_number":0,"response":{"id":"07229fa484712ce19b28c3e706b4f60c","object":"response","model":"MaaS_Minimax_M3.1_flash_20261019","status":"in_progress","output":[]}}
data: {"type":"response.reasoning_text.delta","sequence_number":5,"delta":"9.9 = 9.90"}
data: {"type":"response.output_text.delta","sequence_number":12,"delta":"9.9 is bigger."}
data: {"type":"response.completed","sequence_number":20,"response":{"id":"07229fa484712ce19b28c3e706b4f60c","object":"response","model":"MaaS_Minimax_M3.1_flash_20261019","status":"completed"}}
SDK Calling Method
from openai import OpenAI
client = OpenAI(
base_url="https://genaiapi.cloudsway.net/v1/ai/{endpoint}",
api_key="${your_AK}",
)
response = client.responses.create(
model="MaaS_Minimax_M3.1_flash_20261019",
reasoning={"effort": "max"},
input="Which is bigger, 9.11 or 9.9?",
)
print(response.output_text)
Anthropic Messages
Request URL
POST https://genaiapi.cloudsway.net/{endpoint}/v1/messages
Request Body Parameters
| Parameter Name | Secondary Parameters | Three-level parameters | CET-4 Parameters | Type | Required | Description |
|---|---|---|---|---|---|---|
| model | - | - | - | string | Yes | Fixed as MaaS_Minimax_M3.1_flash_20261019 (original model from the vendor: MiniMax-M3.1-Flash) |
| max_tokens | - | - | - | integer | No | Not listed as required in the OpenAPI, but all examples will pass a value. This model recommends 131072 (128K), with a maximum limit of 524288 (512K) and a minimum value of 1. The reasoning tokens count towards this upper limit; an excessively small value will result in stop_reason= max_tokenswith no text output. |
| messages | - | - | - | array[object] | Yes | Dialogue history. The model uses alternating user/ assistantformat. Subsequent turns must carry back the thinkingblock (including the signature) as is |
| role | - | - | string | Yes | This model uses user, assistant. The schema also lists user_system, group, sample_message_user, sample_message_ai, and the source document does not specify whether this model supports them. |
|
| content | - | - | string or array | Yes | Plain text, or an array of content blocks | |
| type | - | string | Yes | text, image, video, tool_use, tool_result, thinking, mid_conv_system. thinkingis only used for postback of the previous round's assistant thinking |
||
| text | - | string | No | type= texttext |
||
| source | - | object | No | type= imageor type= videomedia source |
||
| type | string | Yes | base64or url |
|||
| media_type | string | No | Required when using base64, e. g., image/png, video/mp4. Image: JPEG/PNG/GIF/WEBP. Video: MP4, AVI, MOV, MKV |
|||
| data | string | No | Base64 Media Bytes | |||
| url | string | No | Public network URL. URL/Base64: video ≤ 50 MB, image ≤ 10 MB, request body ≤ 64 MB; | |||
| detail | string | No | low, default, high, default is default. The approximate image usage is the same as the detail table for Chat Completions. |
|||
| fps | number | No | Video frame extraction, default value is 1, range is [0.2, 5] | |||
| max_long_side_pixel | integer | No | The pixel count of the longest edge of an image or video frame, minimum value: 1 | |||
| id | - | string | No | postback tool_usetool call ID |
||
| name | - | string | No | postback tool_usetool name |
||
| input | - | object | No | postback tool_usetool input parameters |
||
| tool_use_id | - | string | No | The tool_use ID corresponding to tool_result |
||
| content | - | string or array | No | tool_resultis the execution result, which can be a string or an array of text/image content blocks |
||
| thinking | - | string | No | postback thought text | ||
| signature | - | string | No | Consider the signature, which must be postedback as-is in subsequent rounds | ||
| system | - | - | - | string or array | No | System prompt. Array items are type= textplus text. cache_controlnot supported by this model |
| stream | - | - | - | boolean | No | Whether to use streaming; defaults to false |
| temperature | - | - | - | number | No | Range [0,2], default value is 1. The recommended value for compatibility note is 1 |
| top_p | - | - | - | number | No | Range [0,1]. The default value of this model is 0.95 |
| tools | - | - | - | array[object] | No | Tool Definition |
| name | - | - | string | Yes | Tool Name | |
| description | - | - | string | No | Tool Description | |
| input_schema | - | - | object | Yes | Input JSON Schema | |
| tool_choice | - | - | - | object | No | Tool selection strategy, only supports auto |
| type | - | - | string | Yes | Fixed auto |
|
| thinking | - | - | - | object | No | This model is always active. If you pass type, it can only be adaptive;disabledwill return HTTP 400 |
| type | - | - | string | No | This model only accepts adaptive. disabledreturns HTTP 400 |
|
| output_config | - | - | - | object | No | Output configuration. Use effortto adjust the thinking depth of this model |
| effort | - | - | string | No | low, medium, high, xhigh, max; when omitted, the default is max. none returns HTTP 400 |
|
| metadata | - | - | - | object | No | Request metadata |
| user_id | - | - | string | No | End-user ID, used for aggregation, rate limiting and billing analysis |
Request Example
curl -X POST 'https://genaiapi.cloudsway.net/{endpoint}/v1/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${your_AK}' \
-d '{
"model": "MaaS_Minimax_M3.1_flash_20261019",
"max_tokens": 4096,
"thinking": {"type": "adaptive"},
"output_config": {"effort": "max"},
"messages": [
{"role": "user", "content": "Which is bigger, 9.11 or 9.9?"}
]
}'
Response Example
{
"id": "066b367ba949a58a9d6829b4bf8cbcd4",
"type": "message",
"role": "assistant",
"model": "MaaS_Minimax_M3.1_flash_20261019",
"content": [
{
"type": "thinking",
"thinking": "9.9 = 9.90, which is greater than 9.11.",
"signature": "6d0315c818f9664ff185dabaa22cd89f2bf28a3a52122095bce23d905471ec5f"
},
{
"type": "text",
"text": "9.9 is bigger than 9.11."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 13,
"output_tokens": 149,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 159
}
}
stop_reasonValue options: end_turn, max_tokens, tool_use. When a tool is called, the content block is tool_use (id, name, input). The response will not contain image, video, tool_result, or mid_conv_system blocks.
Stream Request Example
curl -X POST 'https://genaiapi.cloudsway.net/{endpoint}/v1/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${your_AK}' \
-d '{
"model": "MaaS_Minimax_M3.1_flash_20261019",
"max_tokens": 4096,
"output_config": {"effort": "max"},
"stream": true,
"messages": [{"role": "user", "content": "Which is bigger, 9.11 or 9.9?"}]
}'
Event types: message_start, ping, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. The delta types include thinking_delta, text_delta, signature_delta. When an error occurs during streaming, it is event: error.
event: message_start
data: {"type":"message_start","message":{"id":"066b367ba949a58a9d6829b4bf8cbcd4","type":"message","role":"assistant","model":"MaaS_Minimax_M3.1_flash_20261019","content":[],"stop_reason":null}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"9.9 = 9.90"}}
event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"text_delta","text":"9.9 is bigger."}}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":149}}
event: message_stop
data: {"type":"message_stop"}
SDK Calling Method
import anthropic
client = anthropic.Anthropic(
base_url="https://genaiapi.cloudsway.net/{endpoint}/v1",
api_key="${your_AK}",
)
message = client.messages.create(
model="MaaS_Minimax_M3.1_flash_20261019",
max_tokens=4096,
output_config={"effort": "max"},
messages=[{"role": "user", "content": "Which is bigger, 9.11 or 9.9?"}],
)
for block in message.content:
if block.type == "thinking":
print(block.thinking)
elif block.type == "text":
print(block.text)