> ## 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.

# User data export and deletion

> Export Observe data for an external user ID, request deletion and track completion.

Use these operations from your backend when handling individual user-data requests, including your GDPR request workflow. They act on Observe data in the project selected by your API key.

These operations use the **external user ID** from [user references](/corbado-observe/tracking/user), in its current stored form. If your integration sends a hash, use that hash. If a data policy has hashed the user ID since capture, use the resulting stored hash. Reproduce it with the matching hashing configuration or resolve it through the console's supported hash calculation. It is distinct from an internal Observe user ID, a submitted email address or a session ID unless your integration deliberately uses that value as its external ID.

Policy-driven hashing preserves user relationships. Policy-driven deletion of user ID references removes the lookup path through that ID while retained journeys can remain. The user-data deletion operation below is a separate request to delete the available data for a user.

<Steps>
  <Step title="Export the available user data">
    Call [Export user data](/api-reference/observe/export-user) with permission `observe:dataExports:read`.

    ```bash theme={null}
    curl 'https://api.cloud.corbado.io/v1/observe/dataExports/example-user-id' \
      --header "Authorization: Bearer $CORBADO_OBSERVE_API_KEY"
    ```

    URL-encode the external ID as a path segment. The response is a JSON object of named datasets, each containing rows. Datasets with no rows are omitted. The export contains the data available for that user at request time. A `404` response means Observe holds no data for that external ID.

    For large batch queries, we also support exporting result sets in batches of up to 50,000 external IDs. Please contact your Corbado contact to set this up.
  </Step>

  <Step title="Request deletion when needed">
    Call [Create user data deletion jobs](/api-reference/observe/delete-user-data) with permission `observe:dataDeletionJobs:write`.

    ```bash theme={null}
    curl --request POST 'https://api.cloud.corbado.io/v1/observe/dataDeletionJobs' \
      --header "Authorization: Bearer $CORBADO_OBSERVE_API_KEY" \
      --header 'Content-Type: application/json' \
      --data '{"externalIDs":["example-user-id"]}'
    ```

    A request accepts **1 to 50,000 external IDs** and returns one job per ID. Store each returned job's `id` and `externalID`. Creating a job queues deletion; it does not mean deletion has completed.
  </Step>

  <Step title="Check completion">
    Call [Get a deletion job](/api-reference/observe/deletion-status) with permission `observe:dataDeletionJobs:read`.

    ```bash theme={null}
    curl 'https://api.cloud.corbado.io/v1/observe/dataDeletionJobs/<dataDeletionJobID>' \
      --header "Authorization: Bearer $CORBADO_OBSERVE_API_KEY"
    ```

    The job progresses through `pending`, `processing` and `completed`. Check every returned job rather than treating a successful creation response as completion.
  </Step>
</Steps>

Coordinate deletion with copies already downloaded to your warehouse or other systems. This API does not delete those copies or delete the account in your identity provider. It also does not disable future event collection in your application.

For bulk analytics data, use [table and time-series exports](/corbado-observe/data-access/exports).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.