Changelog

What changed in CodeRouter, newest first. This page covers changes that affect requests going through the router — models added or retired, routing rules, provider failover behaviour, billing and API endpoints.

Current model lineup and per-phase scores: models · Setup per agent: integration guide · How routing decides: about

November 2026

  • BillingPricing is now pay as you go or Team. Pay as you go has no monthly fee: model usage is billed from a prepaid balance at list price +8%, top-ups start at $20 (auto top-up optional), Claude Opus is included in smart routing, and you can switch the account between smart routing and Direct mode (the exact model you name answers) in the dashboard at any time, both ways. Team is $19 per developer a month plus usage at list +8% (top-ups from $100). New accounts still start with $5 of usage over 7 days, without Opus; the first top-up turns a trial into pay as you go, and unused trial credit carries over until the trial ends. A request with a $0 balance now gets HTTP 402 (insufficient_quota) with a link to top up, instead of 429, which clients retried as a rate limit. The monthly personal plans are no longer sold; existing subscriptions, Team accounts and Direct accounts keep their terms and rate. The one-time $5 credit for saving a card ends for accounts created from November 12.
  • DocsCodeRouter is now available in German, French and Spanish: the homepage, pricing, Claude Code pricing and the setup guide, at /de/…, /fr/… and /es/… (one Spanish version for Spain and Latin America). Prices, plans and measured numbers are the same in every language, in USD. If you sign up from a German, French or Spanish page, the setup emails come in that language; the integration docs stay in English. The language menu now lists all seven languages and opens a language's homepage when a page has no version in it.
  • PrivacyVisitors from the EU, the EEA, the UK and Switzerland are now asked before any analytics or advertising tool loads: PostHog, Google Analytics, Google Ads and the OpenAI Ads pixel stay off, and nothing is stored for them, until you choose Accept. Reject is the same size of button, and the site works the same either way. "Cookie settings" in the footer changes the choice. Visitors from elsewhere see no change. The privacy policy now says exactly what CodeRouter stores and for how long, every model provider that can receive a request and where (some models run in China), how to limit which providers get your requests, the legal bases and your rights.
  • DocsCodeRouter is now available in Japanese and Korean: the homepage, pricing, Claude Code pricing, the setup guide, the Claude Code, Codex CLI and Cursor integration docs, the claude-code-router comparison and the benchmark page, at /ja/… and /ko/… (the Chinese pages moved to their own /zh/… URLs). Prices, plans and measured numbers are the same in every language, in USD. If you sign up from a Japanese or Korean page, the setup emails come in that language. English pages keep their URLs.
  • APIWhen a request fails on every model it can go to, the error now says why. If the model it was routed to rejected the request itself (the provider answered 400, 404, 409, 413 or 422), you get that status — 422 as 400 — and the provider's reason, starting with the model, for example "claude-haiku-5.5 rejected the request: Anthropic API error 400: …". Rate limits, provider outages and timeouts keep their status (429, 502, 504), and the message now names the models tried and what each returned. Before, some of these failures — image requests from coding agents among them — returned HTTP 502 "All models in fallback chain failed" with no reason, which clients such as Codex CLI retried. A /v1/responses stream that fails after it started with a 400, 413 or 422 from the provider now ends with a response.failed event with code invalid_prompt instead of upstream_error.
  • RoutingA request with images now falls back only to models that take images, and a request with tools only to models that call tools. Before, when none of the fallback models could take the request, all of them were tried. When none is left, the error is the routed model's own.
  • API/v1/responses (Codex CLI): each tool call is now sent to the model with its result right after it, in the order of the calls — parallel calls as one assistant turn, a result moved up past reasoning items or messages that came in between, "(no output: the tool call was interrupted)" for a call with no result in the input, and a result whose call isn't in the input left out. Before, such input could fail on Kimi K2.6 and other OpenAI-format providers with HTTP 400 "an assistant message with 'tool_calls' must be followed by tool messages responding to each 'tool_call_id'". Input that is already in that order is sent exactly as before; /v1/messages and /v1/chat/completions requests are unchanged.
  • BillingFree-trial requests now stay within the trial credit you have left: when a request's worst case — its estimated input plus max_tokens of output (the model's output limit when the request sets none), at list price, on the most expensive model it may fall back to — costs more than the credit left, max_tokens is lowered to what that credit covers, and the response says so in X-CodeRouter-Adjusted (max_tokens=N; max_output_tokens=N on /v1/responses). A request the credit left can't cover even with a short reply gets HTTP 429 saying what it needs and what is left. Before, the last request of a trial could cost more than the credit left. Requests on your own provider keys and on paid plans are unchanged.
  • APIA max_tokens (max_output_tokens on /v1/responses) above the output limit of the model that serves the request is now lowered to that limit on every provider, including the fallback model if one answers, instead of the request failing — for example max_output_tokens 384,000 sent to Claude Sonnet 5.5 goes out as 128,000. The response says so in X-CodeRouter-Adjusted (max_tokens=128000, or max_output_tokens=128000 on /v1/responses). A reply cut at that limit is reported as cut off: finish_reason length, stop_reason max_tokens, and on /v1/responses status incomplete with incomplete_details.reason max_output_tokens (streamed: response.incomplete) instead of completed.
  • APIA request without max_tokens (Codex CLI never sends max_output_tokens) now gets the serving model's output limit on Claude and Gemini — 128,000 on Claude Sonnet 5.5, for example — instead of 4,096, which cut long answers short, most of all on Claude Opus 5.5 and Sonnet 5.5, whose thinking counts toward it. Requests billed from a prepaid balance are still lowered to what the balance covers.
  • ProvidersClaude now receives every system and developer message of an OpenAI-format request: the ones at the start are joined into the system prompt, and one that comes later in the conversation is sent at its place, wrapped in <system-message> tags. Before, only the first was sent — Codex CLI's later developer messages (sandbox and approval settings, among others) were dropped.
  • BillingOpenAI-format requests (/api/v1/chat/completions and /v1/responses, such as Codex CLI) served by a Claude model now cache the conversation, not only the tools and system prompt: CodeRouter marks the latest user message or tool result, so the next turn reads the earlier turns at the cache price instead of the full input price. The new part of each turn is written to the cache at Anthropic's rates (1.25× input for 5-minute entries, 2× for 1-hour). /v1/messages requests (Claude Code) keep their own markers.
  • API/v1/responses usage now follows OpenAI: input_tokens is the whole prompt, cache reads and writes included, with the reads in input_tokens_details.cached_tokens and, on Claude, the writes in input_tokens_details.cache_write_tokens; total_tokens is input plus output. Before, a Claude reply reported only the uncached part as input_tokens. What is billed is unchanged.
  • RoutingCoding-agent sessions that start on an easy task but can't use Claude Haiku 5.5 now start on Claude Sonnet 5.5 and continue from there, instead of starting and staying on Kimi K2.6. CodeRouter sends Haiku only requests whose estimated prompt plus requested max_tokens, with a 10% margin, is at most 100K tokens, so a Claude Code request with max_tokens 128,000 never qualifies. Kimi K2.6 is still used when no Claude model above Haiku is allowed, as for a team member or project past a budget set to downgrade (Opus and Sonnet are taken out).
  • RoutingCoding-agent sessions (an agent calling tools in a loop, such as Claude Code, Codex CLI or Cursor's agent) are now routed by policy agent-v1: the tier is set once at the start of the session — Claude Haiku 5.5 for easy tasks, Claude Opus 5.5 for confident hard planning on plans that include Opus, Claude Sonnet 5.5 otherwise, without Kimi K2.6 — and moves up when a code change fails or the agent stops making progress. Other requests are routed as before (policy v3). Responses carry X-CodeRouter-Routing-Policy; the request header X-CodeRouter-Routing-Experiment: v3 keeps a request on v3.
  • APICoding-agent requests (tools, tool results, earlier assistant turns, or a recognized agent such as Claude Code or Cursor) no longer carry X-CodeRouter-Savings, and the dashboard no longer shows a savings figure for them: a stronger model takes a different number of steps, so the same tokens at Opus price aren't what an all-Opus session would have cost. The dashboard now shows spend by model and the cache hit rate instead. X-CodeRouter-Cost-If-Opus is still sent, as a same-token estimate. Billing is unchanged.
  • BillingThe free trial is now $5 of usage over 7 days (whichever runs out first) instead of 1M tokens over 2 days. Usage is metered at each model's list price, with cached input billed at the cheaper cache price, so long Claude Code and Cursor sessions go much further. Opus stays excluded from the trial. You get an email at 80% of the credit, and requests stop with a clear message when it is used up.

October 2026

  • ModelsClaude Opus 5.5, Sonnet 5.5 and Haiku 5.5 added and made the primary Anthropic models in phase routing — Opus 5.5 for planning and hard debugging, Sonnet 5.5 for implementation and refactoring on Anthropic-protocol traffic, Haiku 5.5 for docs and small edits. Claude Fable 5.1 and Opus 5 are available by explicit model name on the Direct plan.
  • ModelsKimi K3.1 Pro replaces Kimi K3 in text routing (cheaper at $2/$10 per 1M), GLM-5.3 replaces GLM-5.2, and DeepSeek's Flash tier now runs on V4.1 Flash. Gemini 4 Argon is available on the Direct plan.
  • RoutingGemini 3 Pro removed from automatic routing after repeated tool-call failures. Small edits now go to Haiku 5.5 and DeepSeek V4.1 Flash first, for lower latency.
  • ProvidersFixed requests to GPT-5 Mini failing when the client sent a non-default temperature. Requests routed to Claude 5.x models now have unsupported parameters (sampling settings, thinking budgets, forced tool choice) adjusted to what the target model accepts instead of failing.
  • ProvidersExtended-thinking settings from Claude Code are now passed through to Claude models that support them; previously they were dropped.
  • BillingClaude Opus 5.5 ($4/$20 per 1M) is now the reference model for the dashboard's savings-vs-Opus figure. Claude Opus 4.7 is billed at its current $5/$25 list price. DeepSeek V4.1 Flash is billed at DeepSeek's peak-hour list price ($0.30/$1.20 per 1M).

September 2026

  • APIMCP server at /api/mcp — coding agents that speak Model Context Protocol can query the verified LLM error database directly with lookup_llm_error and list_llm_errors, without leaving the editor.
  • DocsLLM API error reference expanded to cover the OpenAI quota, context-length, model_not_found and invalid_api_key families; the Anthropic credit-balance, 529 overloaded and prompt-too-long errors; Gemini RESOURCE_EXHAUSTED; and connection-refused against local Ollama / LM Studio endpoints.
  • DocsNew resolution pages for proxy-layer failures that official docs do not cover: Unknown parameter 'output_config', tool_result / tool_use id mismatches, and anthropic-beta headers rejected by non-Anthropic upstreams.
  • BillingThe Free (BYOK) tier was discontinued and removed from the pricing page and structured data. Current plans are on the pricing page.

August 2026

  • RoutingKimi K3 weight raised — a 20% boost on high-complexity requests plus position promotions in the implementation and refactor pools, following internal quality testing.
  • DocsThe LLM API Error Reference was published: real errors indexed by their exact error string, each with cause and fix.
  • APIllms.txt gained a 'when to use' section and a draft OpenAPI specification was added for the routing API.

July 2026

  • ModelsKimi K3 integrated through a direct Moonshot endpoint rather than an aggregator, reducing a hop on every K3 request.
  • ModelsClaude Opus 4.8 added to the planning and architecture pools.
  • RoutingRouting transparency added to the dashboard — each request now shows which model was selected and which phase was detected.
  • BillingPricing guards added to prevent plan changes from applying stale prices, alongside corrections to several published per-model prices.

June 2026

  • ModelsGLM-5.1 upgraded to GLM-5.2 with a verified 1M-token context window.
  • RoutingGLM-5.2 added to the Anthropic-shape overlay's long-context slot, so long-context requests arriving in Anthropic format no longer fall through to a premium model by default.
  • ModelsRequests pinned to the retired gemini-3-pro identifier are now migrated automatically instead of failing with a 404.

May 2026

  • ModelsDeepSeek V4-Pro's permanent 75% price cut applied across the routing tables, which changed cost ordering for implementation and test-generation requests.
  • RoutingRequests that enable thinking mode are now restricted to models that actually support it, instead of being silently downgraded.
  • RoutingVision-aware phase preference — requests carrying images are routed only to models that can read them.
  • RoutingPhase detector v2: tool-call inference, multi-turn defaults and Chinese-language prompt patterns, plus a conservative fallback for requests that cannot be classified.
  • ProvidersProvider-level cooldown added so that one upstream outage degrades gracefully instead of cascading through a session. HTTP 402 Insufficient Balance is now treated as an auth-tier cooldown rather than a retryable error.
  • API/api/v1/responses endpoint added for OpenAI Codex compatibility.
  • BillingDaily auto-topup cap and a card-on-file gate added, so a runaway agent loop cannot drain a balance unbounded.
  • RoutingSmart routing is now enforced on Studio and Team plans — explicit model pins are rewritten to auto, because per-request routing is the product.

April 2026

  • RoutingCodeRouter launched as a phase-aware router for coding agents, with per-phase capability scoring rather than a single general-purpose model score.