List Duplicate Customer Pairs
GET/api/v2/customers/duplicate-runs/:trackedJobLog/pairs
List the candidate duplicate pairs produced by a completed detection run, hydrated with each customer's identifying details for side-by-side comparison. Pairs are ordered by match score (highest first) and paginated; pairs that have since been marked 'not a duplicate' are excluded from the results.
customers:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Each pair contains: customer_a and customer_b detail cards, the 0-100 match score, a bucket ('auto' = score of 90 or higher, 'review' = 60 or higher, 'hidden' otherwise), and the per-field scoring signals (field, score, weight, contribution, note).
For runs with scope 'sku' the cards include the sales order count and last order date. For scope 'qbo' the cards include the QuickBooks customer details (display name, company, given/family name, linked customer ID, active flag).
If the run has not completed or produced no results, an empty list is returned with meta.total = 0.
Pagination: page (default 1) and per_page (default 25).
Authentication: Requires Bearer token with the customers read/write scope and the customer merge permission.
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.