Your AI coding tool was working fine yesterday. Today it 404s on every request with something like "No endpoints found for anthropic/claude-3-opus." and you're wondering what broke.
Nothing broke on your end. The model you had configured was retired by the provider, and your tool is just relaying the bad news.
What actually happened
Aider (and most agent CLIs) route chat through a provider like OpenRouter. OpenRouter doesn't actually host models — it fronts providers — and when a model is retired, it usually stays in the catalog with an empty endpoint list. Every request against it fails with the same 404:
httpx.HTTPStatusError: Client error '404 Not Found' for url 'https://openrouter.ai/api/v1/chat/completions'
litellm.OpenRouterException: {"error":{"message":"No endpoints found for anthropic/claude-3-opus.","code":404},...}
That "No endpoints found" message is OpenRouter's standard response for a model that no longer exists. It's not an aider bug, it's not a config typo, it's not your API key. The model slug you're using is gone.
How to check in 10 seconds
Confirm the slug is actually dead before you touch anything:
curl https://openrouter.ai/api/v1/models | grep -c claude-3-opus
Zero hits means the model is gone from the catalog. (You can also open the model's page in a browser — it'll 404.)
The fix
- List the models your tool can actually use now. For aider:
aider --list-models openrouter/
- Pick a current slug and switch to it. For aider:
aider --model openrouter/anthropic/claude-opus-4.7
Or edit your config file / AIDER_MODEL env var to match.
-
Fix the misleading crash that hides the real error. On Windows, aider renders errors through Rich, and the legacy console path can throw a second
OSError: [Errno 22]while printing the traceback. It looks like a second bug but it's just console-render noise. Run from Windows Terminal instead of the old conhost (or useaider --no-color) and the real error shows up cleanly.
The general rule: when a provider-backed agent CLI starts 404ing at the API, check the model slug first. It's the cheapest thing to test, and retired slugs are a recurring fact of life — providers bump model generations constantly, and old IDs don't stay live forever.
Top comments (0)