---
title: "Audit-Log"
description: "Das Audit-Log des Incident Managements lesen: wer welches Team, welchen Schedule, welche Source oder Einstellung angelegt, geändert oder gelöscht hat, mit dem aufgezeichneten Diff. Cursor-paginiert."
---

`GET /api/im/audit-log`

Liefert das Audit-Log des Incident Managements deiner Organisation, neueste Einträge zuerst: jedes Anlegen, Ändern und Löschen von Teams, Mitgliedern, Schedules, Overrides, Eskalationsstufen, Alert-Sources, Routing-Regeln, Kanälen und IM-Einstellungen, mit der handelnden Person und der aufgezeichneten Änderung.

## Authentifizierung

Erfordert IM-Zugriff **und** die Organisationsrolle `admin`. Editoren und Responder werden abgewiesen. Ein organisationsweiter API-Token funktioniert, wenn ein Organisations-Admin ihn erstellt hat (ein Token trägt die Rolle der Person, die ihn erstellt hat). Incident Management muss für die Organisation aktiviert sein.

## Query-Parameter

| Parameter | Typ | Beschreibung |
|-----------|------|--------------|
| `entityType` | string | Nur dieser Entitätstyp, z. B. `im_team`, `im_team_member`, `im_schedule`, `im_schedule_override`, `im_escalation_tier`, `im_alert_source`, `im_routing_rule`, `im_channel`, `im_incident`, `im_org_settings`. |
| `actor` | string | Nur Einträge dieser User-ID. |
| `from` | ISO 8601 | Nur Einträge ab diesem Zeitpunkt. Ein ungültiges Datum wird ignoriert. |
| `to` | ISO 8601 | Nur Einträge bis zu diesem Zeitpunkt. Ein ungültiges Datum wird ignoriert. |
| `limit` | number | Seitengröße. Standard 50, maximal 200. |
| `before` | number | Cursor: `nextCursor` der vorigen Seite übergeben, um weiterzublättern. |

## Beispiel (cURL)

```bash
curl "$BASE_URL/api/im/audit-log?entityType=im_alert_source&limit=2" \
  -H "Authorization: Bearer $TOKEN"
```

## Antwort (Response)

```json
{
  "entries": [
    {
      "id": 5812,
      "entityType": "im_alert_source",
      "entityId": "7",
      "action": "update",
      "diff": { "ingestToken": { "from": "rotated", "to": "rotated" }, "secondaryExpiresAt": { "from": null, "to": "2026-10-16T09:30:00.000Z" } },
      "at": "2026-10-09T09:30:00.000Z",
      "actorUserId": "u_abc123",
      "actorName": "Jana Weber"
    },
    {
      "id": 5790,
      "entityType": "im_alert_source",
      "entityId": "7",
      "action": "create",
      "diff": { "name": "Zabbix production", "type": "zabbix", "teamId": 3, "autoResolve": true },
      "at": "2026-10-01T08:00:00.000Z",
      "actorUserId": "u_abc123",
      "actorName": "Jana Weber"
    }
  ],
  "hasMore": true,
  "nextCursor": 5790
}
```

| Feld | Beschreibung |
|-------|-------------|
| `action` | `create`, `update` oder `delete`. |
| `diff` | Frei geformtes Objekt, das mit der Änderung gespeichert wurde, bei Änderungen meist `{ feld: { from, to } }`. Secrets werden nie aufgezeichnet, Rotationen erscheinen als `"rotated"` oder `"set"`. |
| `actorUserId`, `actorName` | Wer die Änderung vorgenommen hat. Beide `null`, wenn das Benutzerkonto inzwischen gelöscht wurde. |
| `hasMore`, `nextCursor` | Ist `hasMore` `true`, holst du die nächste Seite mit `before=<nextCursor>`. Auf der letzten Seite ist `nextCursor` `null`. |

## Häufige Fehler

- `401 Unauthorized` (`unauthorized`) wenn du nicht authentifiziert bist
- `403 Forbidden` (`customerScopedTokenForbidden`) bei einem kunden-gescopten Token
- `403 Forbidden` (`imAccessDenied`) wenn deine Session keine IM-berechtigte Rolle hat
- `403 Forbidden` (`imNotEnabled`) wenn Incident Management für die Organisation nicht aktiviert ist
- `403 Forbidden` (`imAuditLogAccessDenied`) wenn deine Rolle nicht `admin` ist
