Contacts

Start an async duplicate-contact scan (returns a jobId)

Starts an async scan of the workspace's saved contacts (the whole team's pool, Fuse and custom) for duplicates: contacts that match EXACTLY on every field in matchFields. The selection must carry at least one unique identifier (linkedinUrl, email, phone) or at least 3 profile fields (fullName, jobTitle, industry, location, companyName, companyDomain) — anything weaker would group unrelated people and is rejected. Async: 202 returns a jobId; poll GET /business/contacts/dedupe-jobs/{jobId} until status is completed, then read scanResult.groups. Each group carries a mergePreview (what the surviving contact will look like) so the result can be reviewed before anything is merged; scanning changes nothing and spends no credits. The result stores at most 200 groups (truncated is true when more were found — merge and scan again), and a group larger than 50 contacts is skipped as a too-weak selection (skippedOversizedGroups counts them). Rate limit: 120 requests per minute, 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares.

Errors:

  • 422 VALIDATION_FAILED — matchFields is missing, carries an unknown field, or fails the selection-strength rule.
  • 429 RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.
  • 500 UNEXPECTED_ERROR — The request could not be completed; quote request_id to support.

Requires one of the following token scopes: contacts.

post/business/contacts/dedupe-scan

Request

  • Base URL: https://api.tryfuse.ai/api/v1
  • URL: https://api.tryfuse.ai/api/v1/business/contacts/dedupe-scan
  • Auth: HTTP basic

Request body

matchFieldsstring[] required

Fields duplicates must match exactly on: any combination of linkedinUrl, email, phone, fullName, jobTitle, industry, location, companyName, companyDomain. The selection must include at least one unique identifier (linkedinUrl, email or phone) OR at least 3 of the profile fields — a weaker selection would group unrelated people and is rejected.

Response

Success

jobIdstring required

Id of the scan job; poll GET /business/contacts/dedupe-jobs/{jobId} and pass it to POST /business/contacts/dedupe-merge.

Changes

No recorded changes to this operation across all 1 revision of this API.