Skip to content

Getting Started

Diese Seite führt einmal durch den vollen Cortina-Round-Trip: Session erstellen, Text anonymisieren, einen LLM-Call simulieren, das Ergebnis deanonymisieren. Erst per cURL gegen die Live-API, dann mit den SDKs.

  1. Einen API-Key.

    Aktuell werden Keys auf direkte Anfrage ausgestellt (E-Mail an [email protected]). Self-Service-Verwaltung kommt mit dem Platform-Portal — bis dahin: kurz schreiben, Rate- Limit nennen, Key kommt zurück.

  2. Ein Terminal mit curl (für den ersten Teil) oder Node ≥ 18 / Python ≥ 3.10 (für den SDK-Teil).

  3. Den Key in einer Umgebungsvariable. Alle folgenden Beispiele nehmen TUP_ANON_KEY aus dem Environment.

    Terminal window
    export TUP_ANON_KEY=tup_live_<dein-key>

Die drei Calls unten reichen für einen vollen Round-Trip. Die session_id aus Schritt 1 muss im Body der Folge-Calls stehen (nicht in einem Header — das ist die häufigste Verwechslung beim ersten Anlauf).

  1. Session erstellen.

    Terminal window
    curl -sS -X POST https://api.tup-ai.de/v1/cortina/session \
    -H "Authorization: Bearer $TUP_ANON_KEY" \
    -H "Content-Type: application/json" \
    -d '{"ttl_seconds": 600}'

    Antwort:

    {
    "session_id": "018f4a2c-3d7e-7b4a-8c1e-2f9b3d4e5a6f",
    "expires_at": "2026-05-06T20:00:00Z",
    "status": "active"
    }

    Die session_id für die nächsten Schritte merken.

  2. Text anonymisieren.

    Terminal window
    curl -sS -X POST https://api.tup-ai.de/v1/cortina/anonymize \
    -H "Authorization: Bearer $TUP_ANON_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "text": "Bitte auf IBAN DE89 3704 0044 0532 0130 00 überweisen. Tel: +49 6131 1234567",
    "session_id": "018f4a2c-3d7e-7b4a-8c1e-2f9b3d4e5a6f"
    }'

    Antwort (gekürzt):

    {
    "anonymized_text": "Bitte auf IBAN [DE_IBAN_1] überweisen. Tel: [DE_PHONE_NUMBER_1]",
    "entities": [
    { "entity_type": "DE_IBAN", "start": 16, "end": 41, "placeholder": "[DE_IBAN_1]", "confidence": 1.0 },
    { "entity_type": "DE_PHONE_NUMBER", "start": 58, "end": 75, "placeholder": "[DE_PHONE_NUMBER_1]", "confidence": 0.95 }
    ],
    "session_id": "018f4a2c-3d7e-7b4a-8c1e-2f9b3d4e5a6f",
    "audit_flags": []
    }

    Den anonymized_text kannst du jetzt sicher an dein LLM weitergeben. Die Original-PII liegt verschlüsselt in der Session.

  3. Antwort deanonymisieren.

    Angenommen das LLM antwortet mit "Ich bestätige die Überweisung an [DE_IBAN_1]." — diesen Text ans Deanonymize-Endpoint:

    Terminal window
    curl -sS -X POST https://api.tup-ai.de/v1/cortina/deanonymize \
    -H "Authorization: Bearer $TUP_ANON_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "text": "Ich bestätige die Überweisung an [DE_IBAN_1].",
    "session_id": "018f4a2c-3d7e-7b4a-8c1e-2f9b3d4e5a6f"
    }'

    Antwort:

    {
    "original_text": "Ich bestätige die Überweisung an DE89 3704 0044 0532 0130 00.",
    "session_id": "018f4a2c-3d7e-7b4a-8c1e-2f9b3d4e5a6f"
    }
import { CortinaClient } from "@tup-ai/cortina";
const cortina = new CortinaClient({ apiKey: process.env.TUP_ANON_KEY! });
// 1. Anonymisieren — Convenience-Pfad mit Auto-Session
const masked = await cortina.anonymize(
"Bitte auf IBAN DE89 3704 0044 0532 0130 00 überweisen. Tel: +49 6131 1234567",
);
console.log(masked.anonymizedText);
// "Bitte auf IBAN [DE_IBAN_1] überweisen. Tel: [DE_PHONE_NUMBER_1]"
// 2. Den anonymisierten Text an dein LLM
const llmReply = await callMyLLM(masked.anonymizedText);
// 3. Originale wieder einsetzen
const restored = await cortina.deanonymize({
text: llmReply,
sessionId: masked.sessionId,
});
console.log(restored.originalText);

Wenn du anonymize aufrufst, läuft Text durch eine vierstufige Pipeline (Pattern-Recognizer → spaCy NER → Context-LLM → Adversarial-Loop), und das Original-Mapping wird verschlüsselt in Redis abgelegt.

4-Stage Pipeline im DetailSessions & Mapping-Lifecycle