Claude Platform Docs
MessagesMit Claude entwickeln

Fallback-Gutschrift

Vermeide es, die Prompt-Cache-Kosten doppelt zu bezahlen, wenn du eine abgelehnte Anfrage auf einem anderen Modell wiederholst.

Prompt-Caches gelten pro Modell. Wenn ein Modell eine Anfrage ablehnt und du sie auf einem anderen Modell wiederholst, muss das für das erste Modell bereits gecachte Gesprächspräfix von Grund auf in den Cache des neuen Modells geschrieben werden. Cache-Schreibvorgänge kosten mehr als Cache-Lesevorgänge. „Fallback credit“ (Fallback-Gutschrift) beseitigt diese zusätzlichen Kosten. Die Ablehnung enthält ein Gutschrift-Token, du gibst das Token bei der Wiederholung zurück, und die Wiederholung wird so abgerechnet, als wäre das Gespräch von Anfang an auf dem neuen Modell geführt worden.

Du brauchst diese Seite nur, wenn du die Wiederholung selbst baust: über reines HTTP oder mit eigener Wiederholungslogik. Serverseitiger Fallback und die SDK-Middleware wenden die Fallback-Gutschrift automatisch an. Wenn du eines von beiden verwendest, überspringe diese Seite.

Ablehnungen und Fallback behandelt das Erkennen von Ablehnungen und die Wahl eines Fallback-Ansatzes. Prompt-Caching erklärt Cache-Lesevorgänge und Cache-Schreibvorgänge, falls dir diese Begriffe neu sind.

Der grundlegende Ablauf

  1. Mit dem Beta-Header aktivieren

    Sende die Anfrage, die möglicherweise abgelehnt wird, mit dem Header anthropic-beta: fallback-credit-2026-07-01. Der Header server-side-fallback-2026-07-01 gewährt ebenfalls dieselben Felder, und der frühere Header fallback-credit-2026-06-01 wird weiterhin akzeptiert und gewährt dieselben Felder.

  2. Zwei Felder aus der Ablehnung lesen

    Bei einer Ablehnung enthält stop_details zwei Felder:

    • fallback_credit_token: eine opake Zeichenkette, die die Gutschrift repräsentiert.
    • fallback_has_prefill_claim: ein Boolean, der dir sagt, welche Form des Wiederholungs-Bodys du verwenden sollst.

    Beide sind null, wenn für die Ablehnung keine Gutschrift verfügbar ist.

  3. Die Wiederholung erstellen

    Beginne mit dem Body der abgelehnten Anfrage. Setze model auf das Fallback-Modell und füge das Token als Top-Level-Parameter fallback_credit_token hinzu. Wähle die Body-Form aus der folgenden Tabelle.

  4. Die Wiederholung mit demselben Header senden

    Sende die Wiederholung mit demselben Beta-Header fallback-credit-2026-07-01. Die Wiederholung benötigt den Header, um das Token einzulösen.

Das Feld fallback_has_prefill_claim sagt dir, ob die Wiederholung die Teilausgabe des ablehnenden Modells fortsetzen kann, anstatt von vorne zu beginnen:

fallback_has_prefill_claimWiederholungs-Body
trueDer Body der abgelehnten Anfrage, unverändert, plus eine angehängte Assistant-Nachricht, deren content den content der abgelehnten Antwort wiedergibt. Das Wiederholungsmodell setzt die Antwort dort fort, wo das ablehnende Modell aufgehört hat, und abgeschlossene Server-Tool-Aufrufe werden nicht erneut ausgeführt.
falseDer Body der abgelehnten Anfrage, unverändert.

Beispiel

Das folgende Beispiel stellt eine Anfrage, die möglicherweise abgelehnt wird, und löst das Gutschrift-Token bei einer Wiederholung gegen Claude Opus 4.8 ein. Wenn ein Wiederholungsversuch zurückgewiesen wird, stuft das Beispiel über die Zurückweisungsleiter herab: die Abfolge zunehmend einfacherer Wiederholungsformen, die in Wenn eine Wiederholung zurückgewiesen wird behandelt wird.

client = Anthropic()

request = {
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, Claude"}],
}


def send(model: str, body: dict[str, object]) -> BetaMessage:
    return client.beta.messages.create(
        model=model, betas=["fallback-credit-2026-07-01"], **body
    )


