Datenexport & Löschung
Ein DSGVO-Art.-20-Datenpaket über die API anfordern sowie die Kontolöschung planen oder abbrechen.
Zwei Betroffenenrechte haben Endpunkte in der öffentlichen API: die Datenübertragbarkeit (Art. 20), die ein JSON-Archiv Ihrer personenbezogenen Daten erzeugt, und die Löschung (Art. 17), die das Konto zur Löschung vormerkt.
Der Datenexport hat keine Oberfläche im Dashboard. Er ist ausschließlich über die API verfügbar.
Es gibt in der Parsurai-App weder Button noch Seite noch Download-Link für das Art.-20-Archiv. Die drei folgenden Endpunkte sind die gesamte Funktion — Archiv anfordern, Status abfragen und herunterladen laufen alle über die API mit Ihrem API-Schlüssel. Der Abschnitt Datenexport unter Einstellungen → Sicherheit ist der DATEV-CSV-Export und damit eine andere Funktion.
Bei der Löschung ist es anders: Sie ist zusätzlich zu den weiter unten beschriebenen Endpunkten auch im Dashboard erreichbar.
Keine dieser Routen ist an einen Tarif gebunden, und keine ist an die Zustimmung zu einer neuen Fassung der Rechtstexte geknüpft — ein Betroffenenrecht von der Annahme eines Dokuments abhängig zu machen, würde das Recht aushöhlen.
Archiv anfordern
/v1/me/data-exportcurl -X POST "https://api.parsurai.com/v1/me/data-export" \
-H "X-API-Key: $PARSURAI_API_KEY"
{
"export_id": "3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31",
"status": "pending"
}
Die Antwort ist ein 202 Accepted: Das Archiv wird im Hintergrund erzeugt, nicht innerhalb der Anfrage.
Dieser Endpunkt ist auf 5 Anfragen pro Stunde und Konto begrenzt, also deutlich unterhalb der allgemeinen Limits aus Ratenbegrenzungen & Fehler. Ein Archiv ist die dichteste Sammlung Ihrer personenbezogenen Daten im System und deshalb bewusst teuer angefordert. Fragen Sie den Status ab, statt ein zweites Archiv anzufordern.
Status abfragen
/v1/me/data-export/{export_id}curl "https://api.parsurai.com/v1/me/data-export/3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31" \
-H "X-API-Key: $PARSURAI_API_KEY"
{
"export_id": "3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31",
"status": "ready",
"download_url": "https://api.parsurai.com/v1/me/data-export/3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31/download?token=...",
"expires_at": "2026-06-14T10:12:44Z"
}
| Feld | Typ | Beschreibung |
|---|---|---|
export_id | UUID | Das beschriebene Archiv |
status | string | pending, ready, failed oder expired |
download_url | string | null | Der einmalige Link, nur solange das Archiv ready und ungenutzt ist |
expires_at | timestamp | null | Wann das Download-Token ungültig wird |
Eine fremde export_id liefert 404, niemals 403 — ein 403 würde bestätigen, dass unter dieser ID ein fremdes Archiv existiert.
download_url verschwindet, sobald das Archiv einmal heruntergeladen wurde. Ein erneuter Statusabruf nach erfolgreichem Download liefert download_url: null, während der Status weiterhin ready lautet.
Herunterladen
/v1/me/data-export/{export_id}/downloadDas signierte token im Query-String ist die einzige Berechtigung, die diese Route akzeptiert — Browser folgen einem Download-Link ohne X-API-Key-Header. Das Token ist an genau ein Archiv und ein Konto gebunden, läuft ab und wird bei der ersten Nutzung verbraucht.
curl -L "$DOWNLOAD_URL" -o data-export.json
Die Antwort streamt das Archiv als Anhang:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Disposition: attachment; filename="data-export-3c8a1d52-7e04-4b91-bd6f-5a2c7f0e9b31.json"
Cache-Control: no-store
Referrer-Policy: no-referrer
Jede Ablehnung — abgelaufenes Token, falsches Archiv, falscher Eigentümer, Archiv nicht bereit, bereits heruntergeladen — liefert denselben 403 mit derselben Meldung:
{ "detail": "download link is not valid" }
Die Fälle sind bewusst nicht unterscheidbar, damit niemand aus einem entwendeten Link ableiten kann, welcher Teil davon zu ändern wäre.
Der Download-Link ist einmalig nutzbar. Bricht die Übertragung ab, nachdem der Server das Archiv als heruntergeladen vermerkt hat, lässt sie sich mit demselben Link nicht wiederholen — fordern Sie dann einen neuen Export an.
Gültigkeit von Token und Archiv
Beides sind Deployment-Einstellungen, klären Sie sie also mit dem Betreiber Ihres Deployments. Die ausgelieferten Standardwerte sind:
| Einstellung | Standard |
|---|---|
| Gültigkeit des Download-Tokens | 60 Minuten ab dem Zeitpunkt, zu dem das Archiv bereitsteht |
| Aufbewahrung des Archivs | 7 Tage, danach werden die gespeicherten Daten gelöscht und der Datensatz entfernt |
Das Archiv existiert, um heruntergeladen zu werden, nicht um gespeichert zu bleiben — deshalb hat es die kürzeste Aufbewahrungsfrist aller Datenkategorien.
Inhalt des Archivs
Das Archiv ist ein einzelnes JSON-Dokument: ein manifest, das den Export beschreibt, gefolgt von einem Abschnitt je Datenkategorie.
| Abschnitt | Inhalt |
|---|---|
account | Konto-ID, E-Mail, Anzeigename, Tarif, Erstellungsdatum |
settings | Ihre Kontoeinstellungen |
webhooks | Die Konfiguration Ihrer Webhook-Endpunkte |
legal_acceptances | Welchen Fassungen der Rechtstexte Sie wann zugestimmt haben |
business_details | Die hinterlegten Unternehmensangaben |
billing | Stripe-Kunden-ID und Abonnementstatus |
extraction_history | Ihre Extraktionshistorie |
manifest enthält schema_version, generated_at, user_id und unter categories eine Anzahl je Abschnitt.
Zugangsdaten sind strukturell ausgeschlossen: Passwort-Hashes, API-Schlüssel-Hashes und Webhook-Signaturgeheimnisse stehen nie im Archiv. Sie sind keine übertragbaren personenbezogenen Daten, und ihr Export würde ein neues Offenlegungsrisiko schaffen.
Überschreitet das fertige Archiv die maximale Archivgröße des Deployments (standardmäßig 64 MB), scheitert die Erzeugung und der Export endet mit status: "failed".
Löschung
Die Löschung merkt das Konto nach einer Karenzzeit zur Löschung vor; innerhalb dieser Frist können Sie es sich noch anders überlegen.
/v1/mecurl -X DELETE "https://api.parsurai.com/v1/me" \
-H "X-API-Key: $PARSURAI_API_KEY"
{ "scheduled_for": "2026-07-14T09:12:44Z" }
Beim Vormerken der Löschung passiert Folgendes:
- Das Löschdatum wird auf 30 Tage in der Zukunft gesetzt,
- ein aktives Stripe-Abonnement wird zum Ende der laufenden Abrechnungsperiode gekündigt und
- eine Bestätigungs-E-Mail geht an die Kontoadresse.
Bis zum Löschdatum funktioniert das Konto weiter. API-Schlüssel bleiben gültig, Extraktionen laufen weiter; erst nach Ablauf des Löschdatums werden Anfragen abgelehnt. Nach der Karenzzeit entfernt ein geplanter Bereinigungslauf das Konto samt Daten.
/v1/me/cancel-deletioncurl -X POST "https://api.parsurai.com/v1/me/cancel-deletion" \
-H "X-API-Key: $PARSURAI_API_KEY"
Der Abbruch liefert die aktuellen Kontodaten zurück, in derselben Struktur wie GET /v1/me. Ist keine Löschung vorgemerkt, antwortet der Endpunkt mit 409.
Die Löschung ist auch im Dashboard verfügbar, unter Einstellungen → Gefahrenzone, mit demselben Ablauf aus Vormerken und Abbrechen. Anders als für das Art.-20-Archiv brauchen Sie dafür die API nicht.