# POST /v1/erasures

Erase a person

Erases one person's data from every server of the account, as a request under the right to erasure asks. The content of every message to or from the address, sent and received, is deleted, and the address becomes a pseudonym in the message log. The answer is the pending erasure; Sendora carries it out within a minute, and reading it by its id shows the outcome. Erasing an address again changes nothing more. It blocks nothing: later mail to or from the address is sent and received as before.

Takes an account key (`ak_…`) as a bearer token. TypeScript: `account.erasures.create({ address })`. Python: `account.erasures.create(address=...)`.

## Request body

- `address` (string (email), required): The person's e-mail address.

Example:

```json
{
  "address": "anna@example.com"
}
```

## Responses

### 202 A request to erase one person's data from the account.

- `erasureId` (string (uuid), required)
- `status` ("pending" | "done", required): pending until Sendora has erased the person, done after.
- `createdAt` (string (date-time), required)
- `completedAt` (string (date-time) or null, required): When the erasure was done; null while pending.
- `pseudonym` (string or null, required): What now stands where the address was written in the message log; null while pending.
- `messages` (integer or null, required): Sent messages to the address whose content was deleted; null while pending.
- `receivedMessages` (integer or null, required): Received messages from, naming or to the address whose content was deleted; null while pending.

Example:

```json
{
  "erasureId": "6f1d2c3b-4a5e-4f60-8b7a-9c8d7e6f5a41",
  "status": "pending",
  "createdAt": "2026-10-04T12:00:00.000Z",
  "completedAt": null,
  "pseudonym": null,
  "messages": null,
  "receivedMessages": null
}
```

## Errors

Every error answers `error`, the code, and `message`, a sentence for a person. A code that adds fields is shown in full below the table.

| Code | Status | Meaning |
| --- | --- | --- |
| `invalid_request` | 400 | The body, the query or a header does not match what the route takes. |
| `unauthorized` | 401 | The key is missing, malformed or revoked. |
| `wrong_token_kind` | 403 | The key is of the other kind: a server key (sk_) where an account key (ak_) is needed, or the reverse. The message names the kind the operation takes. |

### `invalid_request`

- `issues` (array of object): One entry per invalid field; absent when a header is wrong.
  - `path` (string, required): The field, dotted, such as to.0.email; empty when the whole body is wrong.
  - `message` (string, required)

Example:

```json
{
  "error": "invalid_request",
  "message": "The request is invalid: to.0: Invalid email address",
  "issues": [
    {
      "path": "to.0",
      "message": "Invalid email address"
    }
  ]
}
```
