Mistral — Open Models for Text and Speech
Five Mistral models on DEVUP AI: three instruction-tuned text models from Nemo up to Small 3.2 with 128K context, and two Voxtral speech recognition models priced per minute. European open-weight models through one OpenAI-compatible API key, billed in Algerian Dinar.

Mistral AI took a position early and has held it: Apache 2.0, across releases. Not a bespoke licence with a revenue threshold, not an agreement that activates above a user count, not different terms for research and production. The same permissive licence that covers a weekend experiment covers a commercial deployment at scale.
That consistency matters more than it sounds. Open-weight models increasingly arrive with conditions attached — attribution requirements, monthly-active-user ceilings, separate commercial agreements — and each one is a question a legal team has to answer before anything ships. Choosing a Mistral model removes that step entirely, which is frequently the deciding factor rather than a benchmark point.
The engineering reflects a similar preference for things that work rather than things that impress. Grouped-query attention to keep the key-value cache small. Rotary embeddings tuned for the context length the model was actually trained at, rather than scaled at inference to reach an advertised number. Vocabularies sized for the languages the models were trained on, so non-English text costs fewer tokens per word. None of these are headline features; together they are why the models run well on hardware people own.
Multilingual coverage is a design priority rather than a side effect. European languages in particular were part of training rather than incidental, and the quality gap against English is narrow enough that a French, Spanish, or German product does not need a different model behind it.
On DEVUP AI, Mistral models are called through the same OpenAI-compatible endpoint as the rest of the catalogue: one API key, one base URL, one model identifier. Context limits, input types, and recommended settings differ between models, so check the individual model page before switching a production path.
Available Mistral Models
Deploy and access all published models in this family with unified DZD pricing and zero foreign card requirement.
| Model | Context | DZD in / 1M tokens | DZD out / 1M tokens | Actions |
|---|---|---|---|---|
| Voxtral-Mini-3B-2507mistralai/Voxtral-Mini-3B-2507 | 32K Tokens | 0.35 DZD / minute | View model | |
| Voxtral-Small-24B-2507mistralai/Voxtral-Small-24B-2507 | 32K Tokens | 1.05 DZD / minute | View model | |
| Mistral-Nemo-Instruct-2407mistralai/Mistral-Nemo-Instruct-2407 | 131K Tokens | 7 | 14 | View model |
| Mistral-Small-24B-Instruct-2501mistralai/Mistral-Small-24B-Instruct-2501 | 32K Tokens | 17.5 | 28 | View model |
| Mistral-Small-3.2-24B-Instruct-2506mistralai/Mistral-Small-3.2-24B-Instruct-2506 | 128K Tokens | 26.25 | 70 | View model |
Call any Mistral model
Every model on this page uses the same API key and standard OpenAI-compatible endpoint. The example below uses the featured model mistralai/Mistral-Small-3.2-24B-Instruct-2506.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEVUP_API_KEY"],
base_url="https://api.devupai.com/v1",
)
response = client.chat.completions.create(
model="mistralai/Mistral-Small-3.2-24B-Instruct-2506",
messages=[
{"role": "user", "content": "Hello world!"}
],
max_tokens=1024,
)
print(response.choices[0].message.content)import DevupAI from "devupai";
const client = new DevupAI({
apiKey: process.env.DEVUP_API_KEY,
});
async function main() {
const response = await client.chat.completions.create({
model: "mistralai/Mistral-Small-3.2-24B-Instruct-2506",
messages: [{ role: "user", content: "Hello world!" }],
max_tokens: 1024,
});
console.log(response.choices[0].message.content);
}
main();curl -X POST "https://api.devupai.com/v1/chat/completions" \
-H "Authorization: Bearer $DEVUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-Small-3.2-24B-Instruct-2506",
"messages": [
{ "role": "user", "content": "Hello world!" }
],
"max_tokens": 1024
}'Frequently Asked Questions
Commercial use, modification, and redistribution, with no conditions to satisfy and no agreement to sign. No revenue threshold that changes the terms, no user count that triggers a different licence, no attribution requirement. If you are shipping a paid product on open weights, that absence is the practical difference between a model you can deploy today and one that needs a conversation first.
Match the size to the task rather than starting at the top. Smaller models handle classification, routing, extraction, and formatting at volume, where latency and cost per call decide whether a design is workable. Larger ones suit general assistance, code, and analysis. Because the family shares an interface, testing a smaller model on your own workload costs one changed field — and that result is better evidence than any benchmark table.
Some do and some do not, and it varies by model rather than applying across the family. Check the individual model page before building around it. Assuming a capability a specific model lacks produces a failure at the point where someone looks at the output, not at the point where the request is sent.
European languages in particular were a significant part of training rather than incidental, and the measured gap against English is narrow — typically single digits on standard evaluations. In practice that means a French or Spanish product can run on the same model as its English counterpart. One habit helps: instruct the model to use the register and conventions of the target language rather than translating English phrasing, because answering correctly and sounding native are different things.
Yes, and the licence is why. Open weights under Apache 2.0 mean you can run a model inside infrastructure your data is not permitted to leave, fine-tune it on your own material, and inspect its behaviour directly. Several models in the range are small enough to run on a single card, and support spans the standard serving frameworks.
When the task is narrow, its definition is stable, and you run it constantly. Prompting adapts a model without training it, and it costs input tokens on every single call — a long system prompt repeated across a million requests is a permanent tax. Fine-tuning moves that instruction into the weights. It is the wrong answer for anything whose definition changes often, or where you have too few examples to train on.
Not for the core call. Every model uses the same OpenAI-compatible chat completions endpoint, so switching is a change to the model field. What does vary is context limits, input types, and recommended sampling settings — those live on the individual model pages and are worth reading before moving a production path.