LoreKeeper
API Referenz

Token-Abrechnung & Quota

In-Memory Token-Mapping, Mitgliedschafts-Tarife (Free, Creator, Pro, Enterprise), Hard-Limit Guards und Write-Behind Synchronisation.

Token-Abrechnung & Quota

Liberino AI implementiert ein hochperformantes, datenbank-schonendes Abrechnungs- und Quota-System für LLM-Tokens und Inferenzkosten in Euro.


1. Architektur: In-Memory Mapping & Write-Behind

Um zehntausende Anfragen ohne Latenz oder übermäßige Datenbanklast auf Directus zu verarbeiten, läuft die Quota-Prüfung vollständig im Arbeitsspeicher:

  1. Beim Start: Der Server lädt alle Benutzerkonten und Token-Zähler aus Directus (members) und dem lokalen Snapshot (data/user_quotas.json) in eine Map<apiKey, UserTokenAccount>.
  2. Bei jeder Inferenz / Tool-Ausführung: Der Hard-Limit Guard prüft in $O(1)$ Zeit ohne I/O, ob das Token-Kontingent oder das Euro-Budgetlimit überschritten ist.
  3. Nach Inferenz: Der In-Memory-Zähler wird sofort inkrementiert und als isDirty = true markiert.
  4. Write-Behind: Ein periodischer Hintergrund-Flusher synchronisiert alle geänderten Konten alle 30 Sekunden sowie beim Herunterfahren (SIGINT/SIGTERM) atomar zurück in Directus und den persistenten Ledger.
flowchart LR
    Client["Client / MCP / REST"] -->|API-Key| MemoryMap["In-Memory Map<br/>(O(1) Check & Inkrement)"]
    MemoryMap -->|Status OK| Inference["LLM / Image Engine"]
    MemoryMap -.->|Quota erschöpft| Guard["Hard-Limit Guard<br/>(403 / MCP Error)"]
    MemoryMap -->|Write-Behind alle 30s<br/>& Graceful Exit| DB[("Directus DB &<br/>user_quotas.json")]

2. Mitgliedschafts-Tarife (Tiers)

TierToken-KontingentBudget-Limit (EUR)Beschreibung
free50.0001,00 €Kostenlose Testmitgliedschaft
creator250.0005,00 €Standard Creator-Paket (250k Tokens, 5 € Budget)
pro1.200.00020,00 €Profi-Mitgliedschaft (1,2M Tokens, 20 € Budget)
enterprise6.000.000100,00 €Großes Verlagspaket (6M Tokens, 100 € Budget)

3. Endpunkte

GET /api/user/quota

Gibt das aktuelle Kontingent, verbrauchte Tokens, verbleibendes Euro-Guthaben und den Kontostatus zurück.

Header: Authorization: Bearer <API_KEY> oder x-api-key: <API_KEY>

Response (200 OK):

{
  "success": true,
  "data": {
    "userId": "creator-default",
    "name": "Standard Creator Account",
    "membershipTier": "creator",
    "isActive": true,
    "tokenQuota": 250000,
    "usedTokens": 4520,
    "remainingTokens": 245480,
    "budgetLimitEur": 5.0,
    "usedCostEur": 0.0821,
    "remainingBudgetEur": 4.9179,
    "lastSyncedAt": "2026-10-16T09:30:00.000Z",
    "lastActiveAt": "2026-10-16T09:35:12.000Z"
  }
}

POST /api/user/quota/check

Simuliert eine geplante Anfrage vorab (Dry-Run), ohne Token zu verbrauchen.

Request Body:

{
  "estimatedTokens": 5000,
  "estimatedCostEur": 0.02
}

Response (200 OK):

{
  "success": true,
  "allowed": true,
  "remainingTokens": 240480,
  "remainingBudgetEur": 4.8979,
  "usedCostEur": 0.0821,
  "budgetLimitEur": 5.0
}

POST /api/user/sync-tokens

Erzwingt ein sofortiges Zurückschreiben aller geänderten In-Memory-Konten nach Directus und in die persistente Datei.

Response (200 OK):

{
  "success": true,
  "message": "In-memory token accounts successfully synchronized to storage.",
  "syncedCount": 2,
  "timestamp": "2026-10-16T09:40:00.000Z"
}

GET /api/user/tiers

Gibt die Konfiguration aller verfügbaren Mitgliedschaftsstufen zurück.

On this page