---
title: "Найти дубли во всей базе клиентов"
method: GET
path: "/api/v1/crm/customers/duplicate-groups"
tags: ["CRM customers"]
---

# Найти дубли во всей базе клиентов

`GET /api/v1/crm/customers/duplicate-groups`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/crm/customers/duplicate-groups`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)

Группы живых карточек с общим признаком: ИНН и КПП одного вида лица, последние десять цифр телефона, почта или имя. Сильные признаки идут первыми. Без права видеть чужих клиентов поиск идёт только среди своих карточек.

## Query parameters

- `limit` integer

## Headers

- `X-Tenant` string, required

## Response `200`

Группы похожих карточек

- CRMCustomerDuplicateGroup[]
  - `matched_by` 'inn' | 'phone' | 'email' | 'name', required
  - `value` string, required: Общее значение признака: ИНН/КПП, последние десять цифр телефона, почта или имя
  - `customers` CRMCustomer[], required
    - `id` string, uuid, required
    - `kind` 'person' | 'company' | 'sole_prop', required
    - `name` string, required
    - `legal_name` string, required
    - `inn` string, required: ИНН без пробелов; пустая строка - не указан
    - `kpp` string, required: КПП в верхнем регистре; бывает только при ИНН из 10 цифр
    - `phone` string, required: Основной телефон — значение основного канала phone
    - `email` string, required: Основная почта — значение основного канала email
    - `messengers` object, nullable, required: Ник или номер клиента по мессенджерам
    - `channels` CRMCustomerChannel[], required: Все телефоны, почты и мессенджеры клиента
      - `kind` 'phone' | 'email' | 'messenger', required
      - `network` string: Сеть мессенджера: telegram, whatsapp, max, vk и т. п.; у телефона и почты не передаётся
      - `value` string, required: Значение, как его ввели
      - `normalized` string, required: Вид для сравнения: телефон цифрами с кодом страны, почта и ник в нижнем регистре
      - `primary` boolean, required: Основной канал своего вида; он уходит в справочник контрагентов ERP
    - `tags` string[], nullable, required
    - `source` string, required
    - `owner_id` integer
    - `owner_name` string
    - `note` string, required
    - `core_contact_id` string, uuid
    - `promoted_at` string, date-time: Момент переноса в справочник контрагентов ERP
    - `archived_at` string, date-time
    - `merged_into_customer_id` string, uuid
    - `open_deals` integer, required
    - `custom` object, nullable: Дополнительные поля кабинета: состав задаёт «Настройки → Поля»
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/3c60ded179f2?raw)
