Entwickeln / Referenz

Messages

Erzeugt eine Modellantwort im Format der Anthropic Messages API und maskiert System-Prompt und Nachrichten, wenn die Maskierung aktiv ist.

POST /v1/messages
Familie
chat
Maskierung
ja
Streaming
ja, SSE
Format
JSON
Abrechnung
Tokens

Anfrage

Das Gateway nimmt den Body im Format der Anthropic Messages API an. model ist Pflicht. Der Endpunkt nimmt nur Modelle an, deren Anbieter das Anthropic-Format spricht: Claude über Google Vertex oder ein eigener Anbieter-Schlüssel (BYOK) für Anthropic oder einen anderen Anthropic-kompatiblen Anbieter. Jedes andere Modell beantwortet das Gateway mit 400 wrong_endpoint_for_model.

Setzen Sie im Anthropic-SDK die Basis-URL auf https://api.noirdoc.de, ohne /v1. Das SDK hängt /v1/messages selbst an.

Das SDK sendet den Schlüssel mit api_key (TypeScript: apiKey) als x-api-key und mit auth_token (TypeScript: authToken) als Authorization: Bearer. Das Gateway nimmt beide Header an. Die Einrichtung von Claude Code beschreibt Anthropic-SDK & Claude Code.

Shell
curl https://api.noirdoc.de/v1/messages \
  -H "x-api-key: $NOIRDOC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<modell-id>",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "Was schreibt Herr Müller der Kanzlei?"
      }
    ]
  }'
Python
import os
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.noirdoc.de",
    api_key=os.environ["NOIRDOC_API_KEY"],
)

message = client.messages.create(
    model="<modell-id>",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Was schreibt Herr Müller der Kanzlei?",
        }
    ],
)
print(message.content[0].text)
TypeScript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://api.noirdoc.de",
  apiKey: process.env.NOIRDOC_API_KEY,
});

const message = await client.messages.create({
  model: "<modell-id>",
  max_tokens: 1024,
  messages: [
    {
      role: "user",
      content: "Was schreibt Herr Müller der Kanzlei?",
    },
  ],
});
console.log(message.content);

Die Modell-ID eines Claude-Modells finden Sie in GET /v1/models.

Was Noirdoc ändert

BereichVerhalten
ModellDas Gateway löst die Modell-ID über den Katalog auf und sendet dem Anbieter dessen eigenen Modellnamen. Nennt die Antwort im Feld model diesen Namen, setzt das Gateway dort wieder die ID ein, die Sie gesendet haben.
AnbieterDer Header X-Noirdoc-Provider in der Antwort nennt den Anbieter, auch bei einem Fehler des Anbieters. Siehe Anbieter & Routing.
anthropic-versionAn Anthropic sendet das Gateway immer anthropic-version: 2023-06-01, auch wenn Ihr Client einen anderen Wert sendet.
Google VertexLäuft das Modell bei Google Vertex, überträgt das Gateway Modell, Version und anthropic-beta in die Form, die Vertex erwartet. Ihre Anfrage an /v1/messages bleibt dieselbe.
MaskierungIst die Maskierung aktiv, ersetzt das Gateway personenbezogene Daten in system und messages durch Platzhalter und stellt die Originalwerte in der Antwort wieder her, auch im Stream. Die Felder listet Maskierte Felder.
Anweisung zu PlatzhalternHat das Gateway Platzhalter gesetzt, stellt es system eine Anweisung voran, die Platzhalter wie echte Werte zu behandeln.
Dateien und Bilderimage- und document-Blöcke sind nur erlaubt, wenn Admins Ihrer Organisation unter Models → Datenschutz die Option Dateiinhalte zulassen eingeschaltet haben. Details: Dateien.
Datei-VerweiseBei von Noirdoc verwalteten Anbietern müssen Dateien (source vom Typ file), Container und eigene Skills in container.skills über Ihre Organisation entstanden sein. Sonst antwortet das Gateway mit 404 object_not_found.
HeaderDas Gateway entfernt Ihren Schlüssel und X-Noirdoc-Mask, bevor es die Anfrage weiterleitet.

Unterrouten

MethodePfadZweck
POST/v1/messagesAntwort erzeugen
POST/v1/messages/count_tokensTokens einer Anfrage zählen

