Skip to content

Authentication

Alle Cortina-Endpoints — außer den Health-Probes /health und /ready — erwarten einen Bearer Token im Authorization-Header.

Authorization: Bearer lissa_live_<64-hex-chars>
Content-Type: application/json
HeaderVerpflichtendBeschreibung
Authorization: Bearer …JaDer API-Key. Format lissa_live_<64-hex>.
Content-Type: application/jsonJa (POST)Request-Body wird als JSON erwartet.
X-Request-IdOptionalEigene Korrelations-ID; wird im Audit-Log mitgeführt.
lissa_live_<64-hex-chars>
  • Prefix lissa_live_ für Production-Keys.
  • 64 Hex-Zeichen Body, kryptographisch zufällig.
  • Server-seitig wird nur der mit API_KEY_SALT gesalzene SHA256-Hash gespeichert. Plaintext wird beim Erstellen genau einmal zurückgegeben — verloren = neu erstellen.

API-Keys werden über das Lissa-AI-Platform-Portal erstellt und verwaltet:

  1. Account auf platform.lissa-ai.de/register erstellen.
  2. Einloggen, im Dashboard API Keys öffnen und Create API Key wählen.
  3. Den Key einmalig kopieren und sicher speichern.
  4. Den Key in jedem API-Request als Bearer Token senden.
Authorization: Bearer lissa_live_<dein-key>

Key-Management wie Widerruf, Rotation und neue Keys läuft ebenfalls über platform.lissa-ai.de.

Jede Antwort enthält die aktuellen Rate-Limit-Stände:

HeaderBedeutung
X-RateLimit-LimitKonfiguriertes Limit pro 60-Sekunden-Fenster.
X-RateLimit-RemainingVerbleibende Requests im aktuellen Fenster.
X-RateLimit-ResetUnix-Timestamp, wann das Fenster resettet.
Retry-AfterSekunden bis Retry, nur bei 429.

Default-Limit: 60 Requests pro Minute pro Key. Höhere Limits sind per api_keys.rate_limit_per_minute-Override pro Key konfigurierbar.

Auth- und allgemeine Fehler kommen in einem stabilen { "error": { "code", "message" } }-Format zurück:

HTTPcodeWann
401unauthorizedHeader fehlt, Token-Format ungültig, oder Key nicht in der DB.
401key_inactiveKey existiert, aber ist deaktiviert.
403forbiddenKey existiert + ist aktiv, aber darf den Endpoint nicht aufrufen.
429rate_limit_exceededRate-Limit überschritten. Retry-After enthält Sekunden bis Reset.

Beispiel-401-Response:

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}
  • Speichere den Plaintext-Key nicht in Git. Klingt offensichtlich, ist aber der häufigste Leak-Pfad.
  • Rotiere Keys über die Platform. Erstelle einen neuen Key, aktualisiere deine Secrets und widerrufe anschließend den alten Key.
  • Per-Tenant-Scoping ist serverseitig. Du kannst keine Daten eines anderen Tenants sehen, selbst wenn du dessen session_id rätst.