> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langdock.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Einführung in die Audit Logs

> Rufe eine Übersicht aller Aktionen in deinem Workspace ab — wer hat was, wann und von wo gemacht. Verfolge Änderungen an Workspace-Einstellungen, Model Keys, Integrationsverbindungen, Nutzerrollen und mehr.

Die Audit Logs API kann verwendet werden, um:

* Workspace-Aktivitätsdaten in dein SIEM oder andere Monitoring-Tools einzuspeisen
* Änderungen in deiner Organisation nachzuverfolgen, von Workspace-Einstellungen und Modellkonfiguration bis hin zu Workflows, Skill- und Aktionszugriff, Rollenänderungen, fehlgeschlagenen Anmeldeversuchen und mehr
* Eigene Dashboards und Berichte für Workspace-Aktivitäten zu erstellen

## Voraussetzungen

Um die Audit Logs API zu nutzen, benötigst du:

* **Workspace Admin-Berechtigung**: Nur Workspace-Administratoren können API-Schlüssel mit Audit-Log-Berechtigungen erstellen.
* **API-Schlüssel mit `AUDIT_LOG_API` Scope**: Dein API-Schlüssel muss den dedizierten Audit-Log Scope aktiviert haben. Erstelle ihn unter [Einstellungen > API](https://app.langdock.com/settings/workspace/products/api) in deinen Workspace-Einstellungen.

<Warning>
  **Wichtiger Sicherheitshinweis**: Nutzer mit Zugriff auf einen API-Schlüssel mit dem **AUDIT\_LOG\_API** Scope können alle Audit-Log-Daten des Workspaces einsehen, einschließlich IP-Adressen, Nutzeraktionen und Konfigurationsänderungen. Gewähre diese Berechtigung nur vertrauenswürdigen Nutzern.
</Warning>

## Aufbewahrung

Audit-Log-Einträge werden **90 Tage** lang aufbewahrt. Stelle sicher, dass du alle benötigten Daten exportierst oder weiterleitest, bevor sie ablaufen.

## Verfügbarer Endpunkt

```
GET /audit-logs/{workspace_id}
```

## Authentifizierung

Alle API-Anfragen erfordern Bearer-Token-Authentifizierung:

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Der Audit-Log-Eintrag

Jeder Audit-Log-Eintrag beschreibt einen **Akteur**, der eine **Aktion** auf einer **Entität** ausführt. Hier ist, was jeder Eintrag enthält:

| Feld                                   | Beschreibung                                                                                                                                                     |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `actor_id`, `actor_type`, `actor_name` | Wer die Aktion ausgeführt hat. Akteur-Typen: `USER`, `API_KEY`, `SYSTEM`, `SCIM`                                                                                 |
| `action`                               | Was passiert ist, in Punkt-Notation (z.B. `user.updated`, `workspace.created`, `model_config.updated`, `workflow.created`, `api_keys.deleted`)                   |
| `entity_type`, `entity_id`             | Welche Ressource betroffen war (z.B. `User`, `Workspace`, `Group`, `IntegrationConnection`, `ModelConfig`, `Workflow`, `SkillAccess`, `ActionAccess`)            |
| `created_at`                           | Wann das Ereignis stattfand                                                                                                                                      |
| `ip_address`, `user_agent`             | Woher die Anfrage kam                                                                                                                                            |
| `changes`                              | Ein `before`/`after`-Diff der geänderten Felder (bei Update-Ereignissen)                                                                                         |
| `snapshot`                             | Vollständiger Entity-Snapshot oder zusätzliche Event-Metadaten (z.B. bei Delete-/Create-Ereignissen oder zusätzlicher Kontext wie fehlgeschlagene Login-Details) |

## Pagination

Die API verwendet **cursor-basierte Pagination**. Jede Antwort enthält ein `next_cursor`-Feld — übergib es als `cursor`-Query-Parameter in deiner nächsten Anfrage, um die nächste Seite zu erhalten. Wenn `next_cursor` `null` ist, hast du das Ende erreicht.

```bash theme={null}
# Erste Anfrage
curl "https://api.langdock.com/audit-logs/{workspace_id}?limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Nächste Seite
curl "https://api.langdock.com/audit-logs/{workspace_id}?limit=50&cursor={next_cursor}" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Filtern

Du kannst Ergebnisse mit Query-Parametern eingrenzen:

| Parameter     | Typ        | Beschreibung                                           |
| ------------- | ---------- | ------------------------------------------------------ |
| `from`        | `datetime` | Beginn des Zeitraums (ISO 8601)                        |
| `to`          | `datetime` | Ende des Zeitraums (ISO 8601)                          |
| `entity_type` | `string`   | Nach Entity-Typ filtern (z.B. `User`, `Workspace`)     |
| `actor_id`    | `uuid`     | Nach dem Akteur filtern, der die Aktion ausgeführt hat |
| `limit`       | `integer`  | Einträge pro Seite (Standard 50, Maximum 50)           |
| `cursor`      | `uuid`     | Cursor aus der vorherigen Antwort für Pagination       |

## Fehlerbehandlung

| Statuscode | Beschreibung                                                                             |
| ---------- | ---------------------------------------------------------------------------------------- |
| `400`      | Ungültige Anfrageparameter (z.B. fehlerhaftes Datum, ungültige UUID)                     |
| `401`      | Fehlender oder ungültiger API-Schlüssel                                                  |
| `403`      | API-Schlüssel hat keinen `AUDIT_LOG_API` Scope, oder `workspace_id` stimmt nicht überein |
| `429`      | Rate Limit überschritten — warte kurz und versuche es erneut                             |
| `500`      | Interner Serverfehler                                                                    |

<Info>
  Langdock blockiert bewusst Browser-basierte Anfragen, um deinen API-Schlüssel zu schützen und die Sicherheit deiner Anwendungen zu gewährleisten. Weitere Informationen findest du in unserem Guide zu [Best Practices für API-Schlüssel](/de/admin/ai-adoption-and-rollout/best-practices/api-key-best-practices).
</Info>
