Entwickeln / Referenz
Messages
Erzeugt eine Modellantwort im Format der Anthropic Messages API und maskiert System-Prompt und Nachrichten, wenn die Maskierung aktiv ist.
/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.
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?"
}
]
}'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)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
| Bereich | Verhalten |
|---|---|
| Modell | Das 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. |
| Anbieter | Der Header X-Noirdoc-Provider in der Antwort nennt den Anbieter, auch bei einem Fehler des Anbieters. Siehe Anbieter & Routing. |
anthropic-version | An Anthropic sendet das Gateway immer anthropic-version: 2023-06-01, auch wenn Ihr Client einen anderen Wert sendet. |
| Google Vertex | Lä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. |
| Maskierung | Ist 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 Platzhaltern | Hat das Gateway Platzhalter gesetzt, stellt es system eine Anweisung voran, die Platzhalter wie echte Werte zu behandeln. |
| Dateien und Bilder | image- und document-Blöcke sind nur erlaubt, wenn Admins Ihrer Organisation unter Models → Datenschutz die Option Dateiinhalte zulassen eingeschaltet haben. Details: Dateien. |
| Datei-Verweise | Bei 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. |
| Header | Das Gateway entfernt Ihren Schlüssel und X-Noirdoc-Mask, bevor es die Anfrage weiterleitet. |
Unterrouten
| Methode | Pfad | Zweck |
|---|---|---|
POST | /v1/messages | Antwort erzeugen |
POST | /v1/messages/count_tokens | Tokens 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
| Status | Code | Bedeutung |
|---|---|---|
| 400 | model_required | Die Anfrage nennt kein Modell (model im Body, bei /v1/audio/transcriptions im Formularfeld). |
| 400 | wrong_endpoint_for_model | Das Modell gehört zu einer anderen Endpunkt-Familie oder einem anderen API-Format als der aufgerufene Endpunkt. |
| 400 | invalid_request_body | Der Body ist kein JSON-Objekt oder nicht in UTF-8 kodiert. |
| 402 | insufficient_credit | Das Guthaben der Organisation ist aufgebraucht oder kleiner als die geschätzten Höchstkosten der Anfrage. |
| 402 | key_budget_exhausted | Das Budget dieses Schlüssels ist für den laufenden Zeitraum aufgebraucht oder reicht für die geschätzten Kosten der Anfrage nicht aus. |
| 403 | reference_not_available_on_platform | Der 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. |
| 403 | model_not_allowed_for_key | Das Modell gehört nicht zu den erlaubten Modellen dieses Schlüssels. |
| 403 | provider_not_allowed_for_tenant | Die Organisation gilt als Berufsgeheimnisträger (§ 203 StGB); das schließt jeden Anbieter aus, der dieses Modell anbietet. |
| 403 | provider_not_allowed_for_key | Die Einschränkungen des Schlüssels (Anbieter, Datenresidenz, CLOUD Act, § 203) schließen jeden Anbieter dieses Modells aus. |
| 403 | file_content_not_allowed | Die Anfrage enthält Dateien, Bilder oder Audio, und die Organisation lässt keine Dateiinhalte zu. |
| 403 | file_pii_blocked | Eine Datei enthält personenbezogene Daten, und der Dateianalyse-Modus der Organisation ist block. |
| 404 | object_not_found | Das Objekt (Datei, Skill oder gespeicherte Antwort) existiert nicht oder gehört nicht Ihrer Organisation. |
| 404 | model_not_available | Die Modell-ID ist für die Organisation nicht verfügbar. |
| 422 | file_unprocessable | Eine 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. |
| 500 | detection_error | Die Erkennung personenbezogener Daten ist fehlgeschlagen; das Gateway hat die Anfrage nicht weitergeleitet. |
| 502 | provider_misconfigured | Die Konfiguration des gewählten Anbieters ist ungültig, zum Beispiel eine nicht erlaubte Basis-URL. |
| 502 | provider_unreachable | Das Gateway konnte keine Verbindung zum Anbieter herstellen, oder die Verbindung ist abgebrochen. |
| 503 | ownership_check_unavailable | Das Gateway konnte gerade nicht prüfen, ob das Objekt Ihrer Organisation gehört, und hat die Anfrage abgelehnt. |
| 504 | provider_timeout | Der 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).