---
title: "Find duplicate anagrafiche"
method: GET
path: "/api/v1/rest/anagrafiche/duplicates"
tags: ["Contacts"]
---

# Find duplicate anagrafiche

`GET /api/v1/rest/anagrafiche/duplicates`

## Request

- Base URL: `https://api.custodo.ai`
- URL: `https://api.custodo.ai/api/v1/rest/anagrafiche/duplicates`
- Auth: HTTP bearer

Reports existing anagrafiche that a new one would arguably duplicate, matched on partita IVA, codice fiscale or email and ranked by how many of the three collide. It REPORTS and never blocks: a partita IVA is not unique here — branches of a group share one, and so do a person and their ditta individuale — so call this before anagrafiche_create_party and show the user what came back rather than refusing. Names are deliberately not compared. When the organisation has the duplicate warning switched off this says so instead of answering with an empty list, because «I looked and found nothing» and «nobody looked» are different facts.

**Examples**

- Before I add them — do we already have this company? P. IVA 12345678903
  `GET /api/v1/rest/anagrafiche/duplicates?vat_number=12345678903`
- Is amministrazione@rossi.example already in the register?
  `GET /api/v1/rest/anagrafiche/duplicates?email=amministrazione%40rossi.example`
- I am editing this record — anything else with the same P. IVA?
  `GET /api/v1/rest/anagrafiche/duplicates?vat_number=00743110157&exclude_id=11111111-2222-4333-8444-555555555555`

## Query parameters

- `vat_number` string
- `tax_code` string
- `email` string
- `exclude_id` string, uuid

## Headers

- `X-Tenant-Id` string, uuid

## Response `200`

Done. `data` is the tool’s own answer.

- RestResult
  - `ok` true, required
  - `data` unknown, required

## Other responses

- `400`: The arguments did not validate: `error.message` names the field, what it expects and what arrived.
- `401`: No API key, or one that is malformed, unknown, revoked or expired.
- `403`: The call never ran: the module is off for this organisation, the credential lacks the permission or the module, the tier does not cover it, or the tool is destructive and the key was not minted for that.
- `422`: The tool ran and refused, in a sentence of its own (`TOOL_REFUSED`): the message says what to change. Retrying the same call will not help.
- `429`: The API key has spent its minute, or its day. Every request a key makes counts. See `Retry-After`.

---

[API](https://skmtc.dev/custodo/apis/custodo-integrazioni.md) · [All operations](https://skmtc.dev/custodo/apis/custodo-integrazioni/llms.txt) · [OpenAPI document](https://skmtc.dev/custodo/apis/custodo-integrazioni/revisions/16d336d3ec2a?raw)
