---
title: "Re-point a contact to another person (the split primitive)"
method: PATCH
path: "/api/v1/ackdb/contacts/{contactId}"
tags: ["ackDB"]
---

# Re-point a contact to another person (the split primitive)

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

## Request

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

Moves the affiliation EDGE onto a different human. Used to unpick a wrong fusion (a shared inbox, a recycled email): `DELETE /persons/{id}/links/{type}/{value}` → `POST /persons` → this call. Also a CORRECTION ⇒ the edge's events are restamped with the new `person_id`, which is what preserves the invariant `event.person_id === contact.person_id`.

The target person must be active (a tombstone resolves to its survivor) and must not already hold an active edge at this company (that would be the same affiliation twice — merge instead).

## Path parameters

- `contactId` string, required

## Request body

- AckdbContactRepointRequest: Re-point this edge to another human (a correction — its events are restamped with the new person).
  - `personId` string, required: The person this edge really belongs to.

## Response `200`

`{ data: Contact, repointed: { fromPersonId, toPersonId, eventsRestamped } }` — or `repointed: false` when the edge already belonged to that person.

- object
  - `data` unknown, required

## Other responses

- `400`: Missing personId.
- `404`: Contact or person not found.
- `409`: Target person is merged, or already has an active contact at this company.

---

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