# Asynchroner Export von Nachrichtenstatistiken

`exportMessagesStatistics` exportiert den Nachrichtenverlauf und Statistiken in eine CSV-Datei auf dem Server. Verwenden Sie es für große oder vollständige Kontoabrufe, die [`messages:list`](/de/developer/api-reference/statistics-api/message-statistics-api/#messageslist) nicht bewältigen kann.

## Wann Sie den Export anstelle von messages:list verwenden sollten

Verwenden Sie `messages:list` für Live-, paginierte Abfragen eines begrenzten Zeitraums. Verwenden Sie `exportMessagesStatistics`, wenn das Ergebnis das tiefe Paginierungslimit von `messages:list` (`page × per_page > 100000`) überschreiten würde oder wenn das Ziel eine einzelne herunterladbare Datei anstelle von paginiertem JSON ist. Der Export hat keine Begrenzung für `date_range` oder die Zeilenanzahl, da er das Ergebnis in eine Datei auf der Festplatte streamt, anstatt es in einer einzigen Antwort zu halten.

## Wie der Exportvorgang funktioniert

1. Rufen Sie [`export`](#export) mit den gleichen Filtern wie `messages:list` auf. Die Antwort gibt sofort eine Aufgabenkennung `uid` zurück, bevor die Datei generiert wird.
2. Fragen Sie [`status`](#status) mit dieser `uid` ab, bis `STATUS_SUCCESS` (oder `STATUS_FAILED`) gemeldet wird.
3. Rufen Sie [`result`](#result) mit derselben `uid` auf, um den generierten Dateinamen zu erhalten.
4. [Laden Sie die Datei](#download) nach Namen herunter.

Verwenden Sie [`lastTasks`](#lasttasks), um kürzliche Exportaufgaben für eine Anwendung nachzuschlagen, und [`delete`](#delete), um eine Aufgabe abzubrechen oder ihre Datei vorzeitig zu entfernen.

## Methoden

Der Export-Lebenszyklus hat fünf Methoden sowie einen einfachen Download-Endpunkt:

| Methode | Beschreibung |
|--------|--------------|
| [`exportMessagesStatistics/export`](#export) | Stellt einen Export in die Warteschlange und gibt eine Aufgaben-`uid` zurück. |
| [`exportMessagesStatistics/status`](#status) | Überprüft den Aufgabenfortschritt. |
| [`exportMessagesStatistics/result`](#result) | Gibt den generierten Dateinamen zurück, sobald die Aufgabe abgeschlossen ist. |
| [`exportMessagesStatistics/lastTasks`](#lasttasks) | Listet die letzten Exportaufgaben für eine Anwendung auf. |
| [`exportMessagesStatistics/delete`](#delete) | Bricht eine Aufgabe ab oder entfernt ihre Datei, bevor das Aufbewahrungsfenster abläuft. |
| [Download](#download) | Lädt die generierte CSV-Datei nach Namen herunter. |

### export

Stellt einen Export des Nachrichtenverlaufs in die Warteschlange und gibt sofort eine Aufgabenkennung zurück.

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/export`

##### Header

Die Anfrage benötigt einen Server-API-Token:

| Name | Erforderlich | Beschreibung |
|------------------|----------|---------------------------------------------------------------------------------------------------------|
| `Authorization` | Ja | [Server-API-Token](/de/developer/api-reference/api-access-token/#server-api-token). Muss im folgenden Format angegeben werden: `Authorization: Api <Server Key>`. |

##### Parameter des Anfragekörpers

Der Anfragekörper akzeptiert die folgenden Felder:

| Name | Erforderlich | Typ | Beschreibung |
|----------------------------------------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------|
| `type` | Ja | String | Muss <code>"TASK_TYPE_EXPORT<wbr/>_MESSAGES_V2"</code> sein. |
| <code>export_messages<wbr/>_v2</code> | Ja | Object | Exportparameter, unten beschrieben. |
| <code>export_messages<wbr/>_v2.application<wbr/>_code</code> | Siehe Hinweis | String | [Pushwoosh-Anwendungscode](/de/developer/api-reference/api-identifiers/#application-code). Erforderlich, wenn `app_group_code` nicht gesetzt ist. |
| <code>export_messages<wbr/>_v2.app<wbr/>_group_code</code> | Siehe Hinweis | String | Anwendungsgruppencode, exportiert über jede App in der Gruppe. Erforderlich, wenn `application_code` nicht gesetzt ist. |
| <code>export_messages<wbr/>_v2.search</code> | Nein | String | Freitextsuche über Nachrichtentitel und -inhalt. |
| <code>export_messages<wbr/>_v2.filters</code> | Nein | Object | Nachrichtenfilter, unten beschrieben. Weglassen, um den gesamten Kontoverlauf zu exportieren. |
| <code>export_messages<wbr/>_v2.properties</code> | Nein | Array | Spalten, die in die CSV-Datei aufgenommen werden sollen, unten beschrieben. |

`export_messages_v2.filters` akzeptiert:

| Name <div style="width:150px"></div> | Typ | Beschreibung |
|---------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------|
| `statuses` | Array | Nachrichtenstatus, die eingeschlossen werden sollen. <details><summary>Mögliche Werte</summary><ul><li><code>"MESSAGE_STATUS_CANCELED"</code></li><li><code>"MESSAGE_STATUS_CREATING"</code></li><li><code>"MESSAGE_STATUS_DONE"</code></li><li><code>"MESSAGE_STATUS_FAIL"</code></li><li><code>"MESSAGE_STATUS_PENDING"</code></li><li><code>"MESSAGE_STATUS_PROCESSING"</code></li><li><code>"MESSAGE_STATUS_WAITING"</code></li></ul></details> |
| `platforms` | Array | [Plattformcodes](/de/developer/api-reference/messages-api/api-prerequisites/#platforms) (numerisch, z.B. `1` für iOS), nicht die Plattformnamen-Strings, die von `messages:list` verwendet werden. |
| `sent_date` | Object | Berichtszeitraum, gefiltert nach Sendedatum: `{"date_from": "YYYY-MM-DD", "date_to": "YYYY-MM-DD"}`. |
| `created_date` | Object | Berichtszeitraum, gefiltert nach Nachrichtenerstellungsdatum, gleiches Format wie `sent_date`. |
| `created_via` | Array | Nachrichtenquelle. <details><summary>Mögliche Werte</summary><ul><li><code>"AB_TEST"</code></li><li><code>"API"</code></li><li><code>"AUTO_PUSH"</code></li><li><code>"CP"</code></li><li><code>"CSV"</code></li><li><code>"CUSTOMER_JOURNEY"</code></li><li><code>"EMAIL_API"</code></li><li><code>"EMAIL_CP"</code></li><li><code>"GEO_ZONE"</code></li><li><code>"PUSH_ON_EVENT"</code></li><li><code>"RSS"</code></li><li><code>"SYSTEM"</code></li></ul></details> |
| `segments` | Array | [Filtercodes](/de/developer/api-reference/api-identifiers/#segment--filter-code), an die die Nachricht gesendet wurde. |
| `campaigns` | Array | [Kampagnencodes](/de/developer/api-reference/api-identifiers/#campaign-code). Im Gegensatz zu `messages:list` wird hier eine Liste und nicht ein einzelner Code verwendet. |
| `message_id` | String (uint64) | Eine einzelne numerische Nachrichten-ID in Anführungszeichen. Im Gegensatz zu `messages:list` akzeptiert der Export eine ID, kein Array. |
| `message_code` | String | Ein einzelner [Nachrichtencode](/de/developer/api-reference/api-identifiers/#message-code). |

`export_messages_v2.properties` wählt aus, welche Spalten die CSV-Datei enthält.

<details>
<summary>Mögliche Werte</summary>

- `"EXPORT_MESSAGE_PROPERTY_ID"`
- `"EXPORT_MESSAGE_PROPERTY_TIMESTAMP"`
- `"EXPORT_MESSAGE_PROPERTY_CONTENT"`
- `"EXPORT_MESSAGE_PROPERTY_TITLE"`
- `"EXPORT_MESSAGE_PROPERTY_APPLICATIONS"`
- `"EXPORT_MESSAGE_PROPERTY_STATUS"`
- `"EXPORT_MESSAGE_PROPERTY_PLATFORMS"`
- `"EXPORT_MESSAGE_PROPERTY_SOURCE"`
- `"EXPORT_MESSAGE_PROPERTY_FILTER"`
- `"EXPORT_MESSAGE_PROPERTY_SUBSCRIPTION_SEGMENTS"`
- `"EXPORT_MESSAGE_PROPERTY_SENT"`
- `"EXPORT_MESSAGE_PROPERTY_OPENED"`
- `"EXPORT_MESSAGE_PROPERTY_ERRORS"`
- `"EXPORT_MESSAGE_PROPERTY_RECIPIENTS"`
- `"EXPORT_MESSAGE_PROPERTY_DELIVERED"`
- `"EXPORT_MESSAGE_PROPERTY_TOTAL_DELIVERED"`
- `"EXPORT_MESSAGE_PROPERTY_TOTAL_OPENED"`
- `"EXPORT_MESSAGE_PROPERTY_TOTAL_CLICKS"`
- `"EXPORT_MESSAGE_PROPERTY_CLICKS"`
- `"EXPORT_MESSAGE_PROPERTY_UNSUBSCRIBED"`

</details>

<Aside type="caution" title="properties ist nicht nur ein Filter">
Eine Eigenschaft, die nicht in `properties` aufgeführt ist, erscheint überhaupt nicht in der Datei, einschließlich der Basisspalten (ID, Sendedatum, Inhalt, Status). Wenn `properties` leer gelassen wird, wird eine CSV-Datei ohne Spalten erzeugt. Listen Sie jede Spalte auf, die der Export enthalten soll, nicht nur die Metriken, die Sie zu einem Standardsatz hinzufügen möchten.
</Aside>

##### Beispielanfrage

```json
{
  "type": "TASK_TYPE_EXPORT_MESSAGES_V2",
  "export_messages_v2": {
    "application_code": "XXXXX-XXXXX",
    "filters": {
      "created_date": {
        "date_from": "2026-01-01",
        "date_to": "2026-06-30"
      },
      "statuses": ["MESSAGE_STATUS_DONE"],
      "platforms": [1, 3]
    },
    "properties": [
      "EXPORT_MESSAGE_PROPERTY_ID",
      "EXPORT_MESSAGE_PROPERTY_TIMESTAMP",
      "EXPORT_MESSAGE_PROPERTY_STATUS",
      "EXPORT_MESSAGE_PROPERTY_PLATFORMS",
      "EXPORT_MESSAGE_PROPERTY_SENT",
      "EXPORT_MESSAGE_PROPERTY_OPENED"
    ]
  }
}
```

<Tabs>
<TabItem label="200: OK">
```json
{
  "uid": "177458"
}
```
</TabItem>
<TabItem label="401: Falscher API-Zugriffstoken">
```json
{
  "error": "account not found"
}
```
</TabItem>
</Tabs>

### status

Gibt den Fortschritt einer Exportaufgabe zurück.

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/status`

##### Parameter des Anfragekörpers

Übergeben Sie die von `export` zurückgegebene Aufgabenkennung:

| Name | Erforderlich | Typ | Beschreibung |
|-------|----------|---------|--------------------------------------------------|
| `uid` | Ja | String (int64) | Aufgabenkennung aus der `export`-Antwort, z.B. `"177458"`. |

##### Beispielanfrage

```json
{
  "uid": "177458"
}
```

<Tabs>
<TabItem label="200: OK">
```json
{
  "status": "STATUS_SUCCESS",
  "progress": 1
}
```
</TabItem>
</Tabs>

`status` ist einer der folgenden Werte: `"STATUS_PENDING"`, `"STATUS_SUCCESS"` oder `"STATUS_FAILED"`. `progress` ist ein Bruchteil zwischen `0` und `1`; fragen Sie `status` so lange ab, bis es `"STATUS_SUCCESS"` erreicht, bevor Sie `result` aufrufen.

### result

Gibt den generierten Dateinamen zurück, sobald die Aufgabe abgeschlossen ist.

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/result`

##### Parameter des Anfragekörpers

Übergeben Sie dieselbe Aufgabenkennung, die von `export` zurückgegeben wurde:

| Name | Erforderlich | Typ | Beschreibung |
|-------|----------|---------|--------------------------------------------------|
| `uid` | Ja | String (int64) | Aufgabenkennung aus der `export`-Antwort, z.B. `"177458"`. |

##### Beispielanfrage

```json
{
  "uid": "177458"
}
```

<Tabs>
<TabItem label="200: OK">
```json
{
  "export_messages_v2_result": {
    "file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
  }
}
```
</TabItem>
</Tabs>

Wenn `result` aufgerufen wird, bevor `status` den Wert `"STATUS_SUCCESS"` meldet, wird ein leeres Ergebnis zurückgegeben. Übergeben Sie den `file`-Wert unverändert an den [Download-Endpunkt](#download).

### lastTasks

Listet die letzten Exportaufgaben für eine Anwendung auf, die neuesten zuerst.

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/lastTasks`

##### Parameter des Anfragekörpers

Jeder Parameter ist ein optionaler Filter; lassen Sie alle weg, um jede Aufgabe aufzulisten, auf die der Token Zugriff hat:

| Name | Erforderlich | Typ | Beschreibung |
|------------------|----------|---------|---------------------------------------------------------------------------------------|
| `application` | Nein | String | [Pushwoosh-Anwendungscode](/de/developer/api-reference/api-identifiers/#application-code). Weglassen, um Aufgaben für alle Anwendungen aufzulisten, auf die der Token Zugriff hat. |
| `types` | Nein | Array | Auf bestimmte Aufgabentypen beschränken. Verwenden Sie <code>["TASK_TYPE_EXPORT<wbr/>_MESSAGES_V2"]</code>, um nur Nachrichtenexporte anzuzeigen. |
| `campaign` | Nein | String | Nach [Kampagnencode](/de/developer/api-reference/api-identifiers/#campaign-code) filtern. |
| `message_id` | Nein | String (uint64) | Nach einer einzelnen numerischen Nachrichten-ID filtern, in Anführungszeichen. |
| `message_code` | Nein | String | Nach einem einzelnen [Nachrichtencode](/de/developer/api-reference/api-identifiers/#message-code) filtern. |
| `limit` | Nein | Integer | Maximale Anzahl der zurückzugebenden Aufgaben. |
| `timestamp_from` | Nein | String | Nur Aufgaben zurückgeben, die nach diesem Zeitstempel (RFC 3339) erstellt wurden. |

<Aside type="note">
Aufgaben werden 30 Tage lang aufbewahrt, unabhängig davon, ob ihre Datei bereits nach dem 7-tägigen Dateiaufbewahrungsfenster gelöscht wurde. `lastTasks` kann immer noch eine Aufgabe anzeigen, deren `result` nicht mehr zu einer herunterladbaren Datei aufgelöst wird.
</Aside>

##### Beispielanfrage

```json
{
  "application": "XXXXX-XXXXX",
  "types": ["TASK_TYPE_EXPORT_MESSAGES_V2"],
  "limit": 10
}
```

<Tabs>
<TabItem label="200: OK">
```json
{
  "tasks": [
    {
      "id": "177458",
      "timestamp": "2026-08-13T12:00:00Z",
      "status": "STATUS_SUCCESS",
      "requested_by_user": "user@example.com",
      "export_messages_v2": {
        "application_code": "XXXXX-XXXXX"
      },
      "export_messages_v2_result": {
        "file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
      }
    }
  ]
}
```
</TabItem>
</Tabs>

### delete

Löscht eine Aufgabe und ihre Datei, bevor das 7-tägige Aufbewahrungsfenster abläuft.

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/delete`

##### Parameter des Anfragekörpers

Übergeben Sie die von `export` zurückgegebene Aufgabenkennung:

| Name | Erforderlich | Typ | Beschreibung |
|-------|----------|---------|--------------------------------------------------|
| `uid` | Ja | String (int64) | Aufgabenkennung aus der `export`-Antwort, z.B. `"177458"`. |

##### Beispielanfrage

```json
{
  "uid": "177458"
}
```

<Tabs>
<TabItem label="200: OK">
```json
{}
```
</TabItem>
</Tabs>

### Download

Lädt die von `result` generierte CSV-Datei nach Namen herunter.

`GET` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/<file>`

##### Header

Authentifizieren Sie sich auf die gleiche Weise wie bei den anderen Methoden oder verlassen Sie sich auf eine aktive Control Panel-Sitzung:

| Name | Erforderlich | Beschreibung |
|------------------|----------|-----------------------------------------------------------------------------------------------------|
| `Authorization`| Ja | [Server-API-Token](/de/developer/api-reference/api-access-token/#server-api-token), im gleichen Format wie die anderen `exportMessagesStatistics`-Methoden: `Authorization: Api <Server Key>` (das `Api`-Schema ist nicht case-sensitiv). Eine Anfrage ohne `Authorization`-Header und ohne angemeldete Control Panel-Sitzung erhält `401 Unauthorized`. |

Ersetzen Sie `<file>` durch den exakten `file`-Wert aus der `result`-Antwort, zum Beispiel:

```
https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv
```

Die Datei ist eine CSV-Datei, die die in `properties` ausgewählten Spalten enthält. Sie bleibt 7 Tage nach Abschluss des Exports verfügbar, dann entfernt der Bereinigungsjob sie und die URL wird nicht mehr aufgelöst.