---
title: "Hard-delete a contact (full cascade)"
method: DELETE
path: "/api/v1/ackdb/contacts/{contactId}"
tags: ["ackDB"]
---

# Hard-delete a contact (full cascade)

`DELETE /api/v1/ackdb/contacts/{contactId}`

## Request

- Base URL: `http://localhost:3009`
- URL: `http://localhost:3009/api/v1/ackdb/contacts/{contactId}`
- Auth: HTTP bearer

Irreversible. Deletes the edge and everything that hangs off it, in ONE transaction, in FK order:

1. `entity_events.contact_id` → NULL, **`person_id` kept** — the events happened; the human keeps them on their timeline and only loses the (wrong) edge pointer
2. `contact_identity_links` → deleted
3. `contact_traits` → deleted
4. `member_assignments` (relationship ownership) → deleted
5. the contact row → deleted

The PERSON survives (they may hold other affiliations, keys and events). Counts are reported honestly. For a reversible removal use the soft delete at `DELETE /entities/{entityId}/contacts/{contactId}`.

## Path parameters

- `contactId` string, required

## Response `200`

`{ data: { contactId, entityId, personId, eventsDetached, identityLinksDeleted, traitsDeleted, memberAssignmentsDeleted } }`.

- object
  - `data` unknown, required

## Other responses

- `404`: Contact not found.

---

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