---
title: "Audit-Log exportieren"
description: "Lädt das Audit-Log deiner Organisation für einen Zeitraum als CSV-Datei, Anmeldungen eingeschlossen."
---

`GET /api/organization/audit/export`

Liefert das Audit-Log deiner Organisation für einen Zeitraum als CSV-Datei. Das Log hält
administrative Aktionen fest (jede Änderung über Dashboard oder API, mit altem und neuem Wert,
wo die Aktion ihn erfasst) und Anmelde-Ereignisse: erfolgreiche und fehlgeschlagene Anmeldungen
bestehender Konten, Abmeldungen, Passwort-Resets, Passwortänderungen und beendete Sitzungen.
Einträge bleiben 12 Monate gespeichert und lassen sich über die Anwendung weder ändern noch
löschen.

Aufrufen dürfen nur Administratoren der Organisation, mit Sitzung oder einem organisationsweiten
API-Token, dessen Aussteller Admin ist. Verbundene Anwendungen (MCP-Agenten) nicht. Jeder Export steht selbst im Audit-Log.

## Query-Parameter

| Parameter | Typ | Beschreibung |
| --- | --- | --- |
| `from` | ISO 8601 UTC | Beginn, inklusive. Standard: 30 Tage vor `to`. |
| `to` | ISO 8601 UTC | Ende, exklusive. Standard: jetzt. |

Ein Export umfasst höchstens 366 Tage und höchstens 100.000 Einträge. Einen längeren Zeitraum
teilst du auf mehrere Exporte auf. Der Export enthält nur Einträge, die noch gespeichert sind.

## Beispiel (cURL)

```bash
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"

curl -o audit-log.csv \
  "$BASE_URL/api/organization/audit/export?from=2026-01-01T00:00:00.000Z&to=2026-04-01T00:00:00.000Z" \
  -H "Authorization: Bearer $TOKEN"
```

## Antwort

`200` mit `Content-Type: text/csv; charset=utf-8`, `Content-Disposition` als Anhang und
`Cache-Control: no-store`. Die Zeilen sind nach Zeit sortiert, die älteste zuerst; Einträge mit
gleichem Zeitpunkt behalten eine feste Reihenfolge. Die Datei ist UTF-8 ohne BOM: In Excel
öffnest du sie über Daten > Aus Text/CSV, damit Umlaute richtig erscheinen.

```csv
"time","actor","agent","action","auth","summary","target","changes","ip","user_agent","request_id"
"2026-03-02T08:14:03.512Z","admin@example.com","no","auth.login.succeeded","password","Signed in","user:Xk2f9","","","",""
"2026-03-02T08:15:40.101Z","admin@example.com","no","websites.update","","Website updated","website:46","[{""field"":""checkInterval"",""from"":5,""to"":1}]","","","9b1e2c4a"
```

| Spalte | Inhalt |
| --- | --- |
| `time` | Zeitpunkt, ISO 8601 UTC |
| `actor` | E-Mail-Adresse des handelnden Nutzers oder seine ID; leer bei fehlgeschlagener Anmeldung und angefordertem Passwort-Reset |
| `agent` | `yes`, wenn eine verbundene Anwendung (MCP-Agent) im Namen des Nutzers gehandelt hat |
| `action` | Ereignistyp, zum Beispiel `websites.update` oder `auth.login.failed` |
| `auth` | Nur bei Anmelde-Ereignissen: Methode und bei fehlgeschlagener Anmeldung der Grund-Code als `methode:grund` (zum Beispiel `password:INVALID_EMAIL_OR_PASSWORD`), sonst nur die Methode (`password`, `password_mfa`, `sso`); bei allen anderen Ereignissen leer |
| `summary` | Kurzbeschreibung (englisch) |
| `target` | Betroffenes Objekt als `typ:id`, bei Anmelde-Ereignissen das Konto |
| `changes` | Geänderte Felder als JSON (`field`, `from`, `to`); Geheimnisse nur als geändert |
| `ip`, `user_agent` | Nur wenn eine verbundene Anwendung (MCP-Agent) gehandelt hat; sonst leer, auch bei Anmelde-Ereignissen |
| `request_id` | Korrelations-ID der Anfrage |

Jede Zelle steht in Anführungszeichen. Beginnt eine Zelle mit `=`, `+`, `-` oder `@`, auch nach
führendem Leerraum, steht ein `'` davor, damit Tabellenkalkulationen sie als Text zeigen und nicht
als Formel ausführen.

## Häufige Fehler

- `400 Invalid query` (`data.code: invalidRequestBody`), wenn `from` oder `to` kein ISO-8601-Zeitpunkt in UTC ist (Endung `Z`)
- `400` (`data.code: invalidDateRange`), wenn `from` nicht vor `to` liegt
- `400` (`data.code: auditExportRangeTooLarge`), wenn der Zeitraum länger als 366 Tage ist oder mehr als 100.000 Einträge enthält
- `400 User must belong to an organization`, wenn sich aus Sitzung oder Token keine Organisation ergibt
- `401 Unauthorized`, wenn du nicht angemeldet bist
- `403 Forbidden`, wenn deine Rolle nicht Admin ist
