Upload contacts file
https://app.speybooks.com/api/v1/contact-imports/uploadUpload a contacts CSV file. The UCI engine parses contacts, builds an identity graph using Disjoint Set Union, detects duplicates via signal vector similarity (name 0.40, email 0.35, phone 0.15, postcode 0.10), and returns a merge preview.
Hard keys (VAT number, company registration number, email domain) force identity merges. Soft similarity above threshold triggers conflict review. The preview includes up to 50 outcome groups.
Maximum file size: 5 MB. Only CSV files are accepted.
The response includes a preview array containing the DSU graph outcomes — each entry shows the resolution type (CREATE, MERGE, or CONFLICT), the participating nodes (import rows and/or ledger contacts), and the evidence that linked them. This is everything needed to render the identity resolution UI.
Response
Show response fields
columnMapping objectShow child attributes
0 string1 string2 stringdetectedHeaders array<string>filename stringhasConflicts booleanimportId stringpreview array<object>Show child attributes
evidence array<object>nodes array<object>Show child attributes
contactId string nullableemail stringhardKeys array<string>id stringisLedger booleanname stringtypes array<string>vatNumber string nullabletype stringstats objectShow child attributes
conflicts integercreates integermerges integerskips integertotalRows integervalidContacts integer