---
title: "Erase Recipient"
method: POST
path: "/v1/erasures"
tags: ["contacts"]
---

# Erase Recipient

`POST /v1/erasures`

## Request

- Base URL: `https://api.elaan.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.elaan.io/v1/erasures`
- Auth: none declared

Erase everything held about one recipient, addressed by **your** id for
them, whether or not a contact currently exists.

`DELETE /v1/contacts/{id}` covers the ordinary case, but it can only reach
what a live contact points at. A trigger records the recipient by the
`external_id` you sent, and resolution to a contact happens later, in the
background — so a typo, an integration that addresses people by email while
your contacts are keyed by CRM id, a trigger fired before the contact was
created, or a contact deleted before this endpoint existed all leave trigger
payloads that no contact delete can reach. Those payloads are the rawest data
we hold: your `variables`, plus the external id itself, which is frequently
an email address.

Use this to answer an erasure request when you are not certain a contact
exists. It is idempotent, safe to call repeatedly, and returns what it
touched so you can evidence the request. If a contact does exist it is
deleted too, making this a strict superset of the contact delete.

## Headers

- `authorization` string, nullable

## Request body

- ErasureRequest: Which recipient to erase, named the tenant's own way.
  - `external_id` string, required: Your identifier for the person, the same value you pass to `POST /v1/notifications`. Used rather than our contact id because the data this reaches may exist when no contact does.

## Response `200`

Successful Response

- ErasureResponse: What an erasure touched — returned so the caller can evidence the request.
  - `external_id` string, required
  - `contact_deleted` boolean, required: Whether a contact existed for this external id and was deleted.
  - `rows_redacted` integer, required: Delivery records whose personal data was blanked, across all channels.
  - `rows_cancelled` integer, required: Of those, how many were still queued and have been stopped, so they can never be delivered. Always less than or equal to rows_redacted.

## Other responses

- `422`: Validation Error

---

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