---
title: "Merge Customer Profile"
method: POST
path: "/api/v1/report-ai/customer-profiles/{customer_profile_id}/merge"
tags: ["report-ai", "customer-profiles"]
---

# Merge Customer Profile

`POST /api/v1/report-ai/customer-profiles/{customer_profile_id}/merge`

## Request

- Base URL: `https://api.getanana.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getanana.com/api/v1/report-ai/customer-profiles/{customer_profile_id}/merge`
- Auth: none declared

Fold another profile into this one (#2070).

The path id is the survivor — the profile that remains. Both ids are named
by the operator; the server never chooses what to merge. Returns the merge
ledger row, whose id undoes the merge.

## Path parameters

- `customer_profile_id` string, uuid, required

## Request body

- ProfileMergeRequest: Body for POST /customer-profiles/{survivor_id}/merge (#2070). The path id is the survivor — the profile that remains. ``merged_profile_id`` is folded into it and becomes a tombstone. Both are named explicitly: the server never chooses what to merge.
  - `merged_profile_id` string, uuid, required
  - `reason` string, nullable

## Response `200`

Successful Response

- ProfileMergeRead: A ``profile_merges`` ledger row — the auditable record of one merge.
  - `id` string, uuid, required
  - `survivor_profile_id` string, uuid, required
  - `merged_profile_id` string, uuid, required
  - `status` string, required
  - `reason` string, nullable, required
  - `operator_user_id` string, uuid, nullable, required
  - `undone_at` string, date-time, nullable, required
  - `undone_by_user_id` string, uuid, nullable, required

## Other responses

- `400`: Merge or unmerge cannot proceed as asked: a profile merged into itself, a survivor or loser that is already a tombstone, or a merge already undone.
- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-09-03** `d65b8fefae34`: 2 info
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status

[Operation history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/report-ai/customer-profiles/:customer_profile_id/merge/post.md)

---

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