OpenAI model_not_found: meaning, cause, and fix

Muscle memory from five years of typo-hunting says check your spelling. The 2026 base rate says check the shutdown calendar first — the ID you're calling may have retired right on schedule.

By the benchr team · · Verified against OpenAI's error documentation, June 12, 2026

OpenAIHTTP 404severity: highmodel availability

Four causes, one statistically likely

A model 404 has four parents. The ID was retired. The ID carries a typo or the wrong snapshot suffix. The model lives on a different endpoint, since some 2026 models are served only through the Responses API and 404 on /v1/chat/completions. Or your account or region was never granted access. The response looks identical in all four cases.

What's shifted is the odds. Typos haven't gotten more common; retirements have. With nine IDs leaving in one October wave and the Assistants API sunsetting on August 26, 2026, a model that vanished on purpose is the explanation that fits most of these failures this year.

What it returns

HTTP/1.1 404 Not Found

{
  "error": {
    "message": "The model `gpt-4o-2024-05-13` does not exist or you do not have access to it.",
    "type": "invalid_request_error",
    "code": "model_not_found"
  }
}

The wording does two jobs at once: "does not exist or you do not have access" covers every cause without revealing which one applies to you. The backticked ID echoes whatever your request carried, so a stale snapshot suffix or a transposed character shows up right in the error text.

Check the graveyard first

October 23, 2026 is the date that matters. benchr's deprecations record lists nine OpenAI IDs going dark that day: gpt-4o-2024-05-13, gpt-4-0613, gpt-4-turbo, gpt-4-1106-preview, gpt-3.5-turbo-0125, o1, o1-pro, o3-mini, and o4-mini. The official replacements are GPT-5.5 and GPT-5.4 mini.

If your ID sits on that list, you're done diagnosing. The retirement-wave record maps every ID to its successor, the gpt-4o page covers the heaviest-traffic migration, and the tracker shows which shutdowns come next so the following 404 doesn't surprise you either.

The config fix

The durable version of this fix is a startup check: ask the API what your key can see, and refuse to boot on an ID that isn't there.

// Node: verify the configured model at startup
const MODEL = process.env.OPENAI_MODEL ?? "gpt-5";

const res = await fetch("https://api.openai.com/v1/models", {
  headers: { Authorization: `Bearer ${process.env.OPENAI_API_KEY}` },
});
const { data } = await res.json();

if (!data.some((m) => m.id === MODEL)) {
  console.error(`Model "${MODEL}" is not available to this key.`);
  console.error("Retired? Official replacements: GPT-5.5 or GPT-5.4 mini.");
  process.exit(1);
}

Keep the model ID in config or an environment variable rather than scattered through call sites. Retirements arrive on a published calendar, and a swap should be a one-line change with a deploy, not an afternoon of grep.

Frequently asked

Why did code that worked yesterday 404 today?

Models retire on fixed dates, not gradually. The day a shutdown lands, every call to that ID fails at once; October 23, 2026 removes nine OpenAI IDs in a single pass, so whole fleets break the same morning without anyone deploying a thing.

Does this 404 mean my API key is bad?

No. A bad key fails as a 401 before any model lookup happens. Getting a 404 means authentication succeeded and the model is what's missing, retired, or gated for your account.

What should gpt-4o traffic move to?

OpenAI's official replacement is GPT-5.5. benchr's cost-matched pick is GPT-5 at $1.25 in and $10 out per million tokens, which lands far closer to gpt-4o-era bills. The gpt-4o record walks both paths.

Changelog

  • — Published. Message pattern, status code, and the October 23 retirement list checked against OpenAI's error documentation and benchr's deprecations record.

Sources

  • OpenAI error codes guide: developers.openai.com/api/docs/guides/error-codes (verified June 12, 2026)
  • OpenAI deprecations: developers.openai.com/api/docs/deprecations (verified June 12, 2026)
  • benchr api-errors.json: the machine-readable entry for this error