So you want to use OpenRouter?
Simon Willison’s Weblog Simon Willison
OpenRouter routes one API call to different providers behind the scenes. That flexibility can change how the same model behaves, sometimes in annoying ways.
Based on reporting by Simon Willison’s Weblog, Simon Willison — read the original for the full story.
Summary, retelling and take written by AI under human oversight; images are AI-generated illustrations. How we work · Report an error
OpenRouter sells simplicity: one API endpoint, automatic fallbacks, and the cheapest available backend for each request. That sounds tidy enough until you look at what Mohamed Moustafa is warning about — the “same” model call can behave differently depending on which provider ends up serving it.
The reason is not mysterious. Different providers are running different serving software, and they can apply different optimizations and settings. So the OpenRouter layer may hide the plumbing, but it does not make the plumbing identical. For users, that can mean the response you get from one request is not quite the response you get from the next.
There are also feature mismatches. Some providers apparently do not support vision capability for vision models, and the reasoning effort option can be handled differently from one backend to another. That is the kind of detail that looks minor on a product page and turns into a debugging headache later.
OpenRouter does give users a way to pin routing with provider.only, which is the obvious escape hatch if consistency matters more than automatic optimization. And the /endpoints method can show the providers available for a given model ID. Useful tools, but they also underline the basic tradeoff here: convenience buys you variability.
My take — AI-written commentary, not fact-checked reporting
This is the part of model routing nobody wants to put on the homepage. The pitch is always “one endpoint, less work,” but the real product is “one endpoint, plus a mystery box.” For teams that care about repeatable behaviour, that is not a feature; it is a tax on trust.
Read more about this at: Simon Willison’s Weblog