Start Customer Duplicate Detection Run
POST/api/v2/customers/duplicate-runs
Start an asynchronous duplicate-detection run over customer records. The work is dispatched to a background job and the endpoint returns immediately with a tracked_job_log_id. Once the run completes, fetch the scored candidate pairs from the List Duplicate Customer Pairs endpoint using that ID.
customers:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Scopes:
- sku - scans the account's own customer records.
- qbo - scans customer records synced from a connected QuickBooks Online instance (integration_instance_id is required for this scope).
Candidates are grouped by normalized email and company, then each pair is scored 0-100 across weighted signals (email, company, name, address, phone). Only pairs scoring at or above the threshold (default 80) are kept, and pairs previously marked 'not a duplicate' are excluded.
Body fields:
- scope (string, required): 'sku' or 'qbo'.
- integration_instance_id (integer, optional): required when scope is 'qbo'; must reference a connected integration instance.
- threshold (integer, optional): minimum match score (0-100) for a pair to be included. Default: 80.
Authentication: Requires Bearer token with the customers read/write scope and the customer merge permission.
Request
Responses
- 200
- 401
- 403
- 422
- 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.
Unprocessable Entity
Response Headers
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.