Merge two contacts
Requires customers:write. Folds a duplicate into the contact that should survive.
Direction is deliberately explicit: {id} in the URL is the source — the row that disappears — and target_id in the body is the survivor. There is no un-merge; the merge record carries who did it and what moved, which is the provenance that makes a wrong merge repairable by hand.
Authorizations
A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange.
Headers
The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing. Absent, the session's default organization answers.
Path Parameters
The source contact — it disappears.
Query Parameters
Which environment to read. A view parameter, valid only on the staff surface.
live, test Body
The surviving contact.
Response
Merged.