count_tokens verlangt model und läuft wie /v1/messages über den Katalog. Ist die Maskierung aktiv, maskiert das Gateway die Anfrage auch hier. Der Anbieter zählt dann die Tokens der maskierten Anfrage. Claude Code nutzt diesen Endpunkt für genaue Token-Zahlen; ohne ihn schätzt Claude Code die Kontextgröße anhand der Zeichen.

Läuft das Modell bei Google Vertex, leitet das Gateway count_tokens an die Zählmethode count-tokens von Vertex weiter. Die Modell-ID überträgt es dafür in die Form, die Vertex erwartet. Lehnt Vertex die Anfrage ab, erhalten Sie den Statuscode und Body von Vertex unverändert.

count_tokens erzeugt keine Antwort des Modells. Das Gateway protokolliert den Aufruf, rechnet ihn aber nicht ab. Eine Kostenschätzung vor der Weiterleitung entfällt. Bei von Noirdoc verwalteten Anbietern gilt trotzdem: Ist das Guthaben der Organisation oder das Budget des Schlüssels aufgebraucht, antwortet das Gateway mit 402.

Andere Pfade unter /v1/messages/ beantwortet das Gateway mit 404 unsupported_endpoint.

Fehler auf diesem Endpunkt

StatusCodeBedeutung
400model_requiredDie Anfrage nennt kein Modell (model im Body, bei /v1/audio/transcriptions im Formularfeld).
400wrong_endpoint_for_modelDas Modell gehört zu einer anderen Endpunkt-Familie oder einem anderen API-Format als der aufgerufene Endpunkt.
400invalid_request_bodyDer Body ist kein JSON-Objekt oder nicht in UTF-8 kodiert.
402insufficient_creditDas Guthaben der Organisation ist aufgebraucht oder kleiner als die geschätzten Höchstkosten der Anfrage.
402key_budget_exhaustedDas Budget dieses Schlüssels ist für den laufenden Zeitraum aufgebraucht oder reicht für die geschätzten Kosten der Anfrage nicht aus.
403reference_not_available_on_platformDer Body verweist auf Objekte beim Anbieter (etwa conversation, prompt.id oder vector_store_ids), deren Besitz das Gateway bei verwalteten Anbietern nicht prüfen kann.
403model_not_allowed_for_keyDas Modell gehört nicht zu den erlaubten Modellen dieses Schlüssels.
403provider_not_allowed_for_tenantDie Organisation gilt als Berufsgeheimnisträger (§ 203 StGB); das schließt jeden Anbieter aus, der dieses Modell anbietet.
403provider_not_allowed_for_keyDie Einschränkungen des Schlüssels (Anbieter, Datenresidenz, CLOUD Act, § 203) schließen jeden Anbieter dieses Modells aus.
403file_content_not_allowedDie Anfrage enthält Dateien, Bilder oder Audio, und die Organisation lässt keine Dateiinhalte zu.
403file_pii_blockedEine Datei enthält personenbezogene Daten, und der Dateianalyse-Modus der Organisation ist block.
404object_not_foundDas Objekt (Datei, Skill oder gespeicherte Antwort) existiert nicht oder gehört nicht Ihrer Organisation.
404model_not_availableDie Modell-ID ist für die Organisation nicht verfügbar.
422file_unprocessableEine Datei ließ sich für die Prüfung nicht verarbeiten: Sie ist zu groß, nicht lesbar oder hat ein Format ohne Analyse. Das Gateway hat die Anfrage nicht weitergeleitet.
500detection_errorDie Erkennung personenbezogener Daten ist fehlgeschlagen; das Gateway hat die Anfrage nicht weitergeleitet.
502provider_misconfiguredDie Konfiguration des gewählten Anbieters ist ungültig, zum Beispiel eine nicht erlaubte Basis-URL.
502provider_unreachableDas Gateway konnte keine Verbindung zum Anbieter herstellen, oder die Verbindung ist abgebrochen.
503ownership_check_unavailableDas Gateway konnte gerade nicht prüfen, ob das Objekt Ihrer Organisation gehört, und hat die Anfrage abgelehnt.
504provider_timeoutDer Anbieter hat nicht innerhalb der Wartezeit des Gateways geantwortet.

Anthropic-Referenz

Alle übrigen Felder von Anfrage und Antwort beschreibt die API-Referenz von Anthropic für die Version 2023-06-01: Messages und Count tokens (geprüft am 30.09.2026).