Dokumentation

Dokumentation

ANTHROPIC_BASE_URL

Die Umgebungsvariable, mit der Claude Code und die Anthropic-SDKs auf einen anderen Endpunkt als api.anthropic.com ausgerichtet werden – mit vollständiger Variablenreferenz, Einrichtung pro Client und den beiden häufigsten Fehlerquellen.

ANTHROPIC_BASE_URL teilt den Anthropic-SDKs und Claude Code mit, an welchen Host sie API-Anfragen senden sollen, und ersetzt damit den Standardwert https://api.anthropic.com. Setzen Sie die Variable auf einen Ursprung ohne Pfad – der Client fügt /v1/messages selbst an – und kombinieren Sie sie mit ANTHROPIC_AUTH_TOKEN, das als Authorization: Bearer-Header gesendet wird.

~/.zshrc
# The origin only — no trailing /v1, no trailing slash.
export ANTHROPIC_BASE_URL=https://api.kunavo.com
export ANTHROPIC_AUTH_TOKEN=sk-kn-...

Öffnen Sie anschließend ein neues Terminal: Claude Code und die SDKs lesen diese Variablen beim Prozessstart ein. Eine bereits laufende Sitzung verwendet daher weiterhin den alten Endpunkt.

Fügen Sie /v1 nicht in ANTHROPIC_BASE_URL ein. Die Anthropic-Clients hängen den Pfad selbst an, sodass https://api.kunavo.com/v1 Anfragen an /v1/v1/messages erzeugt und jeder Aufruf 404 zurückgibt. Das OpenAI SDK verwendet die entgegengesetzte Konvention und benötigt tatsächlich /v1 in seinem base_url — dieser Unterschied ist hier der mit Abstand häufigste Konfigurationsfehler.

Alle Variablen und ihre Funktion

Die vollständige Liste der von Claude Code gelesenen Variablen finden Sie in Anthropics Referenz zu Umgebungsvariablen. Diese Variablen sind wichtig, wenn Sie den Endpunkt umleiten.

VariableWertSteuerung
ANTHROPIC_BASE_URLhttps://api.kunavo.comDer Ursprung, an den alle Anfragen gesendet werden. Ohne Pfad und ohne abschließenden Schrägstrich.
ANTHROPIC_AUTH_TOKENsk-kn-…Anmeldedaten im Authorization: Bearer-Header. Dies ist die Variante, die ein Gateway benötigt.
ANTHROPIC_API_KEYsk-ant-…Anmeldedaten im x-api-key-Header, wie von api.anthropic.com erwartet. Setzen Sie entweder diese Variable ODER den obigen Token, nicht beide.
ANTHROPIC_MODELclaude-sonnet-5Das Hauptmodell, das Claude Code für die Unterhaltung verwendet.
ANTHROPIC_DEFAULT_OPUS_MODELclaude-opus-5-5Das Modell hinter dem Alias opus (/model opus). Claude Code verwendet standardmäßig das neueste Opus-Modell; legen Sie daher eines fest, das der Endpunkt bereitstellt. Für Opus 5.5 benötigen Sie Claude Code v2.1.280 oder höher.
ANTHROPIC_DEFAULT_SONNET_MODELclaude-sonnet-5Das Modell hinter dem Alias sonnet (/model sonnet). Der Alias fordert standardmäßig Sonnet 5.5 an; legen Sie daher ein Sonnet-Modell fest, das der Endpunkt bereitstellt.
ANTHROPIC_DEFAULT_HAIKU_MODELclaude-haiku-4-5Das günstige Modell, das Claude Code für eigene Hintergrundaufrufe verwendet – nach dem Caching der stärkste Hebel zur Kostensenkung.
Die Modellnamen müssen vom Endpunkt tatsächlich unterstützt werden. Wenn Sie ein Gateway verwenden und eine nicht verfügbare Modell-ID beibehalten, ist das der zweithäufigste Fehler. Er äußert sich als 404 model_not_found statt als Authentifizierungsfehler. Die Modell-IDs von Kunavo sind auf der Modellseite aufgeführt und werden live über GET /v1/models zurückgegeben.

Einrichtung pro Client

Claude Code

Fügen Sie die Exporte in das Shell-Profil ein, mit dem Claude Code gestartet wird, und öffnen Sie anschließend ein neues Terminal. An der Installation oder am Arbeitsablauf ändert sich nichts.

