Audit-Log exportieren
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)
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.
"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), wennfromodertokein ISO-8601-Zeitpunkt in UTC ist (EndungZ)400(data.code: invalidDateRange), wennfromnicht vortoliegt400(data.code: auditExportRangeTooLarge), wenn der Zeitraum länger als 366 Tage ist oder mehr als 100.000 Einträge enthält400 User must belong to an organization, wenn sich aus Sitzung oder Token keine Organisation ergibt401 Unauthorized, wenn du nicht angemeldet bist403 Forbidden, wenn deine Rolle nicht Admin ist