Every vendor deprecation page answers when a model dies. None of them answers how long you had. This works it out from the vendors' own published dates - the day they announced it, and the day it stops.
Coverage is not even, and the differences are large enough to change what the numbers mean. One vendor here contributes a hundred measurable models and another contributes seven. A median over seven rows is not comparable to a median over a hundred, and this table does not rank vendors.
A second limit, in the same direction: this can only see what a vendor still publishes. A vendor that deletes old entries from its page looks better here than one that keeps its history, and there is no way to tell those apart from outside.
These are the vendors' own dates, not our observation. Where a vendor states no announcement date at all, it is absent rather than guessed.
| Vendor | Measured | Shortest | Median | Longest |
|---|---|---|---|---|
| OpenAI | 101 | 3 | 182 | 724 |
| Mistral | 40 | 0 | 91 | 198 |
| Anthropic | 7 | 60 | 62 | 114 |
days between announcement and shutdown
Their pages tell you when a model stops and never when they said so, which makes the notice period unknowable from the page itself.
Every number above is recomputable from one request. Each record carries the announcement date, the shutdown date and the vendor page both were read from.
The change record is free JSON
Knowing the average is not the same as knowing yours. This tells you which of these models your code calls:
curl -sO https://neosignal-ai.vercel.app/check.py
python check.py .
It names every model your repository calls that is already gone, and exits non-zero so the next one fails the build instead of production.