---
title: "Cancel account deletion"
method: POST
path: "/api/v1/me/account/deletion/cancel"
tags: ["Settings"]
---

# Cancel account deletion

`POST /api/v1/me/account/deletion/cancel`

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/me/account/deletion/cancel`
- Auth: API key in cookie `auth_token`

Cancel a scheduled deletion from the lock page, with a code: a consumed single-use `account_delete_cancel` step-up grant whose one target is the account's own id (`403 2fa_required`). Allowed while `scheduled` or `on_hold`; refused once `in_progress` (`409 deletion_in_progress`) and on an account that is not scheduled (`409 not_scheduled`) — both BEFORE the grant is spent. Restores the deletion field, lifts ONLY the suspensions the grace period applied (never a row under a domain whose proofs were revoked meanwhile), un-hides the pages. Not restored, and said so in `not_restored`: other sessions, a subscription cancelled with the final invoice, expired items. Reachable while locked (on the lock allowlist).

## Response `200`

Cancelled — the lock is lifted

- AccountDeletionCancelledResponse: The deletion is cancelled and the lock lifted
  - `success` boolean, required
  - `ok` true, required
  - `was_state` 'none' | 'scheduled' | 'on_hold' | 'in_progress', required: `none` — not scheduled. `scheduled` — the 7-day grace period is running: the account is locked, its own proofs and delegations are suspended, its API keys refused, its public pages dark; cancel restores all of it. `on_hold` — the day-7 job stopped before anything irreversible: the final invoice is unpaid (`hold_reason: unpaid_invoice`, pay it from the lock page) or the account is admin-suspended; cancel is still possible. `in_progress` — past the point of no return; cancel is refused.
  - `proofs_unsuspended` integer, required: Suspensions the grace period applied that were lifted
  - `proofs_kept_suspended` integer, required: Rows left suspended because their domain's proofs were revoked meanwhile — re-verify the domain
  - `not_restored` string[], required: What cancelling does NOT bring back, in the owner's words: other sessions, a subscription cancelled with the final invoice, proofs under a revoked domain
  - `notice` object[], required
    - `kind` 'email' | 'telegram' | 'whatsapp', required
    - `address` string, required: The contact, masked
    - `outcome` string, required: `sent`, `skipped:<why>` or `failed:<why>`

## Other responses

- `401`: Unauthorized
- `403`: `2fa_required` — a single-use `account_delete_cancel` grant bound to the account id is required. Nothing was changed
- `409`: `not_scheduled` — nothing to cancel; `deletion_in_progress` — past the point of no return. The grant was not spent

---

[API](https://skmtc.dev/proof/apis/proof-holdings-api.md) · [All operations](https://skmtc.dev/proof/apis/proof-holdings-api/llms.txt) · [OpenAPI document](https://skmtc.dev/proof/apis/proof-holdings-api/revisions/b15f506de696?raw)