~/.zshrc
# ~/.zshrc (or ~/.bashrc) — applies to every Claude Code session.
export ANTHROPIC_BASE_URL=https://api.kunavo.com
export ANTHROPIC_AUTH_TOKEN=sk-kn-...

# Pin models this endpoint serves. Claude Code's default and its opus/sonnet
# aliases follow Anthropic's newest models, which may not be served here —
# unpinned, those calls 404.
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

Führen Sie in Claude Code /status aus, um zu prüfen, welchen Endpunkt die aktuelle Sitzung verwendet. Eine Schritt-für-Schritt-Anleitung einschließlich der Erstellung eines Schlüssels finden Sie hier: API-Schlüssel in Claude Code festlegen.

Anthropic-SDK (Python / TypeScript)

Die SDKs lesen dieselben Umgebungsvariablen. Beide Einstellungen können auch an den Konstruktor übergeben werden – nützlich, wenn ein Prozess mit mehreren Endpunkten kommuniziert.

anthropic_sdk.py
from anthropic import Anthropic

# The Anthropic SDK appends /v1/messages, so pass the origin — not .../v1.
client = Anthropic(
    base_url="https://api.kunavo.com",
    auth_token="sk-kn-...",          # sets the Authorization: Bearer header
)

msg = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Say hi"}],
)
print(msg.content[0].text)

OpenAI-SDK – die andere Konvention

Wenn Ihr Code bereits die OpenAI-Schnittstelle verwendet, benötigen Sie ANTHROPIC_BASE_URL überhaupt nicht. Richten Sie base_url auf den OpenAI-kompatiblen Pfad aus – diesmal mit /v1 – und rufen Sie dieselben Claude-Modelle über /v1/chat/completions auf.

openai_sdk.py
from openai import OpenAI

# The OpenAI SDK is the other convention: it wants the /v1 in the base_url.
client = OpenAI(
    api_key="sk-kn-...",
    base_url="https://api.kunavo.com/v1",
)

r = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Say hi"}],
)
print(r.choices[0].message.content)

Cline, Roo Code, Kilo Code, Cursor

Editor-Agenten bieten dieselben zwei Einstellungen meist in ihrer eigenen Benutzeroberfläche statt über die Umgebung an: ein Feld für die „Basis-URL“ oder den „benutzerdefinierten Endpunkt“ sowie ein API-Schlüsselfeld. Die Regeln bleiben gleich: Bei einem Anthropic-artigen Anbieter den Ursprung ohne /v1 verwenden und den Schlüssel in das API-Schlüsselfeld eintragen. Anleitungen für einzelne Clients: Cline, Roo Code, Kilo Code.

Prüfen, ob es funktioniert

Ein einzelner curl-Aufruf prüft gleichzeitig die Basis-URL und die Anmeldedaten. Eine 200-Antwort mit JSON-Text bedeutet, dass beides stimmt.

# 200 and a JSON body means the base URL and the token are both right.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":16,
       "messages":[{"role":"user","content":"ping"}]}'

# In Claude Code, /status shows the endpoint the session is actually using.

Wenn es nicht funktioniert

SymptomUrsacheLösung
404 bei jeder Anfrage/v1 am Ende von ANTHROPIC_BASE_URLSetzen Sie nur den Ursprung. Der Client fügt /v1/messages an.
401 / ungültiger x-api-keyAnmeldedaten als ANTHROPIC_API_KEY gesetzt, obwohl sich der Endpunkt mit Bearer-Token authentifiziertVerwenden Sie stattdessen ANTHROPIC_AUTH_TOKEN – hier wird der Unterschied ausführlich erklärt
Anfragen gehen weiterhin an api.anthropic.comVariablen wurden erst nach dem Sitzungsstart exportiert oder in einem Profil gesetzt, das die Shell nicht einliestÖffnen Sie ein neues Terminal; bestätigen Sie in derselben Shell, die den Client startet, mit echo $ANTHROPIC_BASE_URL.
404 model_not_foundModell-ID wird vom Endpunkt nicht unterstütztSetzen Sie ANTHROPIC_MODEL auf eine ID aus GET /v1/models
Claude Code meldet, dass das Guthaben zu niedrig istAnfragen erreichen den Endpunkt und werden dem Schlüssel statt dem Abonnement belastetDas ist zu erwarten – laden Sie Guthaben auf oder entfernen Sie den Token, um wieder den Tarif zu verwenden. Siehe unzureichendes Guthaben

