Lathra.ai API Dokumentation
Version: 2.0.0
Letzte Aktualisierung: 15. Februar 2026
Überblick
Lathra.ai ist ein DSGVO-konformer Proxy für US-amerikanische Large Language Models (LLMs). Die API tokenisiert personenbezogene Daten (PII) automatisch und kontexterhaltend, bevor sie an OpenAI, Anthropic oder andere LLM-Anbieter gesendet werden. Ihre personenbezogenen Daten bleiben in der EU, während Sie die volle Leistungsfähigkeit moderner LLMs nutzen können.
Kernfunktionen
Lathra.ai bietet eine OpenAI-kompatible API mit automatischer PII-Pseudonymisierung. Die Tokenisierung erfolgt durch ein intent-basiertes LLM-System, das semantische Kontexte versteht und nur relevante Informationen schützt. Nicht-personenbezogene Texte werden automatisch erkannt und ohne Tokenisierung weitergeleitet (Bypass), um Kosten zu sparen. Die Detokenisierung kann optional übersprungen werden, was besonders für HR-SaaS- oder Medical-SaaS-Anwendungen relevant ist, bei denen Daten vor End-Nutzern geschützt werden müssen.
Authentifizierung
Lathra.ai verwendet einen Dual-Key-Ansatz: Sie benötigen sowohl einen Lathra API Key als auch Ihren eigenen LLM-Provider API Key. Der Lathra Key authentifiziert Ihre Anfragen, während der Provider Key direkt an den Upstream-LLM weitergeleitet wird. Lathra speichert Ihre LLM API Keys niemals.
Erforderliche Header:
| Header | Beschreibung | Beispiel |
|--------|--------------|----------|
| X-Lathra-API-Key | Ihr Lathra API Key (erforderlich) | lathra_live_abc123... |
| X-Upstream-Provider | LLM-Anbieter (erforderlich) | openai |
| X-Upstream-Key | Ihr LLM API Key (erforderlich) | sk-proj-... |
Endpoints
POST /v1/chat/completions
Der Hauptendpoint für DSGVO-konforme Chat-Completions. Kompatibel mit der OpenAI Chat Completions API.
Base URL: https://api.lathra.ai (Produktion) | http://localhost:8001 (Entwicklung)
Request Headers
| Header | Typ | Beschreibung |
|--------|-----|--------------|
| X-Lathra-API-Key | string (required) | Ihr Lathra API Key |
| X-Upstream-Provider | enum (required) | openai | anthropic | together | groq |
| X-Upstream-Key | string (required) | Ihr LLM Provider API Key |
| X-User-Id | string (optional) | User-Identifier für Audit-Logs |
| X-Request-ID | string (optional) | Request-Tracking-ID |
| X-Prompt-Version | enum (optional) | legacy | split_v1 (default: legacy) |
| X-Skip-Detokenization | string (optional) | true | 1 um Detokenisierung zu überspringen |
Request Body
{ "model": "gpt-4o-mini", "messages": [ { "role": "user", "content": "Herr Schmidt arbeitet bei der BMW AG in München." } ], "temperature": 0.7, "max_tokens": null, "stream": false, "token_mappings": {} }
Parameter:
| Parameter | Typ | Beschreibung |
|-----------|-----|--------------|
| model | string | LLM-Modell (z.B. gpt-4o-mini, claude-3-5-sonnet-20241022) |
| messages | array | Array von Message-Objekten mit role und content |
| temperature | float | Sampling-Temperatur (0.0 - 2.0, default: 0.7) |
| max_tokens | integer | Maximale Anzahl Tokens in der Antwort |
| stream | boolean | Streaming-Modus aktivieren (default: false) |
| token_mappings | object | Token-Mappings aus vorherigen Requests (für Konversationen) |
Response
{ "id": "chatcmpl-550e8400-e29b-41d4-a716-446655440000", "object": "chat.completion", "created": 1739544000, "model": "gpt-4o-mini", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Herr Schmidt arbeitet bei der BMW AG in München." }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 45, "completion_tokens": 12, "total_tokens": 57 }, "lathra_metadata": { "session_id": "550e8400-e29b-41d4-a716-446655440000", "provider": "openai", "tokenization_applied": true, "detokenization_skipped": false, "processing_time_ms": 1234, "llm_duration_ms": 567, "tokenized_input": "[[ACTOR_PERSON_1]] arbeitet bei der [[ORGANIZATION_TYPE_COMPANY_1]] in [[CONTEXT_CLASS_LOCATION_CITY_1]].", "tokenized_response": "[[ACTOR_PERSON_1]] arbeitet bei der [[ORGANIZATION_TYPE_COMPANY_1]] in [[CONTEXT_CLASS_LOCATION_CITY_1]].", "mappings": [ { "token": "[[ACTOR_PERSON_1]]", "text": "Herr Schmidt" }, { "token": "[[ORGANIZATION_TYPE_COMPANY_1]]", "text": "BMW AG" }, { "token": "[[CONTEXT_CLASS_LOCATION_CITY_1]]", "text": "München" } ], "rare_disease_handling": null, "prompt_version": "split_v1", "prompt_hash": "a1b2c3d4..." } }
Response-Felder:
| Feld | Beschreibung |
|------|--------------|
| lathra_metadata.tokenization_applied | true wenn PII tokenisiert wurde, false bei Bypass |
| lathra_metadata.detokenization_skipped | true wenn Detokenisierung übersprungen wurde |
| lathra_metadata.tokenized_input | Tokenisierter Input-Text (für Debugging) |
| lathra_metadata.tokenized_response | Tokenisierte LLM-Antwort (vor Detokenisierung) |
| lathra_metadata.mappings | Array von Token-zu-Text-Mappings |
| lathra_metadata.prompt_version | Verwendete Prompt-Version |
GET /health
Health-Check-Endpoint für Monitoring und Load Balancing.
Response
{ "status": "healthy", "service": "lathra-proxy", "version": "2.0.0" }
GET /
Root-Endpoint mit API-Informationen.
Response
{ "service": "Lathra.ai DSGVO-Compliant AI Proxy", "version": "2.0.0", "endpoints": [ "POST /v1/chat/completions", "GET /health" ] }
Unterstützte LLM-Provider
OpenAI
Provider-ID: openai
Unterstützte Modelle:
gpt-4o- Neuestes Flagship-Modellgpt-4o-mini- Schnelles, kostengünstiges Modellgpt-4-turbo- Vorheriges Flagship-Modellgpt-3.5-turbo- Legacy-Modell
API Key Format: sk-proj-... oder sk-...
Anthropic
Provider-ID: anthropic
Unterstützte Modelle:
claude-3-5-sonnet-20241022- Neuestes Sonnet-Modellclaude-3-opus-20240229- Leistungsstärkstes Modell
API Key Format: sk-ant-...
Together AI
Provider-ID: together
Unterstützte Modelle:
meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo- Open-Source Llama 3.1
API Key Format: Beliebiges Format
Groq
Provider-ID: groq
Unterstützte Modelle:
llama-3.3-70b-versatile- Schnelles Llama 3.3mixtral-8x7b-32768- Mixtral MoE-Modell
API Key Format: gsk_...
Prompt-Versionen
Lathra.ai bietet zwei Prompt-Versionen für die Tokenisierung:
Legacy (Standard)
Die Legacy-Version verwendet einen monolithischen Prompt mit ca. 6000 Tokens. Diese Version ist bewährt und stabil, verursacht jedoch höhere Tokenisierungs-Kosten.
Verwendung: Setzen Sie X-Prompt-Version: legacy oder lassen Sie den Header weg.
Split v1 (Empfohlen)
Die Split v1-Version verwendet 10 modulare Prompt-Dateien mit ca. 1300 Tokens (77,8% Reduktion). Diese Version ist optimiert für Token-Effizienz und reduziert Tokenisierungs-Kosten um ca. 80%.
Verwendung: Setzen Sie X-Prompt-Version: split_v1.
Vorteile:
- 77,8% Token-Reduktion gegenüber Legacy
- Modulare Architektur (10 Prompt-Dateien)
- Zentralisierte Verbote in M4_CORE
- Keine Duplikate mehr
Tokenisierung
Was wird tokenisiert?
Lathra.ai tokenisiert automatisch folgende Kategorien personenbezogener Daten:
| Kategorie | Beispiele | Token-Format |
|-----------|-----------|--------------|
| Personen | Namen, Anreden | [[ACTOR_PERSON_1]] |
| Organisationen | Firmen, Behörden | [[ORGANIZATION_TYPE_COMPANY_1]] |
| Kontaktdaten | E-Mails, Telefonnummern | [[CONTEXT_CLASS_CONTACT_EMAIL_1]] |
| Adressen | Straßen, PLZ, Städte | [[CONTEXT_CLASS_LOCATION_CITY_1]] |
| Zeitangaben | Geburtsdaten, Termine | [[CONTEXT_CLASS_TIME_DATE_BIRTH_1]] |
| Seltene Systeme | Proprietäre Software (<1000 Nutzer) | [[SYSTEM_CLASS_CUSTOM_1]] |
Was wird NICHT tokenisiert?
Um Kosten zu sparen und Kontext zu erhalten, werden folgende Informationen nicht tokenisiert:
- Sprachen (Deutsch, Englisch, Französisch, etc.)
- Häufige Software (SAP, MS Office, Excel, etc.)
- Hobbies und Interessen (Fußball, Lesen, etc.)
- Allgemeinwissen (Hauptstädte, historische Fakten, etc.)
Bypass-Logik
Wenn Lathra.ai erkennt, dass ein Text keine personenbezogenen Daten enthält, wird die Tokenisierung automatisch übersprungen (Bypass). Dies spart Tokenisierungs-Kosten und reduziert Latenz.
Beispiel:
// Request { "messages": [{"role": "user", "content": "Was ist die Hauptstadt von Frankreich?"}] } // Response { "lathra_metadata": { "tokenization_applied": false, "metadata": { "bypassed": true, "gdpr_relevant": false } } }
Skip Detokenization
Für bestimmte Anwendungsfälle (z.B. HR-SaaS, Medical-SaaS) ist es sinnvoll, die Detokenisierung zu überspringen, damit End-Nutzer nur Tokens sehen und nicht die Original-Daten.
Verwendung
Setzen Sie den Header X-Skip-Detokenization: true oder X-Skip-Detokenization: 1.
Beispiel
curl -X POST https://api.lathra.ai/v1/chat/completions \ -H "X-Lathra-API-Key: lathra_live_abc123" \ -H "X-Upstream-Provider: openai" \ -H "X-Upstream-Key: sk-proj-xyz" \ -H "X-Skip-Detokenization: true" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "Herr Schmidt arbeitet bei BMW."}] }'
Response:
{ "choices": [{ "message": { "content": "[[ACTOR_PERSON_1]] arbeitet bei [[ORGANIZATION_TYPE_COMPANY_1]]." } }], "lathra_metadata": { "detokenization_skipped": true } }
Use Cases
HR-SaaS: Bewerberdaten tokenisiert an HR-Software senden, ohne dass HR-Mitarbeiter echte Namen/Adressen sehen.
Medical-SaaS: Patientendaten tokenisiert an Analyse-Tools senden, ohne dass Dritte Zugriff auf PII haben.
Legal-SaaS: Mandantendaten tokenisiert an Dokumenten-Management-Systeme senden.
Streaming
Lathra.ai unterstützt Server-Sent Events (SSE) für Streaming-Responses.
Verwendung
Setzen Sie "stream": true im Request Body.
Beispiel
curl -X POST https://api.lathra.ai/v1/chat/completions \ -H "X-Lathra-API-Key: lathra_live_abc123" \ -H "X-Upstream-Provider: openai" \ -H "X-Upstream-Key: sk-proj-xyz" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "Erkläre Quantenphysik."}], "stream": true }'
Response (SSE):
data: {"id":"chatcmpl-123","choices":[{"delta":{"content":"Quantenphysik"}}]}
data: {"id":"chatcmpl-123","choices":[{"delta":{"content":" ist"}}]}
data: [DONE]
Fehlerbehandlung
Lathra.ai gibt strukturierte Fehler im JSON-Format zurück.
Fehler-Codes
| HTTP Status | Beschreibung |
|-------------|--------------|
| 400 | Ungültige Request-Parameter |
| 401 | Authentifizierung fehlgeschlagen |
| 403 | Zugriff verweigert |
| 429 | Rate Limit überschritten |
| 500 | Interner Server-Fehler |
| 502 | Upstream-LLM-Fehler |
| 503 | Service temporär nicht verfügbar |
Fehler-Response
{ "error": { "message": "Tokenization failed: LLM timeout", "type": "tokenization_error", "code": "llm_timeout" } }
Code-Beispiele
Python
import requests response = requests.post( "https://api.lathra.ai/v1/chat/completions", headers={ "X-Lathra-API-Key": "lathra_live_abc123", "X-Upstream-Provider": "openai", "X-Upstream-Key": "sk-proj-xyz", "X-Prompt-Version": "split_v1", "Content-Type": "application/json" }, json={ "model": "gpt-4o-mini", "messages": [ {"role": "user", "content": "Herr Schmidt arbeitet bei BMW."} ] } ) data = response.json() print(data["choices"][0]["message"]["content"]) print(f"Tokenization applied: {data['lathra_metadata']['tokenization_applied']}")
Node.js
const response = await fetch("https://api.lathra.ai/v1/chat/completions", { method: "POST", headers: { "X-Lathra-API-Key": "lathra_live_abc123", "X-Upstream-Provider": "openai", "X-Upstream-Key": "sk-proj-xyz", "X-Prompt-Version": "split_v1", "Content-Type": "application/json" }, body: JSON.stringify({ model: "gpt-4o-mini", messages: [ { role: "user", content: "Herr Schmidt arbeitet bei BMW." } ] }) }); const data = await response.json(); console.log(data.choices[0].message.content); console.log(`Tokenization applied: ${data.lathra_metadata.tokenization_applied}`);
cURL
curl -X POST https://api.lathra.ai/v1/chat/completions \ -H "X-Lathra-API-Key: lathra_live_abc123" \ -H "X-Upstream-Provider: openai" \ -H "X-Upstream-Key: sk-proj-xyz" \ -H "X-Prompt-Version: split_v1" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [ {"role": "user", "content": "Herr Schmidt arbeitet bei BMW."} ] }'
Preise
Die Nutzung von Lathra.ai kostet 0,01€ pro 1.000 Tokens (Tokenisierung + Detokenisierung). Die Kosten für den Upstream-LLM (OpenAI, Anthropic, etc.) kommen hinzu und werden direkt von Ihrem LLM-Provider abgerechnet.
Beispielrechnung:
- Input: 100 Tokens → 0,001€ Lathra-Kosten
- Output: 50 Tokens → 0,0005€ Lathra-Kosten
- Gesamt Lathra: 0,0015€
- Plus OpenAI-Kosten (z.B. 0,002€ für gpt-4o-mini)
- Total: 0,0035€
Best Practices
1. Verwenden Sie split_v1
Die Split v1-Prompt-Version reduziert Tokenisierungs-Kosten um 80%. Setzen Sie X-Prompt-Version: split_v1 für alle Requests.
2. Nutzen Sie Bypass
Lathra.ai erkennt automatisch nicht-personenbezogene Texte und überspringt die Tokenisierung. Dies spart Kosten und Latenz.
3. Skip Detokenization für SaaS
Wenn Sie Daten vor End-Nutzern schützen müssen (z.B. HR-SaaS), verwenden Sie X-Skip-Detokenization: true.
4. Monitoring
Überwachen Sie lathra_metadata.tokenization_applied und lathra_metadata.processing_time_ms, um die Performance zu tracken.
5. Error Handling
Implementieren Sie Retry-Logik für 502 (Upstream-Fehler) und 503 (Service nicht verfügbar).
Support
Bei Fragen oder Problemen wenden Sie sich an:
- E-Mail: [email protected]
- Dokumentation: https://lathra.ai/docs
- Status: https://status.lathra.ai
© 2026 Lathra.ai - DSGVO-konformer AI Proxy