API

중복 레코드 조회

작성일 2026.04.23 | 수정일 2026.04.23

POST/crm-core/v1/records/duplicates
개체 내에서 지정한 속성 값(또는 레코드 이름)을 기준으로 중복 레코드 그룹을 탐지합니다. 같은 전화번호·이메일·이름 등으로 중복 등록된 레코드를 찾아 병합 후보 목록을 반환합니다.

Body Params

NameTypeRequiredDescription
entityIdstring검사 대상 개체 ID
propertyIdsArray중복 검사 속성 ID 목록 (권장)
propertyIdstring단일 속성 ID (레거시, 하나만 검사)
includeNameboolean레코드 name 필드도 중복 검사에 포함할지 여부
recordIdsArray검사 범위를 특정 레코드 ID 집합으로 제한 (예=최근 임포트 건만 검사)

Response

NameTypeRequiredDescription
groupsArray중복 그룹 배열
groups[].keystring중복 기준이 된 값 (이름 또는 속성 값)
groups[].recordIdsArray해당 그룹의 레코드 ID 목록
groups[].countnumber그룹 내 레코드 수
totalDuplicatesnumber중복으로 판별된 총 레코드 수

Structure

코드 예제

const response = await fetch('https://api.solapi.com/crm-core/v1/records/duplicates', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + TOKEN,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    entityId: 'CRMET1260423081530123XYZ11122233',
    propertyIds: ['CRMPP1260423091530123PHON1112223']
  })
});
const duplicates = await response.json();
import requests

response = requests.post(
'https://api.solapi.com/crm-core/v1/records/duplicates',
headers={'Authorization': f'Bearer {TOKEN}'},
json={'entityId': 'CRMET1260423081530123XYZ11122233', 'propertyIds': ['CRMPP1260423091530123PHON1112223']}
)
duplicates = response.json()

curl -X POST 'https://api.solapi.com/crm-core/v1/records/duplicates' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"entityId":"CRMET...","propertyIds":["CRMPP..."]}'

lightbulb

`includeName: true`로 레코드 이름까지 중복 기준으로 포함할 수 있습니다. 여러 속성을 함께 검사하면 **모든 속성 값이 일치**하는 레코드만 그룹핑됩니다(AND 조건).