TL;DR — Bookmark page: real LLM API errors indexed by their exact error strings, because that is how you search when things break at 2am. Each entry: the verbatim message → what it actually means → the fix, with a deep-dive link. Maintained as new errors surface (latest additions: 2026-09 — OpenAI quota/context/model/auth, Anthropic billing/529/context, Gemini 429, local-model connection refused). If you hit an error that is not here, that is a gap we want to know about.
DeepSeek — thinking mode & reasoning_content family
The most-hit error family of 2026, caused by DeepSeek's contract that thinking traces must round-trip in tool-calling conversations.
| Exact error | Meaning | Fix |
|-------------|---------|-----|
| The reasoning_content in the thinking mode must be passed back to the api (HTTP 400) | Your client/proxy dropped the thinking block when replaying history with tool calls | Full fix — 3 approaches |
| cc switch local proxy failed while handling codex endpoint /responses ... upstream_status: http 400 | cc-switch's API-shape translation strips reasoning_content before forwarding to DeepSeek | Proxy-layer fix |
| deepseek returned tool calls without replayable thinking content; continuing with degraded reasoning | Defensive client stripped thinking mode after the trace went missing — silent quality loss, not a crash | Restore the round-trip |
| LangChain agent loops → same 400 on second tool step | Memory class rebuilt messages without additional_kwargs | LangChain-specific fix |
Background on why Chinese providers' thinking modes differ: the thinking-mode API trap guide.
OpenAI — quota & context family
| Exact error | Meaning | Fix |
|-------------|---------|-----|
| You exceeded your current quota, please check your plan and billing details. (HTTP 429, insufficient_quota) | Billing problem in a 429 costume — no API credit/payment on the account, not a rate limit; retrying never helps | Quota vs rate limit + billing fix |
| This model's maximum context length is N tokens. However, your messages resulted in M tokens. (HTTP 400, context_length_exceeded) | Input + max_tokens overflowed the context window — deterministic, hits agents mid-session as history grows | Five fixes ranked |
| Rate limit reached for ... (HTTP 429, rate_limit_error) | Genuine per-minute rate limit — the retryable 429, unlike insufficient_quota | The distinction table |
| The model \X` does not exist or you do not have access to it.(HTTP 404,model_not_found) | Not usually a typo — org access, wrong project, retired snapshot name, or wrong endpoint for that model family | [Diagnose with /v1/models](/blog/openai-model-not-found-error-fix) | | Incorrect API key provided: sk-...(HTTP 401,invalid_api_key`) | Rarely a mistyped key — stale env var, trailing newline, revoked key, or another provider's key after a base-URL change | Five causes + the one-line check |
Claude Code & Anthropic endpoints
| Exact symptom | Meaning | Fix |
|---------------|---------|-----|
| HTTP 401 immediately after setting a custom base URL | Two env vars fighting: an old provider key variable wins over your new config | The double-env-var 401 |
| Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing... (HTTP 400) | Prepaid API credits at zero — or Claude Code silently using an API key when you meant subscription login | Billing + the Claude Code key/login mixup |
| {"type":"overloaded_error","message":"Overloaded"} (HTTP 529) | Provider-side saturation, not your account — backoff with jitter, failover if persistent | 529 vs 429 vs 500 + retry strategy |
| prompt is too long: N tokens > M maximum (HTTP 400) | Context window exceeded — counts system prompt, history, tool definitions, tool results and images, not just the visible chat | What counts + five fixes |
Local models (Ollama / LM Studio) in IDEs
| Exact symptom | Meaning | Fix |
|---------------|---------|-----|
| connect ECONNREFUSED 127.0.0.1:11434 / Connection refused on a local endpoint | Nothing listening where you pointed — server down, missing /v1 suffix, wrong port, loopback-vs-container, or a cloud-side IDE feature that can never reach localhost | Five causes, checked in order |
Cursor & OpenAI-compatible overrides
| Exact symptom | Meaning | Fix | |---------------|---------|-----| | Claude models vanish after overriding OpenAI base URL | Cursor disables built-in models when the OpenAI endpoint is overridden — by design | Override without breaking Claude | | Custom model name rejected in Cursor settings | Model dropdown hardcodes known names; custom endpoints need exact configured IDs | Configuration guide |
Google AI Studio / Gemini endpoints
| Exact symptom | Meaning | Fix |
|---------------|---------|-----|
| 404 Not Found on chat completions | Base URL missing the /v1beta/openai/ suffix — the compatibility path is exact | Endpoint setup |
| 404 model not found with gpt-4o etc. | OpenAI model names do not exist on Gemini's endpoint — use gemini-3-flash style names | Same guide |
| 401 Unauthorized with a service-account key | Endpoint takes AI Studio API keys, not Vertex service-account auth | Key types explained |
| Resource has been exhausted (e.g. check quota). (HTTP 429, RESOURCE_EXHAUSTED) | One string covering RPM/TPM/daily caps — free-tier daily quota is the one backoff can't fix | Which limit you hit + fixes |
Why so many of these are middleware errors
A pattern worth naming: most entries above are not model bugs — they are translation-layer failures. Proxies, history stores, and framework memory classes drop provider-specific fields (thinking traces, cache markers) that the provider contract requires back. That is also the honest pitch for running traffic through infrastructure that treats those fields as first-class: what a router API should handle for you, and which models need special handling.
Contribute an error
Hit something not listed? The bar for inclusion: the exact error string, the provider/tool combination, and a reproducible cause. This reference only stays useful if it stays real.