I probed all 46 models exposed to my Mistral Free account - even the Vibe CLI models have a 0 RPM limit
I wanted to give Mistral Vibe a try today, mostly to see what the Free tier is actually like.
For reference, I'm using **Mistral Vibe v2.25.1** on a Free account.
The initial experience was a bit confusing.
After installing Vibe and logging in, the model picker basically gave me **Mistral Medium 3.5 as the hosted default**, plus my local models. So I assumed Medium 3.5 was what I was supposed to use.
Except... it didn't work.
Even a tiny prompt just made Vibe sit there retrying. The debug log eventually showed repeated HTTP 429 responses.
At first I thought I had somehow managed to hit a rate limit immediately, which would have been impressive considering I had barely used the account. :D
So I tried the same request directly against the API and looked at the response headers:
HTTP/2 429 x-ratelimit-limit-req-minute: 0 x-ratelimit-remaining-req-minute: 0
Turns out I didn't *reach* the Medium rate limit.
My rate limit for Medium is literally **0 requests per minute**. ಠ\_ಠ
At that point I had a different question:
**What models can I actually use on the Free tier?**
And this is where I think the current UX really falls apart.
Vibe doesn't show me the other hosted models I can actually use by default. The account/dashboard information doesn't make it obvious which models are available to my tier either, and `/v1/models` returns **46 models** for my account.
So I ended up doing what any reasonable person would do and sent a tiny 1-token probe to all 46 models returned by the API. :D
For the chat-capable models, this is what I found:
|Model / family|Result|RPM|TPM| |:-|:-|:-|:-| |Ministral 3B|200|750|1,300,000| |Ministral 8B|200|188|625,000| |Ministral 14B|200|30|937,500| |Codestral / Mistral Code|200|125|625,000| |Voxtral Small|200|60|50,000| |Mistral Small|429|**0**|\-| |Mistral Medium|429|**0**|\-| |Magistral Small|429|**0**|\-| |Magistral Medium|429|**0**|\-| |Vibe CLI models|429|**0**|\-|
The Codestral result was probably the biggest surprise for me.
`codestral-latest` works perfectly fine on my Free account with:
125 RPM 625,000 TPM
Same for the Ministral models, with limits ranging from 30 RPM for 14B all the way up to 750 RPM for 3B.
But none of those were the obvious hosted choices Vibe presented to me when I started it.
Meanwhile the model Vibe *did* present as the hosted default was Medium 3.5, which my account currently gets 0 RPM for.
# The Vibe-specific models make this even more confusing
`/v1/models` returns three models that appear to be specifically intended for Vibe:
mistral-vibe-cli-fast mistral-vibe-cli-latest mistral-vibe-cli-with-tools
All three currently return HTTP 429 with:
x-ratelimit-limit-req-minute: 0 x-ratelimit-remaining-req-minute: 0
But here's the weird part:
**Those** `mistral-vibe-cli-*` **models aren't shown as selectable models in Vibe's** `/model` **picker either.**
So from the user's perspective, with Vibe v2.25.1:
* Vibe starts with Medium 3.5 as the hosted default * Medium 3.5 gets 0 RPM on my Free account * several other hosted models actually work on Free * those working models aren't presented to me by default * the API exposes three Vibe-specific models * those Vibe-specific models aren't exposed in the model picker * and all three currently get 0 RPM anyway
At that point it's very difficult to understand what "Vibe Free" is actually supposed to give me access to.
# Other models
There are also embedding, OCR, TTS, realtime/audio and moderation models among the 46 returned models.
Those returned `400 invalid_model` when sent to `/v1/chat/completions`, but **I'm not counting those as unavailable**. This probe deliberately used the chat completions endpoint, so those models need to be tested through their respective APIs.
Leanstral was another special case: it returned `labs_not_enabled` and explicitly told me Labs needs to be enabled for the organization.
So again, I don't consider those Free-tier denials.
I also tried a couple of additional models manually. Some return a proper `403 tier_not_allowed`, which is actually much clearer: the model exists, my tier just doesn't include it. Fair enough.
# What I would expect from the model picker
What bothers me isn't really that the Free tier has restrictions.
It's that as a user I shouldn't have to reverse-engineer those restrictions from API responses.
I'd much rather open `/model` in Vibe and see something like:
Mistral Medium 3.5 unavailable on Free Mistral Small unavailable on Free Codestral available · 125 RPM / 625k TPM Ministral 14B available · 30 RPM / 937.5k TPM Ministral 8B available · 188 RPM / 625k TPM Ministral 3B available · 750 RPM / 1.3M TPM GLM 5.2 requires another tier ...
Show me all the relevant hosted models.
Let me select the ones my account can actually use.
Grey out the ones I can't use and add a short note explaining why.
That would have turned this entire experience into:
**install Vibe -> open model picker -> choose an available model -> start coding**