← Back to Blog

The LLM API Error Reference — Exact Error Strings, Causes, and Fixes (2026)

2026-08-26·3 min read·CodeRouter Team
llm api error referencellm api errors listdeepseek 400 errorclaude code 401cursor base url errorai api error messagesllm error codes

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-08). 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.

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 |

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 |

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.

Ready to Reduce Your AI API Costs?

CodeRouter routes every API call to the optimal model — automatically. Start saving today.

Get Started Free →

Get weekly AI cost optimization tips

Join 2,000+ developers saving on LLM costs