---
title: "Schedule account deletion"
method: DELETE
path: "/api/v1/me/account"
tags: ["Settings"]
---

# Schedule account deletion

`DELETE /api/v1/me/account`

## Request

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

Schedule the deletion of the account — ONE step, no confirmation session (the `POST /me/account/delete` flow that used to precede this call is gone: it was a code on another channel followed by the same code again). The signed-in owner needs a consumed single-use `account_delete` step-up grant whose one target is the account's own id (`403 2fa_required`; `reason: target_mismatch` when the grant names other ids); an API key answers `403 owner_session_required`. Right now: the account is locked for a 7-day grace period — every session route but the lock page's own, the 2FA family and the session plumbing answers `403 account_scheduled_for_deletion` (with `scheduled_for`), every API key answers the same on every route, you are signed out everywhere, the account's OWN proofs, delegations and consent authorizations are suspended (verifiers and gated servers see it within about a minute), its public pages and badges go dark, and new requests addressed to it and identity checks through its circles are declined. Proofs of decisions already made, and proofs issued to others, stay valid. On the date: billing is settled first (an unpaid final invoice puts the deletion `on_hold` with a Pay-invoice link rather than deleting past it), then everything owned is deleted and the account's own standing credentials are revoked for good. Cancel any time before that with `POST /me/account/deletion/cancel` (a code) or the emailed link; cancelling restores what was paused. A repeat call while scheduled answers 200 with `already_scheduled: true` and the existing date.

## Response `200`

Scheduled — the account is locked and the date set

- AccountDeletionScheduledResponse: The account is locked and its deletion scheduled
  - `success` boolean, required
  - `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.
  - `scheduled_for` string, date-time, required: When the deletion runs — 7 days after the request. Cancel before then.
  - `already_scheduled` boolean, required: A repeat of a request already scheduled: nothing changed, the existing date is returned
  - `proofs_suspended` integer, required: How many of the account's own standing proofs and delegations were suspended right now (0 on a repeat)
  - `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 — a dashboard session is required; an API key is not accepted on this route
- `403`: `2fa_required` — a single-use `account_delete` grant bound to the account id is required (`reason: target_mismatch` when the grant names other ids). Nothing was changed

---

[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/6b8d61ee354f?raw)
