API

레코드 목록 조회

작성일 2026.03.24 | 수정일 2026.04.28

GET/crm-core/v1/records

계정 내 레코드 목록을 커서 기반 페이지네이션으로 조회합니다. 세그먼트·필터·키워드 검색·정렬을 지원하며, 응답의 nextKey를 다음 요청의 startKey로 전달해 다음 페이지를 가져옵니다.

Query Params

NameTypeRequiredDescription
entityIdstring조회할 개체 ID. 미지정 시 모든 개체의 레코드 반환
keywordstring레코드 이름/데이터 검색 키워드
filtersstringJSON 직렬화된 필터 조건
segmentIdstring특정 세그먼트에 속한 레코드만 조회 (최대 50자)
recordIdsstring콤마로 구분된 레코드 ID 목록
startKeystring커서 기반 페이지네이션 시작 키 (이전 응답의 nextKey)
limitnumber페이지당 조회 건수 (1~500, 기본 20)
sortFieldstring정렬 기준 필드명 (예: name, dateCreated, dateUpdated)
sortDirectionstring정렬 방향. asc / desc (기본 desc)

Response

NameTypeRequiredDescription
dataarray<object>*레코드 목록
recordIdstring*레코드 고유 ID (CRMRC1…)
accountIdstring*계정 고유 ID
workspaceIdstring워크스페이스 ID (워크스페이스 환경에서만)
entityIdstring*소속 개체 ID
namestring*레코드 이름
dataobject*속성 ID를 키로 한 속성값 맵
tagsarray<string>*태그 목록
ownerIdstring | null소유자 멤버 ID
profileImageobject | null대표 프로필 이미지
imagesarray<object>*이미지 첨부 배열
attachmentsarray<object>*파일 첨부 배열
createdBystring | null생성한 멤버 ID
updatedBystring | null마지막으로 수정한 멤버 ID
dateCreateddate*최초 생성 시각 (UTC)
dateUpdateddate*최근 수정 시각 (UTC)
nextKeystring | null다음 페이지 조회용 커서. 값이 없으면 마지막 페이지

Structure

코드 예제

const crypto = require('crypto');

const apiKey = 'NCSXXXXXXXXXXXXX';
const apiSecret = 'YOUR_API_SECRET';
const dateTime = new Date().toISOString();
const salt = crypto.randomBytes(16).toString('hex');
const signature = crypto.createHmac('sha256', apiSecret).update(dateTime + salt).digest('hex');
const authHeader = HMAC-SHA256 apiKey=${apiKey}, date=${dateTime}, salt=${salt}, signature=${signature};

const response = await fetch('https://api.solapi.com/crm-core/v1/records', {
method: 'GET',
headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' }
});
const data = await response.json();

import hmac, hashlib, secrets, requests
from datetime import datetime, timezone

api_key = 'NCSXXXXXXXXXXXXX'
api_secret = 'YOUR_API_SECRET'
date_time = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
salt = secrets.token_hex(16)
signature = hmac.new(api_secret.encode(), (date_time + salt).encode(), hashlib.sha256).hexdigest()
auth_header = f'HMAC-SHA256 apiKey={api_key}, date={date_time}, salt={salt}, signature={signature}'

response = requests.get('https://api.solapi.com/crm-core/v1/records', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, params={
"entityId": "CRMET1260423081530123XYZ11122233",
"limit": 20,
"sortField": "dateCreated",
"sortDirection": "desc"
})
data = response.json()

API_KEY="NCSXXXXXXXXXXXXX"
API_SECRET="YOUR_API_SECRET"
DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
SALT=$(openssl rand -hex 16)
SIGNATURE=$(echo -n "${DATE}${SALT}" | openssl dgst -sha256 -hmac "${API_SECRET}" | awk '{print $NF}')
AUTH="HMAC-SHA256 apiKey=${API_KEY}, date=${DATE}, salt=${SALT}, signature=${SIGNATURE}"

curl -X GET 'https://api.solapi.com/crm-core/v1/records' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json"

lightbulb

**필터 문법**: `filters` 파라미터는 JSON 문자열로 전달합니다. 각 속성 ID 또는 시스템 필드(`__recordId`, `__dateCreated`, `__dateUpdated`)를 키로, `{ op, value }` 또는 `{ op, gte, lte }` 조건 객체를 값으로 사용합니다.

lightbulb

**페이지네이션**: `limit` 최대값은 500이며, 대량 조회는 `startKey`/`nextKey`를 반복 사용해 순회하세요. offset 방식은 지원하지 않습니다.

lightbulb

**401 응답**: `{ "errorCode": "Unauthorized", "errorMessage": "권한이 없습니다." }`