- Um ein vorhandenes oder Gateway eines Drittanbieters für Ihre Organisation bereitzustellen, siehe LLM-Gateway bereitstellen
- Wenn Sie ein einzelner Entwickler sind, der Claude Code mit einer Anmeldedaten, die Sie erhalten haben, bei einem Gateway authentifiziert, siehe Claude Code mit einem LLM-Gateway verbinden
- API-Formate und die Endpunkte, die für jedes bereitgestellt werden sollen
- Request-Header: welche das Upstream erreichen müssen und welche Ihr Gateway verbrauchen kann
- Der System-Prompt-Attributionsblock und wie er mit Prompt-Caching interagiert
- Funktionsdurchleitung: was bricht, wenn Header oder Body-Felder gelöscht werden
- Modellermittlung
- Unverändert weiterleiten: es Byte-für-Byte an das Upstream weitergeben
- Verbrauchen: das Gateway kann es zum Routing, zur Zuordnung oder zum Tracing lesen und muss es nicht weiterleiten
API-Formate
Ein Gateway muss mindestens eines der folgenden API-Formate für Claude Code-Clients bereitstellen. Welches Format Claude Code spricht, wird durch die Konfiguration des Clients bestimmt: die Variable in der Spalte „Ausgewählt von” der folgenden Tabelle verweist Claude Code auf Ihr Gateway in diesem Format.| Format | Ausgewählt von | Endpunkte | Unverändert weiterleiten |
|---|---|---|---|
| Anthropic Messages | ANTHROPIC_BASE_URL | /v1/messages, /v1/messages/count_tokens (optional) | anthropic-beta und anthropic-version Request-Header |
| Bedrock InvokeModel | ANTHROPIC_BEDROCK_BASE_URL mit CLAUDE_CODE_USE_BEDROCK=1 | /model/{model}/invoke, /model/{model}/invoke-with-response-stream | anthropic_beta und anthropic_version Request-Body-Felder |
| Vertex rawPredict | ANTHROPIC_VERTEX_BASE_URL mit CLAUDE_CODE_USE_VERTEX=1 | :rawPredict, :streamRawPredict, count-tokens:rawPredict (optional) | anthropic-beta und anthropic-version Request-Header sowie das anthropic_version Request-Body-Feld |
Foundry und Claude Platform on AWS
Microsoft Foundry und die Claude Platform on AWS implementieren das Anthropic Messages-Format. Claude Code leitet sie über ihre eigenen Variablen weiter,ANTHROPIC_FOUNDRY_BASE_URL und ANTHROPIC_AWS_BASE_URL, aber ein Gateway, das eines von beiden frontet, implementiert die Anthropic Messages-Zeile oben. Ein Gateway, das die Claude Platform on AWS frontet, muss auch den anthropic-workspace-id-Header weiterleiten, den diese Plattform bei jeder Anfrage benötigt.
Optionale Endpunkte und Startup-Traffic
Token-Counting-Endpunkte sind die einzigen optionalen: Wenn sie fehlen, schätzt Claude Code die Kontextnutzung lokal. Inferenzanfragen werden an/v1/messages?beta=true gesendet, daher sollten Sie auf dem Pfad abgleichen, nicht auf der vollständigen URL. Die Vertex-Methode hängt Suffixe an den Publisher-Modellpfad an, wie in /projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict.
Ein Gateway sieht auch Best-Effort-Startup-Traffic, den es ablehnen kann, ohne etwas zu unterbrechen: eine HEAD / Konnektivitätsprobe und auf Bedrock-Format-Gateways eine GET /inference-profiles?type=SYSTEM_DEFINED Anfrage.
Streaming
Inferenzantworten müssen streamen. Claude Code verbraucht Server-Sent Events, wenn sie ankommen, daher stellt ein Gateway, das vollständige Antworten puffert, bevor es sie weiterleitet, den Client still.Format-Mismatch mit dem Upstream
Welches Format der Client spricht, bestimmt, was Ihr Gateway empfängt. Der häufige Fehlermodus ist ein Mismatch zwischen dem Format, das der Client an Ihr Gateway sendet, und dem Format, das der Upstream-Provider dahinter akzeptiert.- Wenn der Client das Bedrock- oder Vertex-Format spricht, sendet Claude Code nur die Teilmenge seiner vollständigen Funktionsmenge, die diese Provider akzeptieren
- Wenn der Client das Anthropic Messages-Format spricht, sendet Claude Code die vollständige Menge, auch wenn Ihr Gateway an ein Bedrock- oder Vertex-Upstream weiterleitet
Request-Header
Claude Code enthält diese Header bei API-Anfragen. Header-Namen sind auf dem Draht case-insensitiv. Leiten Sieanthropic-version und anthropic-beta unverändert weiter, plus anthropic-workspace-id, wenn das Upstream die Claude Platform on AWS ist; der Rest kann vom Gateway zum Routing, zur Zuordnung und zum Tracing verbraucht werden und muss nicht weitergeleitet werden.
| Header | Beschreibung |
|---|---|
Authorization, x-api-key | Die Gateway-Anmeldedaten des Entwicklers, in einem oder beiden Headern, je nachdem, welche Anmeldedaten-Variable sie setzen |
anthropic-version | API-Version, derzeit 2023-06-01. Bedrock- und Vertex-Format-Anfragen enthalten auch das anthropic_version Body-Feld, dessen Wert die Provider-Dialekt-Zeichenkette ist, nicht der Wert dieses Headers |
anthropic-beta | Komma-getrennte Funktionswerte für die Anfrage. Leiten Sie den Header wörtlich weiter; erstellen Sie keine Allowlist einzelner Werte, da sich die Menge mit Claude Code-Versionen ändert. Wenn sich der Entwickler mit einer claude.ai-Anmeldung authentifiziert, was möglich ist, wenn ANTHROPIC_BASE_URL ohne eine Gateway-Anmeldedaten-Variable gesetzt ist, trägt dieser Header auch eine OAuth-Funktion, die das Upstream benötigt, und das Löschen führt zu 401 Fehlern bei diesen Anfragen |
x-claude-code-session-id | Ein eindeutiger Bezeichner für die aktuelle Claude Code-Sitzung. Verwenden Sie ihn, um alle Anfragen aus einer Sitzung zu aggregieren, ohne Request-Bodies zu analysieren |
x-claude-code-agent-id | Bezeichner des Subagenten, der die Anfrage gestellt hat, vorhanden nur bei Anfragen von einem Agenten, den Claude Code in der Sitzung spawnt. Verwenden Sie ihn mit der Sitzungs-ID, um Kosten parallelen Agenten zuzuordnen |
x-claude-code-parent-agent-id | Bezeichner des Agenten, der den anfragenden Agenten spawnt, vorhanden nur für verschachtelte Agenten |
ANTHROPIC_CUSTOM_HEADERS setzen, erscheinen diese Header auch bei Anfragen.
Weiterleitung als offene Listen
Behandeln Sie die Header und Body-Felder als offene Listen, nicht als geschlossene. Claude Code gewinnt Funktionen über Versionen hinweg, und sie kommen als neueanthropic-beta Werte, neue Request-Body-Felder und gelegentlich neue anthropic-* oder x-claude-code-* Header an.
Beim Weiterleiten an ein Anthropic-Format-Upstream leiten Sie anthropic-* Request-Header und Request-Body-Felder unverändert durch, anstatt die heute beobachteten zu allowlisten. Ein Gateway, das an eine beobachtete Liste gepinnt ist, löscht den Header oder das Feld der nächsten Funktion und bricht es bei der Veröffentlichung, die es einführt.
Die Ausnahme ist ein Nicht-Anthropic-Upstream wie Bedrock oder Vertex, wo die Überbrückung der Schemadifferenz die Aufgabe des Gateways ist; siehe Funktionsdurchleitung.
System-Prompt-Attributionsblock
Claude Code stellt einen kurzen Attributionsblock dem System-Prompt voran, der die Client-Version und einen Fingerabdruck aus dem Gespräch enthält. Derapi.anthropic.com Endpunkt löscht den Block vor der Verarbeitung, daher beeinflusst er nicht das First-Party-Prompt-Caching; jedes andere Upstream empfängt ihn als Teil des Prompts. Anthropic und die Claude-Endpunkte der Cloud-Provider lesen ihn zur Zuordnung, daher setzen Sie CLAUDE_CODE_ATTRIBUTION_HEADER=0, anstatt ihn im Gateway zu löschen, um ihn auszulassen.
Ab Claude Code v2.1.181 ist der Block für die Lebensdauer eines Gesprächs stabil, wenn Anfragen durch eine benutzerdefinierte Basis-URL geleitet werden, daher funktioniert ein Gateway-seitiger Prompt-Cache, der auf dem vollständigen Request-Body basiert, ohne ihn zu deaktivieren. Vor v2.1.181 enthielt der Block ein Pro-Request-Token; setzen Sie auf diesen Versionen CLAUDE_CODE_ATTRIBUTION_HEADER=0, wenn Ihr Gateway einen solchen Cache implementiert.
Funktionsdurchleitung
Claude Code behandelt einANTHROPIC_BASE_URL Gateway als einen Anthropic-Format-Endpunkt und sendet ihm die Beta-Header und Request-Body-Felder, die es an api.anthropic.com sendet, außer einer kleinen Menge von Diagnosen und Standardwerten, die für direkte Verbindungen reserviert sind.
Funktionen, die Body-Felder hinzufügen, paaren sie mit einem Beta-Header, und das Paar reist zusammen. Ein Gateway, das den Header löscht, während es den Body durchleitet, oder ein Anthropic-Format-Body an ein Upstream mit einem anderen Schema weiterleitet, erzeugt harte 400 Fehler; nur wenn beide Hälften zusammen fehlen, schaltet sich die Funktion stillschweigend aus. Ein Gateway, das Request-Bodies zur Inhaltsüberprüfung umschreibt oder redigiert, bricht die Paarung auf die gleiche Weise wie das Löschen, daher überprüfen Sie ohne Änderung. Die Tabelle vermerkt, wo eine Funktion von der Paarung abweicht.
Fine-grained Tool Streaming ist einer der Direct-Connection-Standardwerte: Es ist standardmäßig aus, wenn Anfragen durch eine benutzerdefinierte Basis-URL geleitet werden, und ein Gateway empfängt es, wenn Entwickler CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 setzen.
| Funktion | Header und Body-Paar | Symptom bei Fehler | Abhilfe |
|---|---|---|---|
| Adaptive Reasoning | Kein Beta-Header. Claude Code sendet thinking: {"type": "adaptive"} für Claude 4.6 und später und behandelt Modellnamen, die es nicht erkennt, wie Gateway-Aliase, als aktuelle Modelle, die das Feld erhalten | 400 mit Nennung des thinking Feldes oder des adaptive Tags, wenn der Upstream-Modell-Build es nicht akzeptiert | Aktualisieren Sie das Upstream. Auf Opus 4.6 und Sonnet 4.6 können Entwickler stattdessen CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 setzen |
| Kontextverwaltung | Kontextverwaltungs-Beta-Header paart sich mit dem context_management Body-Feld | 400 mit Extra inputs are not permitted. Häufig, wenn ein Gateway Anthropic-Format-Anfragen akzeptiert, aber an Bedrock weiterleitet | Leiten Sie beide weiter, oder CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| Erweiterter Kontext und verschachteltes Denken | Nur Beta-Header, kein Body-Feld | Stillschweigend nicht verfügbar, wenn der Header gelöscht wird; das Upstream sieht die Funktionsanfrage nie | Leiten Sie anthropic-beta wörtlich weiter |
| Beta Tool-Felder | Tool-bezogene Beta-Header paaren sich mit Tool-Schema-Feldern wie strict und defer_loading | 400 mit Nennung des nicht erkannten Tool-Schema-Feldes, wenn der Body ohne seinen Header durchgeht | Leiten Sie beide weiter, oder CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| Aufwand und strukturierte Ausgaben | Das output_config Body-Feld trägt Aufwand, strukturierte Ausgabeformat und Task-Budget-Einstellungen; jedes paart sich mit seinem eigenen Beta-Header | 400 mit Nennung von output_config, oft Extra inputs are not permitted, auf Bedrock- und Vertex-Upstreams | Leiten Sie das Feld und seine Header zusammen weiter |
| Token-Counting | Keine Beta-Paarung; verwendet den count_tokens Endpunkt | Claude Code fällt auf lokale Kontextnutzungsschätzung zurück | Stellen Sie den Endpunkt bereit, wenn Sie genaue Zählungen möchten |
ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES Variablen deklarieren Modellkapazitäten nur in den Provider-Konfigurationen: CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY und CLAUDE_CODE_USE_MANTLE. Sie haben keine Auswirkung hinter einem ANTHROPIC_BASE_URL Gateway.
Automatische Wiederholung und Fehlerweiterleitung
Claude Code versucht automatisch nach einigen Upstream-Ablehnungen und deaktiviert die abgelehnte Funktion für den Rest des Gesprächs. Ablehnungen desthinking Feldes, von Thinking-Signaturen und von Mid-Conversation-Systemnachrichten erholen sich auf diese Weise. Kontextverwaltungs- und Tool-Schema-Feld-Ablehnungen versuchen nicht erneut; diese 400 Fehler erreichen den Entwickler.
Die Wiederholungslogik gleicht die Fehlerformulierung des Upstreams ab, daher leiten Sie Fehler-Response-Bodies unverändert weiter. Ein Gateway, das Upstream-Fehler in seine eigene Hülle einwickelt, bricht den Wiederherstellungspfad, auch wenn es den Statuscode beibehält.
Deaktivieren Sie Pre-Release-Funktionen
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 stoppt Claude Code vom Senden von Pre-Release-Funktionen und ihren Body-Feldern auf jedem Provider, einschließlich Kontextverwaltung und der Beta-Tool-Felder. Es beeinflusst nicht adaptive Reasoning, das nach Modell ausgewählt wird, nicht nach Beta, und es unterdrückt nie die OAuth-Funktion, die die Abonnement-Authentifizierung benötigt.
Die Menge der Funktionen, die Claude Code sendet, wächst über Versionen. Für aktuelle Beta-Header-Zeichenketten siehe die Beta-Headers-Referenz; testen Sie Ihr Gateway gegen neue Claude Code-Versionen, anstatt an eine beobachtete Liste zu pinnen.
Modellermittlung
WennANTHROPIC_BASE_URL auf ein Gateway verweist, das das Anthropic Messages-Format bereitstellt, kann Claude Code beim Startup den /v1/models Endpunkt des Gateways abfragen und die zurückgegebenen Modelle zur /model Auswahl hinzufügen.
Entwickler aktivieren dies durch Setzen von CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1, in ihrer eigenen Umgebung oder durch verwaltete Einstellungen. Die Ermittlung ist standardmäßig aus, damit Gateways, die von einem gemeinsamen API-Schlüssel unterstützt werden, nicht jedes Modell, auf das der Schlüssel zugreifen kann, jedem Benutzer anzeigen. Dies erfordert Claude Code v2.1.129 oder später.
Wenn die Ermittlung läuft
Die Ermittlung gilt nur für das Anthropic Messages-Format. Sie läuft nicht, wenn:- Eine beliebige
CLAUDE_CODE_USE_*Provider-Variable gesetzt ist, auch wennANTHROPIC_BASE_URLauch gesetzt ist ANTHROPIC_BASE_URLnicht gesetzt ist oder aufapi.anthropic.comverweist- Nicht wesentlicher Traffic ist deaktiviert, durch
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICoder Organisationsrichtlinie
Request und Response
Die Anfrage istGET /v1/models?limit=1000 mit einem 3-Sekunden-Timeout, und jede Umleitung wird als Fehler behandelt, daher können die Anmeldedaten nicht an ein Umleitungsziel durchsickern. Ein Gateway, das langsam antwortet oder /v1/models umleitet, auch http zu https, schlägt die Ermittlung stillschweigend fehl; stellen Sie den Endpunkt direkt unter der konfigurierten Basis-URL bereit.
Die Ermittlungsanfrage sendet genau einen Anmeldedaten-Header:
ANTHROPIC_AUTH_TOKENals Bearer-Token, wenn gesetzt- Andernfalls der aufgelöste API-Schlüssel, einschließlich eines
apiKeyHelperWertes, imx-api-keyHeader
/v1/models authentifiziert, muss x-api-key für Helper-Bereitstellungen akzeptieren. Alle Header von ANTHROPIC_CUSTOM_HEADERS sind ebenfalls enthalten.
Claude Code liest id und den optionalen display_name aus jedem Eintrag im data Array der Response und ignoriert Einträge, deren id nicht mit claude oder anthropic beginnt:
Auswahl-Einträge und Caching
Die Auswahl ist die interaktive Modelliste, die sich öffnet, wenn ein Entwickler/model in Claude Code ausführt. Jeder ermittelte Eintrag ist mit „Aus Gateway” gekennzeichnet und verwendet display_name, wenn bereitgestellt. Eine ermittelte ID wird übersprungen, nur wenn sie genau einer Zeile in der Auswahl entspricht, oder wenn sowohl die ermittelte als auch die vorhandene ID zu Fable aufgelöst werden. Eingebaute Zeilen werden nach Aliasen wie sonnet verschlüsselt, daher fügt eine ermittelte ID wie claude-sonnet-4-6 ihre eigene „Aus Gateway” Zeile neben dem eingebauten Eintrag hinzu. Die availableModels verwaltete Einstellung begrenzt, was die Ermittlung hinzufügen kann.
Ergebnisse werden in ~/.claude/cache/gateway-models.json oder %USERPROFILE%\.claude\cache\gateway-models.json unter Windows zwischengespeichert und bei jedem Startup aktualisiert. Wenn die Anfrage fehlschlägt oder das Gateway /v1/models nicht implementiert, fällt die Auswahl auf die zwischengespeicherte Liste aus dem vorherigen Startup oder auf die eingebaute Modelliste zurück. Wenn Ihr Gateway Claude-Modelle unter Aliasen bereitstellt, die nicht dem Ermittlungsfilter entsprechen, können Entwickler diese Aliase manuell mit den Modellkonfigurationsvariablen hinzufügen.
Verwandte Ressourcen
Für den Rest der Gateway-Dokumentationsserie und die zugrunde liegenden API-Referenzen:- LLM-Gateways-Übersicht: was ein Gateway ist und wie es mit claude.ai-Abonnements interagiert
- LLM-Gateway für Ihre Organisation bereitstellen: die Admin-Checkliste, die diesen Vertrag verwendet
- Claude Code mit einem LLM-Gateway verbinden: Pro-Entwickler-Konfiguration und die Fehlerbehebungstabelle
- Beta-Headers-Referenz: der aktuelle Satz von
anthropic-betaWerten - Messages API: das API-Format, das ein Anthropic-Format-Gateway implementiert