Mistral Large 4
Mistral Large 4 is Mistral's open-weight model that combines instruction following, reasoning and tool-using agent work in a single model. On LLMTR it is called through /v1/chat/completions; it takes text and image input and returns text.
| Model | Context | Max output |
|---|---|---|
mistral/mistral-large-4 |
524,288 | 262,144 |
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "mistral/mistral-large-4", "messages": [ { "role": "user", "content": "Find the race condition in this function." } ], "max_tokens": 4096 }'from openai import OpenAI
client = OpenAI(base_url="https://llmtr.com/v1", api_key="llmtr-your_key")
response = client.chat.completions.create( model="mistral/mistral-large-4", messages=[{"role": "user", "content": "Find the race condition in this function."}], max_tokens=4096,)print(response.choices[0].message.content)print(response.usage)Pricing
Section titled “Pricing”The model is offered on two dated price cards. The switch is automatic; the card in effect when the request is processed applies.
| Model | Period | Input / Cache read / Output ($/1M) |
|---|---|---|
mistral/mistral-large-4 |
Until 20 October 2026, 00:00 UTC | 0.68 / 0.07 / 2.09 |
mistral/mistral-large-4 |
From 20 October 2026, 00:00 UTC | 1.36 / 0.14 / 4.18 |
20 October 2026, 00:00 UTC is 03:00 Turkey time. Reasoning tokens are billed at the output price.
Reasoning is on by default
Section titled “Reasoning is on by default”If you send nothing, the model reasons before it answers. The reasoning trace is returned in reasoning_content and the final answer in content.
Reasoning tokens are counted in completion_tokens and billed as output; your max_tokens covers the reasoning and the answer together. A response that ends with finish_reason: "length" is incomplete: raise max_tokens or turn reasoning off.
The model accepts two levels:
| Level | When |
|---|---|
none |
Reasoning off. Short, cheap answers, classification, format conversion. |
high |
Hard problems, multi-step analysis. |
You can send the level in any of three ways:
{ "model": "mistral/mistral-large-4:none", "messages": [{ "role": "user", "content": "What is 17 + 25? Number only." }] }{ "model": "mistral/mistral-large-4", "reasoning_effort": "high", "messages": [{ "role": "user", "content": "Find the deadlock risk in this schema." }] }{ "model": "mistral/mistral-large-4", "reasoning": { "effort": "none" }, "messages": [{ "role": "user", "content": "What is 17 + 25? Number only." }] }Controls that do not work on this model:
- The
minimal,low,medium,xhighandmaxlevels return400 invalid_request; the error message lists the two accepted levels. "reasoning": trueand"reasoning": falsereturn400 invalid_request. To turn reasoning off, sendreasoning_effort: "none".include_reasoningis not applied: the field is removed from the request and reported inllmtr_dropped_parametersin the response. Whenever the model reasoned, the trace is returned inreasoning_content.
For the general rules on levels, see Reasoning Effort.
Conversation history
Section titled “Conversation history”In multi-turn conversations, send earlier assistant messages back as you received them, reasoning_content included. The model reads its earlier reasoning from that field; in tool-calling loops, consistency across turns depends on it. Replayed reasoning is billed as input tokens. If you remove the field you spend fewer tokens, but the model no longer knows what it decided in the earlier turn.
Image input
Section titled “Image input”Images are sent as image_url parts; base64 data URLs and https:// addresses are accepted.
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "mistral/mistral-large-4", "reasoning_effort": "none", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What does the error message in this screenshot say?" }, { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } } ] } ], "max_tokens": 512 }'An https:// address is downloaded by the provider itself, and it may not be able to reach every address. When an address cannot be downloaded the request fails with 400; in that case send the image as a base64 data URL.
There is no document (PDF), audio or video input on this model: file_url, input_audio and video_url parts return 400 unsupported_input.
Tool calling
Section titled “Tool calling”Tool calling is supported. For tool_choice, "auto", "none" and a named function work. The model can return more than one tool call in a single response; handle the whole tool_calls array or send parallel_tool_calls: false.
tool_choice: "required" is not available on this model. The request is refused with 400 invalid_request, and error.details.reason carries tool_choice_required_unsupported. To make a tool call mandatory, name the function:
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "mistral/mistral-large-4", "reasoning_effort": "none", "messages": [{ "role": "user", "content": "Fetch order 12345." }], "tools": [{ "type": "function", "function": { "name": "lookup_order", "description": "Fetches an order by its order number", "parameters": { "type": "object", "properties": { "orderId": { "type": "string" } }, "required": ["orderId"] } } }], "tool_choice": { "type": "function", "function": { "name": "lookup_order" } }, "max_tokens": 512 }'If you have several tools and the model should decide which one to call, use "auto" and say in the prompt when the tool should be used. See Tool Calling for details.
Structured output
Section titled “Structured output”response_format accepts both json_object and json_schema; you can send strict: true with json_schema.
{ "response_format": { "type": "json_schema", "json_schema": { "name": "capital", "strict": true, "schema": { "type": "object", "properties": { "country": { "type": "string" }, "capital": { "type": "string" } }, "required": ["country", "capital"], "additionalProperties": false } } }}Prompt cache
Section titled “Prompt cache”Repeated prompt prefixes are cached automatically; you do not need to send a separate parameter. Tokens read from the cache are reported in usage.prompt_tokens_details.cached_tokens and billed at the cache read price instead of the input price.
A cache hit is not guaranteed and may not come on the first repeat of the same prefix. If you work with a long, fixed system prompt, keep that prefix byte-for-byte identical in every request.
Streaming
Section titled “Streaming”stream: true is supported. The reasoning trace streams in delta.reasoning_content and the answer in delta.content. Send stream_options: { "include_usage": true } and usage arrives in the final chunk.
Limits
Section titled “Limits”- Context is 524,288 tokens.
- Output is at most 262,144 tokens. A higher
max_tokensis refused with400. temperaturemust be between 0 and 1.5. A higher value fails with422.- Do not send
seedoruser. A request that carries either fails with422. - There is no input other than text and images.