Mistral Provider: Chat, Voxtral Transcription, and Embeddings
Configure the Mistral provider plugin for OpenClaw, covering chat completions, Voxtral batch and realtime transcription, and mistral-embed memory embeddings. Useful for developers wiring Mistral models into their setup.
Read this when
- You want to use Mistral models in OpenClaw
- You want Voxtral realtime transcription for Voice Call
- You need Mistral API key onboarding and model refs
The external mistral plugin ships four contracts: chat completions, media understanding (Voxtral batch transcription), realtime STT for Voice Call (Voxtral Realtime), and memory embeddings (mistral-embed).
| Property | Value |
|---|---|
| Provider id | mistral |
| Plugin | @openclaw/mistral-provider |
| Auth env var | MISTRAL_API_KEY |
| Onboarding flag | --auth-choice mistral-api-key |
| Direct CLI flag | --mistral-api-key <key> |
| API | OpenAI-compatible (openai-completions) |
| Base URL | https://api.mistral.ai/v1 |
| Default model | mistral/mistral-large-latest |
| Embedding model | mistral-embed |
| Voxtral batch | voxtral-mini-latest (audio transcription) |
| Voxtral realtime | voxtral-mini-transcribe-realtime-2602 |
Getting started
Install the plugin
openclaw plugins install @openclaw/mistral-provider
When a Gateway is already running, installation takes effect immediately; if not, it applies at the next startup. Refer to Apply changes and inspect.
Get your API key
Generate an API key from the Mistral Console.
Run onboarding
openclaw onboard --auth-choice mistral-api-key
Alternatively, supply the key inline:
openclaw onboard --mistral-api-key "$MISTRAL_API_KEY"
Set a default model
{
env: { vars: { MISTRAL_API_KEY: "sk-..." } },
agents: { defaults: { model: { primary: "mistral/mistral-large-latest" } } },
}
Verify the model is available
openclaw models list --provider mistral
Built-in LLM catalog
| Model ref | Input | Context | Max output | Notes |
|---|---|---|---|---|
mistral/mistral-large-latest | text, image | 262,144 | 16,384 | Default model |
mistral/mistral-medium-3-5 | text, image | 262,144 | 8,192 | Mistral Medium 3.5; adjustable reasoning |
mistral/mistral-small-latest | text, image | 262,144 | 16,384 | Mistral Small 4 latest; adjustable reasoning_effort |
mistral/mistral-small-2603 | text, image | 262,144 | 16,384 | Mistral Small 4 pinned; adjustable reasoning_effort |
mistral/codestral-latest | text | 128,000 | 4,096 | Coding |
mistral/mistral-medium-2508 | text, image | 128,000 | 8,192 | Deprecated; hidden; use Mistral Medium 3.5 |
mistral/devstral-medium-latest | text | 262,144 | 32,768 | Deprecated; hidden; use Mistral Medium 3.5 |
Check the plugin catalog row before you edit config:
openclaw models list --all --provider mistral --plain
Test a model without launching the Gateway:
openclaw infer model run --local \
--model mistral/mistral-medium-3-5 \
--prompt "Reply with exactly: mistral-ok" \
--json
Audio transcription (Voxtral)
Route batch audio transcription through the media understanding pipeline with Voxtral:
{
tools: {
media: {
models: [{ provider: "mistral", model: "voxtral-mini-latest", capabilities: ["audio"] }],
audio: {
enabled: true,
},
},
},
}
Tip
The media transcription path relies on
/v1/audio/transcriptions. For Mistral, the default audio model isvoxtral-mini-latest.
Voice Call streaming STT
Voxtral Realtime is registered by the mistral plugin as a streaming STT provider for Voice Call.
| Setting | Config path | Default |
|---|---|---|
| API key | plugins.entries.voice-call.config.streaming.providers.mistral.apiKey | Falls back to MISTRAL_API_KEY |
| Model | ...mistral.model | voxtral-mini-transcribe-realtime-2602 |
| Encoding | ...mistral.encoding | pcm_mulaw |
| Sample rate | ...mistral.sampleRate | 8000 |
| Target delay | ...mistral.targetStreamingDelayMs | 800 |
{
plugins: {
entries: {
"voice-call": {
config: {
streaming: {
enabled: true,
provider: "mistral",
providers: {
mistral: {
apiKey: "${MISTRAL_API_KEY}",
targetStreamingDelayMs: 800,
},
},
},
},
},
},
},
}
Note
OpenClaw sets Mistral realtime STT to
pcm_mulawat 8 kHz by default, which lets Voice Call pass Twilio media frames through unchanged. Switch toencoding: "pcm_s16le"with a matchingsampleRateonly when your upstream stream already carries raw PCM.
Advanced configuration
Adjustable reasoning
mistral/mistral-small-latest, mistral/mistral-small-2603, and mistral/mistral-medium-3-5 all allow adjustable reasoning when using the Chat Completions API through reasoning_effort. With none, the output carries a minimum of extra thinking; with high, the complete thinking traces appear ahead of the final answer.
Thinking starts out off by default. The session thinking levels below are what OpenClaw accepts, and it translates them into Mistral's API:
| OpenClaw thinking level | Mistral reasoning_effort |
|---|---|
| off / minimal | none |
| low / medium / high / xhigh / adaptive / max | high |
Warning
Do not pair Medium 3.5 reasoning mode with
temperature: 0. Reports indicate the Mistral HTTP API returns a 400 whenreasoning_effort="high"is sent together withtemperature: 0. Either leave temperature unset, or set thinking to off/minimal so that OpenClaw transmitsreasoning_effort: "none"before you apply a low temperature.
Sample model-scoped configuration for Medium 3.5 reasoning:
{
agents: {
defaults: {
model: { primary: "mistral/mistral-medium-3-5" },
models: {
"mistral/mistral-medium-3-5": {
params: { thinking: "high" },
},
},
},
},
}
Note
This parameter applies to no other model in the Mistral catalog. Mistral's own Magistral models are deprecated. For current API models, apply adjustable reasoning to Mistral Small 4 or Mistral Medium 3.5.
Memory embeddings
Memory embeddings can be served by Mistral through /v1/embeddings (the default model is mistral-embed):
{
memory: {
search: { provider: "mistral" },
},
}
Auth and base URL
- Authentication with Mistral goes through
MISTRAL_API_KEY(a Bearer header). - The provider base URL is
https://api.mistral.ai/v1unless changed, and it takes the standard OpenAI-compatible chat-completions request format. - The model chosen by default during onboarding is
mistral/mistral-large-latest. - Only change the base URL under
models.providers.mistral.baseUrlif Mistral officially publishes a regional endpoint that you require.
Related
-
Model selection, How to pick providers, model refs, and failover behavior.
-
Media understanding, Setting up audio transcription and choosing a provider.