Entwickeln
Schnellstart
Wie Sie mit einem API-Schlüssel die erste Anfrage senden, eine Anfrage maskieren und den antwortenden Anbieter aus der Antwort lesen.
Das Gateway ist unter https://api.noirdoc.de/v1 erreichbar und spricht das Format der OpenAI-API. Sie brauchen einen Zugang zum Noirdoc-Portal und curl, Python oder Node.js.
-
Schlüssel erstellen
Melden Sie sich im Portal an; ohne Konto führt die Seite über Konto erstellen durch die Registrierung. Beim ersten Anmelden führt Sie die Seite Erste Schritte durch die Einrichtung. Beantworten Sie dort zuerst die Frage zu § 203 StGB und erstellen Sie danach Ihren ersten Schlüssel. Die Antwort zu § 203 StGB bestimmt, welche Anbieter Ihrer Organisation zur Verfügung stehen (siehe Berufsgeheimnisträger).
Weitere Schlüssel erstellen Sie unter Models → API-Schlüssel mit Neuer Schlüssel. Das Portal zeigt einen Schlüssel einmal an, direkt nach dem Erstellen.
Legen Sie den Schlüssel in einer Umgebungsvariablen ab. Alle Beispiele dieser Dokumentation lesen ihn aus
NOIRDOC_API_KEY. Der Wert beginnt mitpx-.Ergebnis: Die Umgebungsvariable
NOIRDOC_API_KEYenthält Ihren Schlüssel.export NOIRDOC_API_KEY="px-..." -
Modell auswählen
GET /v1/modelslistet die Modelle, die Ihr Schlüssel aufrufen darf. Jedes Element der Liste hat eineid. Diese Modell-ID setzen Sie in Anfragen alsmodelein.Die Beispiele verwenden
qwen3.8-27b. Steht diese ID nicht in Ihrer Liste, setzen Sie eine andere Modell-ID aus der Liste ein.Ergebnis: Sie kennen eine Modell-ID, die Ihr Schlüssel aufrufen darf.
curl https://api.noirdoc.de/v1/models \ -H "Authorization: Bearer $NOIRDOC_API_KEY" -
Erste Anfrage senden
Senden Sie eine Anfrage an
POST /v1/chat/completions. Im OpenAI-SDK setzen Sie dafürbase_urlaufhttps://api.noirdoc.de/v1undapi_keyauf Ihren Schlüssel.Ergebnis: Die Antwort hat das Format der OpenAI-API. Der Text steht in
choices[0].message.content.curl https://api.noirdoc.de/v1/chat/completions \ -H "Authorization: Bearer $NOIRDOC_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3.8-27b", "messages": [{"role": "user", "content": "Hallo"}] }'import os from openai import OpenAI client = OpenAI( base_url="https://api.noirdoc.de/v1", api_key=os.environ["NOIRDOC_API_KEY"], ) response = client.chat.completions.create( model="qwen3.8-27b", messages=[{"role": "user", "content": "Hallo"}], ) print(response.choices[0].message.content)import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.noirdoc.de/v1", apiKey: process.env.NOIRDOC_API_KEY, }); const response = await client.chat.completions.create({ model: "qwen3.8-27b", messages: [{ role: "user", content: "Hallo" }], }); console.log(response.choices[0].message.content); -
Maskierte Anfrage senden
Senden Sie den Header
X-Noirdoc-Mask: on. Das Gateway ersetzt dann personenbezogene Daten durch Platzhalter wie<<PERSON_1>>, bevor die Anfrage das Modell erreicht. In der Antwort setzt es die Originalwerte wieder ein.Sie senden
Beantworten Sie die Mail von Jonas Becker.
Das Modell sieht
Beantworten Sie die Mail von <<PERSON_1>>.
Neue Organisationen starten mit der Maskierungsrichtlinie
default_off: Das Gateway maskiert, wenn die Anfrage den Header mitonsendet. Welche Richtlinien es gibt, beschreibt Maskierung einschalten.Ergebnis: Das Modell erhält Platzhalter statt der Originalwerte. In der Antwort an Ihre Anwendung stehen wieder die Originalwerte.
curl https://api.noirdoc.de/v1/chat/completions \ -H "Authorization: Bearer $NOIRDOC_API_KEY" \ -H "Content-Type: application/json" \ -H "X-Noirdoc-Mask: on" \ -d '{ "model": "qwen3.8-27b", "messages": [{ "role": "user", "content": "Beantworten Sie die Mail von Jonas Becker." }] }'response = client.chat.completions.create( model="qwen3.8-27b", messages=[{ "role": "user", "content": "Beantworten Sie die Mail von Jonas Becker.", }], extra_headers={"X-Noirdoc-Mask": "on"}, ) print(response.choices[0].message.content)const response = await client.chat.completions.create( { model: "qwen3.8-27b", messages: [ { role: "user", content: "Beantworten Sie die Mail von Jonas Becker.", }, ], }, { headers: { "X-Noirdoc-Mask": "on" } }, ); console.log(response.choices[0].message.content); -
Anbieter aus der Antwort lesen
In curl zeigt
-idie Header an. In den SDKs lesen Sie Header über die rohe Antwort. Nach welcher Regel das Gateway den Anbieter wählt, beschreibt Anbieter & Routing.Ergebnis: Die Antwort enthält den Header
X-Noirdoc-Provider. Er nennt den Anbieter, der die Anfrage beantwortet hat.curl -i https://api.noirdoc.de/v1/chat/completions \ -H "Authorization: Bearer $NOIRDOC_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3.8-27b", "messages": [{"role": "user", "content": "Hallo"}] }'raw = client.chat.completions.with_raw_response.create( model="qwen3.8-27b", messages=[{"role": "user", "content": "Hallo"}], ) print(raw.headers.get("x-noirdoc-provider")) response = raw.parse()const { data, response } = await client.chat.completions .create({ model: "qwen3.8-27b", messages: [{ role: "user", content: "Hallo" }], }) .withResponse(); console.log(response.headers.get("x-noirdoc-provider"));
Fehler beheben
Ein fehlender oder ungültiger Schlüssel ergibt Statuscode 401 mit dem Body {"detail": "..."}. Fehler, die das Gateway bei Modell-Anfragen selbst meldet, haben ein Fehlerobjekt mit "type": "proxy_error" und einem code. Diese Codes treten beim Einstieg am häufigsten auf:
| Status | Code | Bedeutung |
|---|---|---|
| 400 | model_required | Die Anfrage nennt kein Modell (model im Body, bei /v1/audio/transcriptions im Formularfeld). |
| 402 | insufficient_credit | Das Guthaben der Organisation ist aufgebraucht oder kleiner als die geschätzten Höchstkosten der Anfrage. |
| 403 | model_not_allowed_for_key | Das Modell gehört nicht zu den erlaubten Modellen dieses Schlüssels. |
| 404 | model_not_available | Die Modell-ID ist für die Organisation nicht verfügbar. |
Alle Codes stehen unter Fehlercodes.
Nächste Schritte
- OpenAI-SDK: Client einrichten, Header setzen und Fehler behandeln
- Anthropic-SDK & Claude Code:
/v1/messagesund Claude Code über das Gateway - Streaming: Antworten als SSE empfangen, auch mit Maskierung
- Maskierung einschalten: Maskierung je Anfrage oder für die ganze Organisation