---
title: "Cancel account deletion via an emailed link"
method: POST
path: "/api/v1/me/account/deletion/cancel/{token}"
tags: ["Settings"]
---

# Cancel account deletion via an emailed link

`POST /api/v1/me/account/deletion/cancel/{token}`

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/me/account/deletion/cancel/{token}`
- Auth: none required

Act on the single-use cancel link — once. Same effect and same `not_restored` list as the signed-in cancel; the link is spent whether or not the owner is signed in. Public, rate-limited per IP.

## Path parameters

- `token` string, required: Magic link or callback token

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

- `404`: `cancel_token_invalid` — already used, or the deletion is no longer pending
- `409`: `deletion_in_progress` — past the point of no return
- `429`: Rate limited

---

[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)
