Start Bulk Merge
POST /duplicates/bulk-merge
Merge a group: start a bulk merge run over up to 50 suggestion pairs.
Proxies POST /v1/duplicates/bulk-merge
(duplicates/interfaces/router.py:617) — same blocker checks, same
per-pair transactions, same MergeContactBlockedError/
MergeCompanyBlockedError handling. Returns immediately with a
run_id; poll GET /duplicates/bulk-merge/{run_id} for progress.
Merge is destructive: an already-applied pair is only reversible via
POST /duplicates/undo-merge/{merge_history_id} within its 30-day
window, so check the response and the recent-merges feed rather than
assuming success.
Idempotency: this is a POST, so it already honours the standard
Idempotency-Key header via the platform-wide
IdempotencyMiddleware (developer_api/dependencies /idempotency_middleware.py) — no per-route wiring needed. Retrying
the same key returns the first run’s response instead of starting a
second run.
Authorizations
Parameters
Header Parameters
Request Body required
Kick off a bulk merge run for up to BULK_MERGE_MAX_PAIRS suggestion
pairs. Mirrors duplicates/interfaces/router.py::_BulkMergeRequest.
object
Responses
200
Successful Response
object
object
422
Validation Error