Entwickeln / Anleitungen

Maskierung einschalten

Wie der Header X-Noirdoc-Mask mit der Maskierungsrichtlinie Ihrer Organisation zusammenwirkt und wie Sie die Erkennung vorab prüfen.

Das Gateway maskiert personenbezogene Daten auf den Endpunkten /v1/chat/completions, /v1/responses und /v1/messages. Ob es eine Anfrage maskiert, entscheiden zwei Dinge: die Maskierungsrichtlinie Ihrer Organisation und der Header X-Noirdoc-Mask der Anfrage. Wie die Maskierung arbeitet, beschreibt Maskierung.

  1. Richtlinie prüfen

    Die Maskierungsrichtlinie steht unter Models → Datenschutz im Abschnitt Maskierungsrichtlinie. Admins Ihrer Organisation können sie dort ändern. Neue Organisationen starten mit default_off.

    RichtlinieIm Portalohne HeaderX-Noirdoc-Mask: onX-Noirdoc-Mask: off
    default_offStandard ausnicht maskiertmaskiertnicht maskiert
    default_onStandard anmaskiertmaskiertnicht maskiert
    enforcedErzwungenmaskiertmaskiertmaskiert

    Groß- und Kleinschreibung des Header-Werts spielt keine Rolle. Andere Werte als on und off ignoriert das Gateway.

    Ergebnis: Sie wissen, ob Ihre Anfragen ohne Header maskiert werden.

  2. Erkennung testen

    Senden Sie einen Beispieltext an POST /v1/detect. Der Endpunkt nutzt dieselbe Erkennung wie die Maskierung und leitet nichts an einen Anbieter weiter. Ohne Feld language prüft er auf Deutsch.

    Die Antwort enthält entity_count und die Liste entities. Jeder Eintrag nennt entity_type, den erkannten text und dessen Position (start, end).

    Ergebnis: Sie sehen, welche Stellen das Gateway durch Platzhalter wie <<PERSON_1>> ersetzen würde. Die Felder im Detail stehen unter Erkennen & Pseudonymisieren.

    Shell
    curl https://api.noirdoc.de/v1/detect \
      -H "Authorization: Bearer $NOIRDOC_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "text": "Herr Müller zahlt auf DE89 3704 0044 0532 0130 00."
      }' \
      | jq '.entities[] | {entity_type, text}'
  3. Header senden

    Setzen Sie X-Noirdoc-Mask: on an der Anfrage, die maskiert werden soll. Das Gateway entfernt den Header, bevor es die Anfrage weiterleitet. Der Anbieter sieht ihn nicht.

    Ergebnis: Das Modell erhält Platzhalter statt der Originalwerte. In der Antwort an Ihre Anwendung stehen wieder die Originalwerte. Der Antwort-Header X-Noirdoc-Masked: true bestätigt, dass die Maskierung für die Anfrage aktiv war.

    Shell
    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": "Was schreibt Herr Müller der Kanzlei?"
        }]
      }'
    Python
    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": "Was schreibt Herr Müller der Kanzlei?",
            }
        ],
        # Maskierung für diese Anfrage einschalten
        extra_headers={"X-Noirdoc-Mask": "on"},
    )
    TypeScript
    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: "Was schreibt Herr Müller der Kanzlei?",
          },
        ],
      },
      // Maskierung für diese Anfrage einschalten
      { headers: { "X-Noirdoc-Mask": "on" } },
    );

Header für alle Anfragen eines Clients setzen

Mit default_headers (Python) oder defaultHeaders (TypeScript) sendet der Client den Header bei jeder Anfrage. Nutzen Sie diesen Client nur für Endpunkte mit Maskierung (/v1/chat/completions, /v1/responses, /v1/messages). Auf Endpunkten ohne Maskierung lehnt das Gateway eine Anfrage mit X-Noirdoc-Mask: on ab (siehe unten). Für Embeddings, Audio und Bilder legen Sie einen zweiten Client ohne den Header an.

Python
chat_client = OpenAI(
    base_url="https://api.noirdoc.de/v1",
    api_key=os.environ["NOIRDOC_API_KEY"],
    default_headers={"X-Noirdoc-Mask": "on"},
)

Endpunkte ohne Maskierung

Diese Endpunkte leiten Inhalte unmaskiert weiter:

EndpunktVerhalten
/v1/embeddings, /v1/audio/transcriptions, /v1/audio/speech, /v1/images/generationsKein Maskieren. Mit X-Noirdoc-Mask: on oder der Richtlinie enforced antwortet das Gateway mit 403 masking_not_supported_for_endpoint, statt unmaskiert weiterzuleiten.
/v1/files, /v1/skillsKein Maskieren. Mit X-Noirdoc-Mask: on oder der Richtlinie enforced lehnt das Gateway Hochladen und Anlegen mit 403 masking_not_supported_for_endpoint ab. Auflisten, Abrufen, Herunterladen und Löschen bleiben erlaubt. Siehe Dateien.

Welche Felder einer Anfrage das Gateway maskiert, listet Maskierte Felder.

Fehler

StatusCodeBedeutung
403masking_not_supported_for_endpointDer Endpunkt kann nicht maskieren, aber die Maskierungsrichtlinie ist enforced oder die Anfrage sendet X-Noirdoc-Mask: on.
500detection_errorDie Erkennung personenbezogener Daten ist fehlgeschlagen; das Gateway hat die Anfrage nicht weitergeleitet.