---
title: "Cancel App User Erasure"
method: POST
path: "/v2/applications/{application_id}/user_erasures/{id}/cancel"
tags: ["App User Erasures V2"]
---

# Cancel App User Erasure

`POST /v2/applications/{application_id}/user_erasures/{id}/cancel`

## Request

- Base URL: `https://api.superwall.com`
- URL: `https://api.superwall.com/v2/applications/{application_id}/user_erasures/{id}/cancel`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `accounts_superwall_token`
  - HTTP bearer

Cancels a scheduled erasure. Only possible before `eligible_at`. Requires app_users:erase scope.

## Path parameters

- `application_id` string, required
- `id` string, required

## Response `200`

Success

- object
  - `id` string, required
  - `object` 'app_user_erasure', required: Object type, always `app_user_erasure`
  - `application_id` string, required
  - `app_user_id` string, nullable, required: The app user id to erase. Null once the erasure has completed.
  - `status` 'scheduled' | 'cancelled' | 'running' | 'completed', required: `scheduled` until `eligible_at` (cancellable), then `running`, then `completed`
  - `source` 'api' | 'dashboard' | 'admin', required: Where the request was made
  - `external_reference` string, nullable, required: Your own reference for the request, e.g. a support ticket id
  - `created_at` string, required: ISO 8601 timestamp of the request
  - `eligible_at` string, required: ISO 8601 timestamp after which the erasure runs; cancellable until then
  - `cancelled_at` string, nullable, required
  - `started_at` string, nullable, required
  - `completed_at` string, nullable, required
  - `steps` object[], required: Per-store progress, empty until the erasure starts
    - `store` 'clickhouse' | 'subscriptions_db' | 'subscriptions_scylla' | 'mmp' | 'notifications', required: Store the step erases
    - `completed_at` string, nullable, required: ISO 8601 timestamp the store finished erasing, null until then

## Other responses

- `400`: The request did not match the expected schema | The request was invalid or malformed
- `401`: No API key was provided in the request | The API key does not have a valid format | The API key is invalid or has been revoked | An error occurred while validating the API key | The session cookie is invalid or expired
- `403`: The API key does not have permission to perform this action
- `404`: The requested resource was not found
- `409`: The resource already exists or conflicts with an existing resource
- `429`: Too many requests have been made in a short period
- `500`: An unexpected error occurred on the server

## Changes

- **2026-10-29** `778a11cd2c15`: 7 warning, 2 info
  - added the new `credentials_missing` enum value to the `anyOf[subschema #2]/code` response property for the response status `400`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `403`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `404`
  - added the new `credentials_missing` enum value to the `code/anyOf[subschema #1]/` response property for the response status `409`
  - …5 more
- **2026-10-29** `7e65bcbd2cce`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/superwall/apis/superwall-api-v2/changes/v2/applications/:application_id/user_erasures/:id/cancel/post.md)

---

[API](https://skmtc.dev/superwall/apis/superwall-api-v2.md) - [All operations](https://skmtc.dev/superwall/apis/superwall-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/superwall/apis/superwall-api-v2/revisions/523b4734dfab?raw)