Auswirkungen auf ein Pro- oder Max-Abonnement

Solange eine Anmeldedatenvariable gesetzt ist, rechnet Claude Code über den Schlüssel statt über das angemeldete Abonnement ab: Die Tariflimits gelten nicht mehr, und die Nutzung wird dem Eigentümer des Schlüssels berechnet. Das Abonnement selbst bleibt unberührt – entfernen Sie die Variable und öffnen Sie ein neues Terminal, damit Claude Code wieder den Tarif verwendet. Die beiden Abrechnungsarten werden niemals kombiniert. Die Kostenberechnung für beide finden Sie unter Claude-Code-Preise.

Weiter

Häufig gestellte Fragen

Was ist ANTHROPIC_BASE_URL?

ANTHROPIC_BASE_URL ist die Umgebungsvariable, die den Anthropic-SDKs und Claude Code mitteilt, an welchen Host sie API-Anfragen senden sollen, anstatt den Standardhost https://api.anthropic.com zu verwenden. Setzen Sie die Variable auf einen Ursprung ohne Pfad – der Client fügt /v1/messages selbst an – und kombinieren Sie sie mit ANTHROPIC_AUTH_TOKEN, das als Authorization: Bearer-Header gesendet wird. Jeder Anthropic-kompatible Endpunkt funktioniert; für Kunavo lautet der Wert https://api.kunavo.com.

Sollte ANTHROPIC_BASE_URL /v1 enthalten?

Nein. ANTHROPIC_BASE_URL darf nur den Ursprung enthalten – https://api.kunavo.com, nicht https://api.kunavo.com/v1 –, denn die Anthropic-SDKs und Claude Code fügen den Pfad /v1/messages selbst an. Wenn Sie /v1 einschließen, werden Anfragen an /v1/v1/messages gesendet, die mit 404 beantwortet werden. Beim OpenAI-SDK gilt die umgekehrte Konvention: Dort muss /v1 in base_url enthalten sein. Deshalb wird dasselbe Gateway je nach aufrufendem Client auf zwei verschiedene Arten angegeben.

Was ist der Unterschied zwischen ANTHROPIC_AUTH_TOKEN und ANTHROPIC_API_KEY?

ANTHROPIC_AUTH_TOKEN sendet die Anmeldedaten im Authorization: Bearer-Header, während ANTHROPIC_API_KEY sie als x-api-key-Header sendet, den api.anthropic.com erwartet. Ein Gateway, das sich mit Bearer-Token authentifiziert, benötigt ANTHROPIC_AUTH_TOKEN. ANTHROPIC_API_KEY stattdessen zu setzen, ist die häufigste Ursache für einen 401-Fehler nach einer Änderung von ANTHROPIC_BASE_URL. Setzen Sie nur eine der beiden Variablen – sind beide gesetzt, hängt das Verhalten von der Clientversion ab.

Wie lege ich in Claude Code eine benutzerdefinierte Basis-URL fest?

Exportieren Sie ANTHROPIC_BASE_URL und ANTHROPIC_AUTH_TOKEN im Shell-Profil, mit dem Claude Code gestartet wird (~/.zshrc oder ~/.bashrc), und öffnen Sie anschließend ein neues Terminal, damit die Variablen übernommen werden. Claude Code liest sie beim Start ein; eine bereits laufende Sitzung verwendet weiterhin den alten Endpunkt. Führen Sie in Claude Code /status aus, um zu prüfen, welchen Endpunkt die aktuelle Sitzung verwendet.

Wird mein Claude-Pro- oder Max-Abonnement deaktiviert, wenn ich ANTHROPIC_BASE_URL festlege?

Solange eine Anmeldedatenvariable wie ANTHROPIC_AUTH_TOKEN gesetzt ist, rechnet Claude Code über den Schlüssel statt über das angemeldete Abonnement ab. Daher gelten die Tariflimits von Pro und Max nicht mehr, und die Nutzung wird dem Eigentümer des Schlüssels berechnet. Das Abonnement selbst bleibt unberührt und aktiv – entfernen Sie die Variable und öffnen Sie ein neues Terminal, damit Claude Code wieder den Tarif verwendet.