API

활동 목록 조회

작성일 2026.03.24 | 수정일 2026.04.29

GET/crm-core/v1/activities

계정의 활동 목록을 커서 기반 페이지네이션으로 조회합니다. 레코드·개체·활동 유형으로 필터링할 수 있으며 최신 활동부터 반환됩니다.

Query Params

NameTypeRequiredDescription
recordIdstring특정 레코드에 속한 활동만 조회
entityIdstring특정 개체 내 레코드의 활동만 조회
activityTypestring활동 유형 필터 (CALL / EMAIL / MEETING 등)
startKeystring커서 기반 페이지네이션 시작 키
limitnumber페이지당 조회 건수 (기본 20)

Response

NameTypeRequiredDescription
dataarray*활동 목록 (dateCreated DESC 정렬)
activityIdstring*활동 고유 ID
accountIdstring*계정 고유 ID
entityIdstring연결된 개체 ID
recordIdstring연결된 레코드 ID
activityTypestring*활동 유형
subjectstring*활동 제목
descriptionstring*활동 상세 설명
attachmentIdsarray<string>*첨부파일 ID 목록 (기본 빈 배열)
outcomestring*활동 결과 (PENDING / COMPLETED / CANCELLED / RESCHEDULED / NO_ANSWER)
scheduledAtdate예정 일시
completedAtdate완료 시각
dueDatedate마감 일시
assignedMemberIdstring대표 담당 멤버
assignedMemberIdsarray<string>*다중 담당 멤버 목록
durationMinutesnumber*소요 시간 (분)
dateCreateddate*생성 시각 (UTC)
dateUpdateddate*수정 시각 (UTC)
nextKeystring다음 페이지 커서. 값이 없으면 마지막 페이지

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/activities', {
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/activities', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, params={
"recordId": "CRMRC1260423081530123REC11122233",
"limit": 20
})
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/activities' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json"

lightbulb

특정 레코드의 활동만 조회하려면 `GET /crm-core/v1/activities/record/{recordId}` 전용 엔드포인트를 사용하는 것이 더 편리합니다. 캘린더 뷰는 `GET /crm-core/v1/activities/calendar`를 사용하세요.

lightbulb

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