Deduplication API
Deduplicate a contact list with one API call
Send your records, get back duplicate clusters with confidence scores and a suggested survivor for each group.
The problem
Exact-match dedupe misses the real duplicates: "Acme, Inc." vs "acme inc", the same person under two emails, a typo in a last name. Building fuzzy matching in-house means tuning similarity thresholds, blocking strategies, and merge rules — then maintaining them forever.
What you get
- Fuzzy matching across fields, not brittle exact-string comparison
- A confidence score and plain-language reason for every match
- High-confidence pairs merge automatically; the rest go to review
- Deterministic and auditable — the same input always yields the same clusters
Call it in one request
Plain HTTPS and JSON against /api/v1/dedupe. Use the SDK for typed calls, or hit the endpoint directly — same contract either way.
cURL
curl https://zapinner.com/api/v1/dedupe \
-H "Authorization: Bearer zap_live_••••••" \
-H "Content-Type: application/json" \
-d '{"records":[{"id":1,"email":"a@acme.com"},{"id":2,"email":"A@ACME.com"}]}'JavaScript (fetch)
const res = await fetch("https://zapinner.com/api/v1/dedupe", {
method: "POST",
headers: {
Authorization: "Bearer zap_live_••••••",
"Content-Type": "application/json",
},
body: JSON.stringify({
"records": [
{
"id": 1,
"email": "a@acme.com"
},
{
"id": 2,
"email": "A@ACME.com"
}
]
}),
})
const data = await res.json()@zapinner/sdk
import { Zapinner } from "@zapinner/sdk"
const zap = new Zapinner({ apiKey: process.env.ZAPINNER_API_KEY })
const result = await zap.request("/api/v1/dedupe", {
"records": [
{
"id": 1,
"email": "a@acme.com"
},
{
"id": 2,
"email": "A@ACME.com"
}
]
})Frequently asked
- How does it decide two contacts are the same?
- It compares records field-by-field with similarity scoring (name, email, company, phone), combines the signals into a confidence score, and clusters records above your threshold. Every match carries the reason and score so you can audit it.
- Will it merge records automatically?
- Only above a high-confidence threshold. Ambiguous pairs are returned for review instead of being merged silently, so you never lose data to an over-eager match.
- How many records can I send at once?
- Small batches run inline in a single request. For large lists, submit an async job and poll for the result — the same dedupe engine, sized for bigger inputs.
Related solutions
Ship it today with Zapinner
One API key, one consistent interface, 79 data capabilities. Start on the free plan — no credit card required.
Canonical: https://zapinner.com/solutions/deduplicate-contact-list
