---
title: "Datenexport anfordern"
description: "Stellt einen vollständigen Export der Inhalte deiner Organisation als JSON und CSV in die Warteschlange — als ZIP zum Download, angekündigt per E-Mail."
---

`POST /api/organization/data-export`

Startet einen vollständigen Export von allem, was deine Organisation in Uptimeify
hat: Kunden, Monitore aller Typen, Vorfälle und Vorfalls-Updates, Wartungsfenster,
Benachrichtigungskanäle, Tags, Statusseiten, Reports samt Lauf-Historie,
Abrechnungsdaten, Teammitglieder, API-Token-Metadaten, Incident-Management-Konfiguration
und -Historie sowie — sofern du nicht abwählst — die rohe Check-Historie hinter
deinen Monitoren.

Die Anfrage antwortet sofort mit `202 Accepted`. Das Bundle entsteht im
Hintergrund; sobald es fertig ist, geht eine E-Mail mit Download-Link an die
Empfänger, und der Export erscheint in `GET /api/organization/data-export` als
`ready`.

## Request-Body

| Feld | Typ | Default | Beschreibung |
| --- | --- | --- | --- |
| `includeCheckHistory` | boolean | `true` | Rohe Check-Zeilen einschließen. Das ist der Löwenanteil des Bundles; `false` liefert einen reinen Konfigurations-Export. |
| `recipientEmails` | string[] | Administratoren der Organisation | Wer die „Export ist fertig"-E-Mail bekommt. Jede Adresse muss zu einem Mitglied dieser Organisation gehören. Maximal 20. |

## Beispiel (cURL)

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

curl -X POST "$BASE_URL/api/organization/data-export" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "includeCheckHistory": true
  }'
```

## Antwort (Response)

```json
{
  "id": "0f0f2f6a-2b3b-4a2f-9a7c-3e5f8c1d2b44",
  "status": "queued",
  "format": "json_csv",
  "includeCheckHistory": true,
  "recipientEmails": ["admin@deineagentur.com"],
  "sizeBytes": null,
  "retentionCutoff": null,
  "expiresAt": null,
  "downloadCount": 0,
  "lastDownloadedAt": null,
  "error": null,
  "manifest": null,
  "createdAt": "2026-07-30T09:12:44.101Z",
  "startedAt": null,
  "completedAt": null
}
```

## Was im Bundle steckt

Ein ZIP mit beiden Formaten plus Index:

- `manifest.json` — jeder Bereich mit Zeilenanzahl, Retention-Grenze pro Paket und Kappungs-Flags
- `README.txt` — was enthalten, was geschwärzt, was gekappt ist
- `json/<bereich>.json` — Datensätze in voller Tiefe
- `csv/<bereich>.csv` — dieselben Datensätze, flach und tabellenfertig

Zwei Regeln begrenzen den Inhalt:

- **Retention.** Zeitreihen (Check-Historie, Alarm-Zustellungen, SMS-Log) reichen so
  weit zurück, wie die Datenvorhaltung der Pakete deiner Kunden es hergibt. Ältere
  Zeilen werden nicht zurückgehalten — es gibt sie nicht mehr.
- **Zugangsdaten.** Passwörter, Webhook-Secrets, Integrations- und Ingest-Tokens,
  API-Token-Hashes und SMTP-Passwörter werden durch `[redacted]` ersetzt. Der
  restliche Datensatz wird vollständig exportiert.

Die rohe Check-Historie ist pro Monitor-Typ gekappt (standardmäßig die 100.000
neuesten Zeilen). Ein gekappter Bereich ist in `manifest.json` markiert; den Rest
holst du pro Monitor über `GET /api/websites/{id}/check-history?format=csv` und die
entsprechenden Endpunkte der anderen Monitor-Typen.

## Limits

- Ein Export gleichzeitig pro Organisation (`409 exportAlreadyRunning`).
- Eine Anfrage pro Organisation alle 6 Stunden (`429 exportCooldown`).
- Ein fertiger Export bleibt 7 Tage herunterladbar; danach wird die Datei gelöscht und
  der Datensatz auf `expired` gesetzt.

## Häufige Fehler

- `400 User must belong to an organization` wenn aus Session oder Token keine Organisation abgeleitet werden kann
- `400 Recipients must be members of this organization` (`data.code: invalidExportRecipient`) wenn `recipientEmails` eine externe Adresse enthält
- `401 Unauthorized` wenn du nicht authentifiziert bist
- `403 Forbidden` wenn deine Rolle die Organisation nicht verwalten darf
- `409 An export is already being generated` (`data.code: exportAlreadyRunning`)
- `429 An export was already requested within the last 6 hours` (`data.code: exportCooldown`)
