Anthropic hat am Dienstagabend neue SDK-Versionen veröffentlicht: anthropic-sdk-python 2.5.0 sowie für TypeScript sdk-v1.5.0, vertex-sdk-v1.1.2 und google-cloud-sdk-v1.1.3. In den Release-Notes der Claude Platform steht davon noch nichts, deren letzter Eintrag ist vom 3. November.
Der Kern ist in beiden Sprachen derselbe: Die API liefert jetzt strukturierte Fehlerdetails, und das SDK macht daraus Ausnahmeklassen, die man gezielt abfangen kann.
Vier neue Felder auf APIStatusError
In Python trägt APIStatusError jetzt api_message (die error.message aus dem
Antwortkörper), type (error.type), error_code (error.details.error_code, wenn es ein
String ist) und details als typisiertes Objekt aus error.details. In TypeScript heißen
die Felder apiMessage, errorCode und details und sitzen auf APIError.
Dazu kommt eine neue Datei _error_classes.py mit einer Zuordnungstabelle. Sie hat 88
Einträge: 16 davon hängen nur am HTTP-Status – 400 wird BadRequestError, 429
RateLimitError, 529 OverloadedError –, die anderen 72 an einem Paar aus Status und
Fehlercode. Aus (429, "enforced_spend_limit_reached") wird
EnforcedSpendLimitReachedError, aus (404, "thread_not_found") ThreadNotFoundError, aus
(400, "claude_code_version_too_old") ClaudeCodeVersionTooOldError. Findet das SDK keinen
passenden Code, fällt es auf den Status zurück, und ab 500 auf InternalServerError.
Die Liste liest sich wie eine Inhaltsangabe der letzten Monate. thread_not_found,
thread_already_continued und thread_fingerprint_mismatch gehören zu den Message threads
in der Messages API. storage_quota_exceeded,
skill_name_taken, plugin_name_taken und scan_pending kommen aus Skills und Plugins.
Neun Codes drehen sich um Compaction, acht um CMEK-Schlüssel, ein gutes Dutzend um
Organisations- und Workspace-Verwaltung.
Dazu zwei Härtungen am Pfad
Beide SDKs lehnen Pfadparameter wie ;x, .;x und ..;x jetzt ab. Im Vertex-SDK werden
Projekt-ID, Region und Modellname im Anfragepfad prozentkodiert, damit ein Schrägstrich im
Modellnamen die Anfrage nicht aus /publishers/anthropic/models/ herausschieben kann; ein
leerer Modellname oder ein Wert von . oder .. wirft einen AnthropicError. Für Bedrock
gilt dasselbe, dort fliegt bei . oder .. ein ValueError. Im Google-Cloud-SDK werden
Projekt, Location und Workspace-ID in der abgeleiteten Basis-URL kodiert.
Kleinere Korrekturen: OverloadedError und ServiceUnavailableError sind jetzt Unterklassen
von InternalServerError, das erste Parsen einer Antwort ist threadsicher, Unions werden
über Threads hinweg korrekt validiert, und das Memory-Tool kann das Verzeichnis /memories
nicht mehr umbenennen oder löschen. Server-Sent Events werden nur noch einmal pro Chunk
dekodiert. Dazu ein Filter ids beim Auflisten von Workspaces.
Fehlertexte zu parsen war immer die falsche Lösung
Wer eine Anwendung auf der Claude API betreibt, kennt die Stelle: Eine 400 kommt zurück, und
im Code steht ein if "spend limit" in str(e). Solche Zeilen brechen, sobald jemand bei
Anthropic eine Formulierung ändert. Mit error_code gibt es dafür jetzt einen stabilen
Schlüssel. Und mit 72 Klassen muss man ihn nicht einmal selbst vergleichen. except EnforcedSpendLimitReachedError genügt.
Dass die Codes am Admin-API-Ausbau der letzten Woche hängen, ist kein Zufall: Wer Spend Limits und RBAC über die API verwaltet, läuft gegen Fehler, die der Nutzer der Anwendung nicht verschuldet hat und die man unterschiedlich behandeln muss. Für mich ist das eine der nützlicheren Änderungen seit der Version 2026-10-21 – unspektakulär, aber sie löscht eine ganze Klasse von Fehlerbehandlungs-Hacks.