{"version":"2.1.286","anchor":"api-error-classification-renamed-and-no-api-attempts-left","canonical_anchor":"api-error-classification-renamed-and-no-api-attempts-left","heading":"API error categories renamed in logs and model-fallback suggestions","tier":"internal","area":"Model Fallback","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.286\/e\/api-error-classification-renamed-and-no-api-attempts-left","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.286","markdown":"### API error categories renamed in logs and model-fallback suggestions\n\nError categories used for model-fallback suggestions and logging have new names, and running out of retry attempts is now logged too\n\n**Unclear.** It is not clear what reads these renamed categories apart from Claude Code's own logging.\n\n**What**\n\nClaude Code sorts failed requests to the API into categories. It uses them to decide whether suggesting a different model might help, and it records them in its usage data. Several of these names have changed:\n\n- `unreachable` is now `noResponse`.\n\n- `refused` is now `httpError`.\n\n- `anotherModelCouldHelp` is now `fallbackModelCouldHelp`.\n\n- `connection` is now `connectionLost`.\n\n- `rejected` is now `badRequest`.\n\n- `unrecognised` is now `unknown`.\n\n- `watchdog` is now `stalled`.\n\n- `denied` is a category that is now checked first.\n\nThe error logged after retries are used up now also covers the case `no_api_attempts_left`. The check for a rate limit error now compares the correct value.\n\n**Why**\n\nAnything that reads these logged values will see the new names instead of the old ones. The corrected rate limit check means that case is recognised as intended.\n\n- Area: Model Fallback\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 2\/5"}