API

레코드 내보내기 요청

작성일 2026.04.23 | 수정일 2026.04.29

POST/crm-core/v1/records/export/request

레코드를 CSV 또는 Excel 파일로 내보내는 작업을 요청합니다. 대상 레코드 수에 따라 동기/비동기로 자동 분기되며, 1만 건 이하이면 즉시 생성된 서명 URL(downloadUrl)이 반환됩니다. 초과 시 비동기 작업이 큐에 등록되고 jobId가 반환됩니다. 요금제 records.exportEnabled 기능이 활성화된 경우에만 사용 가능합니다.

Body Params

NameTypeRequiredDescription
entityIdstring*내보낼 레코드의 개체 ID
formatstring*파일 형식. csv 또는 excel
keywordstring레코드 이름 부분 일치 검색어
filtersstringJSON 직렬화된 필터 조건
segmentIdstring특정 세그먼트에 속한 레코드만 대상으로 할 때 세그먼트 ID

Response

NameTypeRequiredDescription
modestring*처리 모드. sync(1만 건 이하) 또는 async(초과 시)
downloadUrlstring동기 처리 시 즉시 반환되는 서명 다운로드 URL
jobIdstring비동기 처리 시 조회용 작업 ID

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/export/request', {
method: 'POST',
headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' },
body: JSON.stringify({
"entityId": "CRMET1260423081530123XYZ11122233",
"format": "excel",
"segmentId": "CRMSG1260423081530123SGM11122233"
})
});
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.post('https://api.solapi.com/crm-core/v1/records/export/request', headers={
'Authorization': auth_header,
'Content-Type': 'application/json'
}, json={
"entityId": "CRMET1260423081530123XYZ11122233",
"format": "excel",
"segmentId": "CRMSG1260423081530123SGM11122233"
})
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 POST 'https://api.solapi.com/crm-core/v1/records/export/request' \
-H "Authorization: ${AUTH}" \
-H "Content-Type: application/json" \
-d '{"entityId": "CRMET1260423081530123XYZ11122233", "format": "excel", "segmentId": "CRMSG1260423081530123SGM11122233"}'

lightbulb

요금제 기능 플래그 `records.exportEnabled`가 필요합니다. 사용 가능 요금제가 아니면 403을 반환합니다.

lightbulb

비동기 모드(`mode=async`)에서 발급된 `jobId`는 24시간 동안 상태 조회가 가능하며, 완료 시 다운로드 URL은 추가 서명 유효기간 내에서 사용해야 합니다.

lightbulb

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