> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corbado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Observe Exports

> Export Observe data in open formats: daily table exports as Parquet, time-series exports as CSV or Parquet and per-user exports and deletion.

Observe exports your data in open formats, so you can keep it in your own platform and combine it with your other sources. Table exports give you the complete data model day by day. Time-series exports give you the KPI series behind the console.

For enterprise delivery requirements, discuss [custom exports](/corbado-observe/data-access/data-platforms#3-custom-exports) with Corbado.

## 1. Table exports

Table exports write each of the [40 tables](/corbado-observe/data-access/data-model#2-exported-tables) as Apache Parquet files, compressed with Zstandard, once per day.

* **Schedule:** each export covers one day in the project's time zone and is written after 01:00 local time on the following day.
* **Completeness:** an export appears in the list only after all its files are written. Large tables are split into several files.
* **File metadata:** every file comes with its size, checksum and creation time. If an export is regenerated, file names stay the same and the creation time changes, so use the creation time to detect a reload.
* **Retention:** completed exports stay available for 365 days. One list request covers up to 92 days.
* **Activation:** table exports are enabled per project. [Contact us](mailto:support@corbado.com) to enable them.

### List and download with the CLI

```sh theme={null}
corbado exports list --last-days 7
corbado exports list --table ob_flow --date 2026-06-10
corbado exports download <filename> --dir ./observe-exports
```

`--dir` keeps the `<table>/<file>.parquet` layout, which makes loading per table straightforward.

### List and download with the API

```sh theme={null}
curl "https://api.cloud.corbado.io/v1/observe/tableExports?lastDays=7" \
  -H "Authorization: Bearer <observe-api-key>"
```

The response lists exports by table and date, each with its files. Request a download link per file with `GET /observe/tableExports/{filename}/downloadLink`, URL-encoding the slashes in the file name. Links are short-lived, so request each link directly before downloading the file.

Both paths need a key with the table exports read permission.

## 2. Time-series exports

Time-series exports write the pre-calculated KPI series of the console as files. Start them in the console under **Observe → Settings → Exports** or with `POST /observe/timeSeries/export`.

* **Formats:** CSV or Apache Parquet, one file per series, up to 20 series per request.
* **Dimensions:** exclude dimensions you do not need. Their values are summed, so totals stay correct.
* **Ranges:** hourly data for up to 92 days, daily data for up to 731 days and monthly data without a limit.
* **Processing:** the API generates files while streaming newline-delimited JSON progress over the open HTTP request. Keep the connection open until a `completed` or `failed` event arrives. Disconnecting can cancel generation. A project can run two exports at the same time.
* **Availability:** files can be downloaded for 7 days through short-lived links.

List exports with `GET /observe/timeSeries/exports` and check one with `GET /observe/timeSeries/exports/{exportID}`. After completion, request a link for each file with `GET /observe/timeSeries/exports/{exportID}/files/{fileName}/downloadLink`. After an interrupted request, check the export status before starting another export.

## 3. Per-user export and deletion

To answer a data subject request, export or delete the Observe data of individual users by the user ID your integration sends.

| Task                 | Endpoint                                | Notes                                                                            |
| -------------------- | --------------------------------------- | -------------------------------------------------------------------------------- |
| **Export one user**  | `GET /observe/dataExports/{externalID}` | JSON grouped by table. The CLI equivalent is `corbado exports user <externalID>` |
| **Delete users**     | `POST /observe/dataDeletionJobs`        | Up to 1,000 user IDs per job, processed in the background                        |
| **Check a deletion** | `GET /observe/dataDeletionJobs/{id}`    | Status pending, processing or completed                                          |

Deletion covers the data stored by Observe. Copies you have already loaded into your own platform need their own deletion step.

<CardGroup cols={2}>
  <Card title="Connect your data platform" icon="database" href="/corbado-observe/data-access/data-platforms">
    Load exports into your warehouse or lakehouse.
  </Card>

  <Card title="Data model" icon="sitemap" href="/corbado-observe/data-access/data-model">
    Tables, keys and time columns.
  </Card>
</CardGroup>
