API

관계 일괄 생성

작성일 2026.04.23 | 수정일 2026.04.23

POST/crm-core/v1/relationships/bulk
여러 소스 레코드와 대상 레코드를 카르테시안 곱으로 일괄 연결한다. 소스는 ID 배열(sourceRecordIds) 또는 필터(sourceFilter) 중 하나로 지정한다. 권한 요구: MEMBER 이상.

Body Params

NameTypeRequiredDescription
sourceEntityIdstring소스 개체 ID
targetEntityIdstring대상 개체 ID
relationshipTypeIdstring관계 유형 ID
sourceRecordIdsArray소스 레코드 ID 목록. 최대 500개. sourceFilter와 택일
sourceFilterObject필터 조건으로 소스 레코드를 선택 (최대 5,000건까지 수집)
sourceFilter.keywordstring레코드 이름에 대한 부분 일치 키워드
sourceFilter.filtersstring속성값 필터 JSON 문자열. 예: {"propId":{"op":"eq","value":"VIP"}}
sourceFilter.segmentIdstring특정 세그먼트에 속한 레코드로 제한
targetRecordIdsArray대상 레코드 ID 목록. 최소 1개, 최대 100개

Response

NameTypeRequiredDescription
totalnumber생성 시도한 관계 수 (소스 × 대상)
creatednumber실제 생성된 관계 수
skippednumber*중복으로 건너뛴 관계 수

Structure

코드 예제

const response = await fetch('https://api.solapi.com/crm-core/v1/relationships/bulk', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + TOKEN,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    sourceEntityId: 'CRMET1260423081530123XYZ11122233',
    targetEntityId: 'CRMET1260423081530124XYZ11122234',
    relationshipTypeId: 'CRMRT1260423091530123RTP11122233',
    sourceFilter: { segmentId: 'CRMSG1260423081530123SGM11122233' },
    targetRecordIds: ['CRMRC1260423081530125REC11122235']
  })
});
const data = await response.json();
import requests

response = requests.post(
'https://api.solapi.com/crm-core/v1/relationships/bulk',
headers={'Authorization': f'Bearer {TOKEN}'},
json={
'sourceEntityId': 'CRMET1260423081530123XYZ11122233',
'targetEntityId': 'CRMET1260423081530124XYZ11122234',
'relationshipTypeId': 'CRMRT1260423091530123RTP11122233',
'sourceRecordIds': ['CRMRC1260423081530123REC11122233'],
'targetRecordIds': ['CRMRC1260423081530125REC11122235']
}
)
data = response.json()

curl -X POST 'https://api.solapi.com/crm-core/v1/relationships/bulk' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"sourceEntityId":"CRMET1260423081530123XYZ11122233","targetEntityId":"CRMET1260423081530124XYZ11122234","relationshipTypeId":"CRMRT1260423091530123RTP11122233","sourceRecordIds":["CRMRC1260423081530123REC11122233"],"targetRecordIds":["CRMRC1260423081530125REC11122235"]}'

lightbulb

`sourceRecordIds`와 `sourceFilter`는 택일이다. 둘 다 비어 있으면 400이 반환된다. `sourceFilter` 경로로 선택되는 소스 레코드는 최대 5,000건까지이며, 삭제된(`isDeleted=true`) 레코드는 자동 제외된다.

lightbulb

생성 예상량(소스 × 대상)이 10,000건을 초과하면 400이 반환된다. 중복 관계는 고유 인덱스로 자동 차단되어 `skipped`에 집계된다.