response = send("claude-fable-5", request)

if (
    response.stop_reason == "refusal"
    and (details := response.stop_details)
    and (token := details.fallback_credit_token)
):
    exact_body = request | {"fallback_credit_token": token}
    # Bevorzuge die Fortsetzungsform, außer der Claim ist False
    if details.fallback_has_prefill_claim is not False:
        echoed = [block.model_dump() for block in response.content]
        match echoed:
            case [*_, {"type": "text"} as final_block]:
                final_block["text"] = final_block["text"].rstrip()
        attempt = exact_body | {
            "messages": [
                *request["messages"],
                {"role": "assistant", "content": echoed},
            ]
        }
    else:
        attempt = exact_body

    try:
        response = send("claude-opus-4-8", attempt)
    except BadRequestError as error:
        if "redemption temporarily unavailable" in error.message:
            raise  # Transient: retry with the token within its five-minute window
        try:
            # Falle auf den unveränderten Body zurück, weiterhin mit dem Token
            response = send("claude-opus-4-8", exact_body)
        except BadRequestError as retry_error:
            if "redemption temporarily unavailable" in retry_error.message:
                raise  # Transient: retry with the token within its five-minute window
            # Das Token selbst wurde abgelehnt: verwirf es und versuche es ohne erneut.
            response = send("claude-opus-4-8", request)

print(json.dumps({"stop_reason": response.stop_reason, "model": response.model}))

Wo es funktioniert

Die Fallback-Gutschrift befindet sich in der Beta auf der Claude API, Amazon Bedrock, Claude Platform auf AWS, Google Cloud und Microsoft Foundry. Ablehnungen in Message Batches erzeugen keine Gutschrift-Tokens, und die Einlösung gilt nur für direkte Messages-API-Anfragen: Ein Token, das bei einer Batch-Anfrage übergeben wird, wird akzeptiert, aber ignoriert.

Das Wiederholungsmodell muss eines der zulässigen Fallback-Ziele des ablehnenden Modells sein. Für Claude Fable 5.1 und Claude Fable 5 sind das Claude Opus 4.8 (claude-opus-4-8) und Claude Opus 5 (claude-opus-5).

Prüfen, ob die Gutschrift angewendet wurde

Die Erstattung ist in der usage der Wiederholung sichtbar. Verglichen mit dem, was dieselbe Anfrage ohne das Token melden würde, ist cache_creation_input_tokens niedriger und cache_read_input_tokens um denselben Betrag höher. Eine Verschiebung von null bedeutet, dass das Token anerkannt wurde, es aber nichts neu zu bepreisen gab, zum Beispiel weil der Cache des Wiederholungsmodells bereits warm war.

Wenn eine Wiederholung zurückgewiesen wird

Die meisten Wiederholungen werden beim ersten Versuch eingelöst. Wenn das nicht der Fall ist, gibt die API einen 400-Fehler zurück, der dir sagt, was du als Nächstes versuchen sollst.

  1. Fortsetzung zurückgewiesen: den unveränderten Body erneut senden

    Wenn die Wiederholung, die die Assistant-Nachricht anhängt, mit einem 400-Fehler zurückgewiesen wird, sende den Body der abgelehnten Anfrage unverändert erneut, weiterhin mit dem Token.

  2. Token zurückgewiesen: das Token weglassen

    Wenn auch der unveränderte Body mit einem 400-Fehler zurückgewiesen wird, dessen Meldung fallback_credit_token nennt, wiederhole ohne das Token. Die Gutschrift verfällt, aber die Wiederholung selbst geht durch.

Referenz

Die folgenden Abschnitte behandeln Grenzfälle und die vollständigen Einlösungsregeln. Die meisten Integrationen benötigen sie nicht.

Nächste Schritte

Erkenne Ablehnungen und wähle zwischen serverseitigem Fallback, der SDK-Middleware und einer manuellen Wiederholung.

Wie Cache-Lesevorgänge und Cache-Schreibvorgänge abgerechnet werden.

Jeder stop_reason-Wert und wie du damit umgehst.

Der SDK-Helfer, der die Fallback-Gutschrift automatisch anwendet.

Was this page helpful?