Retrieve paginated company merges for the organization.
Returns all company merges initiated by users in your organization, including their current
status, the companies involved, and merge details. You can filter company merges using the filter query parameter. The filter parameter is a string that you can specify conditions based on the following properties:
| Property | Type | Operators | Values | Examples |
|---|---|---|---|---|
status |
enum |
= |
in-progress, success, failed |
status=failed |
taskId |
string |
= |
taskId=789e0123-e45b-67c8-d901-234567890123 |
Company merges are returned in reverse chronological order (most recent first).
Requires the "Manage duplicates" permission and organization admin role.
OK
Bad Request
Forbidden
Errors
Example response showing multiple company merges with different statuses
{- "data": [
- {
- "id": 12,
- "status": "success",
- "taskId": "789e0123-e45b-67c8-d901-234567890123",
- "startedAt": "2025-06-03T10:30:00Z",
- "primaryCompanyId": 12345,
- "duplicateCompanyId": 67890,
- "completedAt": "2025-06-03T10:32:15Z",
- "errorMessage": null
}, - {
- "id": 13,
- "status": "failed",
- "taskId": "456e7890-1234-5678-9012-345678901234",
- "startedAt": "2025-06-03T09:15:00Z",
- "primaryCompanyId": 54321,
- "duplicateCompanyId": 98765,
- "completedAt": "2025-06-03T09:16:30Z",
- "errorMessage": "Primary company not found"
}
], - "pagination": {
- "prevUrl": null
}
}Initiate a company merge to combine a duplicate company profile into a primary company profile.
This is an asynchronous process that will merge all data from the duplicate company into the primary company. Once the merge is initiated, you can track its progress using the returned task URL.
Requires the "Manage duplicates" permission and organization admin role.
| primaryCompanyId required | integer <int64> [ 1 .. 9007199254740991 ] The ID of the company profile that will be kept after the merge. All data from the duplicate company will be merged into this company. |
| duplicateCompanyId required | integer <int64> [ 1 .. 9007199254740991 ] The ID of the company profile that will be merged and then deleted. All data from this company will be transferred to the primary company. |
Accepted
Bad Request
Forbidden
Errors
Example request to merge a duplicate company profile into a primary company profile. The primary company (ID 12345) will be kept and all data from the duplicate company (ID 67890) will be merged into it.
{- "primaryCompanyId": 12345,
- "duplicateCompanyId": 67890
}Response when a company merge task has been accepted for processing. The task ID can be used to track the progress of the merge task.
Retrieve the status and details of a specific company merge.
Returns information about the company merge including its current status, the companies involved, timestamps, and any error information if the merge failed.
The mergeId can be obtained from the response of the Get All Company Merges endpoint, or by filtering company merges by task ID using /v2/company-merges?filter=taskId={taskId} after initiating a merge.
Requires the "Manage duplicates" permission and organization admin role.
OK
| X-Ratelimit-Limit-User | integer Number of requests allowed per minute for the user |
| X-Ratelimit-Limit-User-Remaining | integer Number of requests remaining for the user |
| X-Ratelimit-Limit-User-Reset | integer Time in seconds before the limit resets for the user |
| X-Ratelimit-Limit-Org | integer Number of requests allowed per month for the account |
| X-Ratelimit-Limit-Org-Remaining | integer Number of requests remaining for the account |
| X-Ratelimit-Limit-Org-Reset | integer Time in seconds before the limit resets for the account |
| id required | integer <int64> [ 1 .. 9007199254740991 ] The unique identifier for the merge |
| status required | string Current status of the merge |
| taskId required | string <uuid> Identifier for the task this merge belongs to |
| startedAt required | string <date-time> Timestamp when the merge started |
| primaryCompanyId required | integer <int64> [ 1 .. 9007199254740991 ] ID of the primary company that other profiles were merged into |
| duplicateCompanyId required | integer <int64> [ 1 .. 9007199254740991 ] ID of the duplicate company that was merged into the primary company |
| completedAt required | string or null <date-time> Timestamp when the merge completed (success or failure) |
| errorMessage required | string or null Error message if the merge failed |
Bad Request
Forbidden
Not Found
Errors
Example of a successful company merge
{- "id": 12345,
- "status": "success",
- "taskId": "1ac19acd-674c-49a0-819a-cd674cc9a042",
- "startedAt": "2025-06-03T10:30:00Z",
- "primaryCompanyId": 12345,
- "duplicateCompanyId": 67890,
- "completedAt": "2025-06-03T10:32:15Z",
- "errorMessage": null
}Retrieve paginated company merge tasks for the organization.
Returns all merge tasks initiated by users in your organization, including their current status, the companies involved, and task details.
You can filter tasks using the filter query parameter. The filter parameter is a string that you can specify conditions based on the following properties:
| Property | Type | Operators | Values | Examples |
|---|---|---|---|---|
status |
enum |
= |
in-progress, success, failed |
status=failed |
Tasks are returned in reverse chronological order (most recent first).
Requires the "Manage duplicates" permission and organization admin role.
OK
| X-Ratelimit-Limit-User | integer Number of requests allowed per minute for the user |
| X-Ratelimit-Limit-User-Remaining | integer Number of requests remaining for the user |
| X-Ratelimit-Limit-User-Reset | integer Time in seconds before the limit resets for the user |
| X-Ratelimit-Limit-Org | integer Number of requests allowed per month for the account |
| X-Ratelimit-Limit-Org-Remaining | integer Number of requests remaining for the account |
| X-Ratelimit-Limit-Org-Reset | integer Time in seconds before the limit resets for the account |
required | Array of objects (CompanyMergeTask) <= 100 items Array of company merge tasks |
required | object (Pagination) |
Bad Request
Forbidden
Errors
Example response showing multiple company merge tasks with different statuses
{- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "status": "success",
- "resultsSummary": {
- "total": 1,
- "inProgress": 0,
- "success": 1,
- "failed": 0
}
}, - {
- "id": "456e7890-e12b-34c5-d678-901234567890",
- "status": "failed",
- "resultsSummary": {
- "total": 1,
- "inProgress": 0,
- "success": 0,
- "failed": 1
}
}
], - "pagination": {
- "prevUrl": null
}
}Retrieve the status and details of a specific task for company merges.
Returns information about the company merges for a specific task including its overall status, number of merges in-progress, completed, and failed.
Detailed information about individual merges for this task can be found by querying:
/v2/company-merges?filter=taskId={taskId} See Company
Merges for more details.
Task statuses:
in-progress: The merge task is currently being processed.success: The merge task completed successfully.failed: The merge task failed.Requires the "Manage duplicates" permission and organization admin role.
OK
| X-Ratelimit-Limit-User | integer Number of requests allowed per minute for the user |
| X-Ratelimit-Limit-User-Remaining | integer Number of requests remaining for the user |
| X-Ratelimit-Limit-User-Reset | integer Time in seconds before the limit resets for the user |
| X-Ratelimit-Limit-Org | integer Number of requests allowed per month for the account |
| X-Ratelimit-Limit-Org-Remaining | integer Number of requests remaining for the account |
| X-Ratelimit-Limit-Org-Reset | integer Time in seconds before the limit resets for the account |
| id required | string <uuid> The unique identifier for this merge task | ||||||||
| status required | string The current status of the batch operation | ||||||||
required | object Summary of merges in this batch task | ||||||||
| |||||||||
Bad Request
Forbidden
Not Found
Errors
Example response showing a merge task that is currently being processed.
{- "id": "456e7890-e12b-34c5-d678-901234567890",
- "status": "in-progress",
- "resultsSummary": {
- "total": 1,
- "inProgress": 1,
- "success": 0,
- "failed": 0
}
}