> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 사용자 CSV 가져오기 및 내보내기: 대량 작업

> Didit 벤더 사용자 엔티티를 CSV로 대량 가져오고, 외부 컴플라이언스 도구용으로 전체 사용자 테이블을 내보냅니다. Business Console에서 사용할 수 있습니다.



대량 가져오기/내보내기 사용자 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\````# Goal — bulk-load (or extract) Didit User entities programmatically

CSV import / export is a console-only UI feature. For programmatic bulk operations, loop `POST /v3/users/create/` for imports, optionally upload trusted profile faces with `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`, and paginate `GET /v3/users/` for exports. There is no public CSV API endpoint.

\## Bulk import — loop the create endpoint

\```bash
\# users.json — array of records you want to seed into Didit
\# [{"vendor_data":"user-1","display_name":"Alice"}, ...]

jq -c '.[]' users.json | while read user; do
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d "$user"
sleep 0.1   # respect rate limits — see /integration/rate-limiting
done
\```

Record shape (matches `POST /v3/users/create/`):

\```json
\{
"vendor_data": "user-42",          // required, unique per app
"display_name": "Jane Doe",        // optional
"metadata": {"tier": "premium"},   // free-form JSON
"tags": ["promo-2026"]             // optional array of strings
}
\```

\`create` is **not** idempotent — a duplicate `vendor_data` returns conflict. Branch on existence:

\```bash
\# Idempotent upsert pattern
if curl -s -o /dev/null -w "%{http_code}" \
 https://verification.didit.me/v3/users/$VD/ \
 -H "x-api-key: $DIDIT_API_KEY" | grep -q 200; then
curl -X PATCH https://verification.didit.me/v3/users/$VD/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
else
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
fi
\```

\## Import faces from another provider

If each imported user has a trusted face image, upload it after the User exists:

\```bash
\# GET /v3/users/{vendor_data}/ or POST /v3/users/create/ first.
\# Use the returned didit_internal_id for the profile attachment endpoint.
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "<base64-encoded-jpg-or-png>", "comment": "Imported from previous KYC provider"}'
\```

This stores the face on the User profile and enrolls it for duplicate detection and face search. It does not blocklist the face; use /management-api/lists/upload-face for blocklists.

\## Bulk export — paginate the list endpoint

\```bash
PAGE=1
while :; do
RESP=$(curl -sG https://verification.didit.me/v3/users/ \
-H "x-api-key: $DIDIT_API_KEY" \
\--data-urlencode "page=$PAGE" \
\--data-urlencode "page_size=100")
echo "$RESP" | jq -c '.results[]' >> users.ndjson
HAS_NEXT=$(echo "$RESP" | jq -r '.next // empty')
\[ -z "$HAS_NEXT" ] && break
PAGE=$((PAGE+1))
done
\```

Filter with the same query params as `GET /v3/users/` (`status`, `search`, date ranges, etc).

\## What survives on update vs what stays

\| Field | Behaviour |
\|---|---|
\| `display_name`, `metadata`, `tags` | Overwritten by PATCH |
\| `full_name`, `date_of_birth`, `portrait_image` | Read-only after a verified session (you can override via PATCH but it's logged as a manual override) |
\| Aggregate counters (`session_count`, `approved_count`, etc.) | Computed by Didit — never accept writes |
\| `features` map | Computed — never accept writes |

\## Failure modes

\- `409` on create — `vendor_data` exists; switch to PATCH.
\- `429` — rate limit; back off using `Retry-After`. Don't slam the API; insert 100ms+ between calls.
\- `400` — bad JSON or invalid country/status enum. Log the row and continue.
\- Partial failures: track `vendor_data` → status per row and retry only failures.

\## Console fallback

For one-off migrations bigger than 100K rows, the Business Console CSV import/export (Users → Import / Export) is fast and skips writing your own loop. The console runs the same validations and produces an error report.

\## Sources of truth

\- /management-api/users/create — POST /v3/users/create/ schema
\- /management-api/users/list — GET /v3/users/ pagination + filters
\- /entities/users/data-model — mutable vs read-only fields
\- /integration/rate-limiting — rate limits and Retry-After
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

붙여넣을 곳

Business Console을 사용하면 코드를 작성하지 않고도 팀이 사용자 엔티티를 대량으로 관리할 수 있습니다. 두 가지 흐름을 지원합니다. **CSV 가져오기**(대규모로 사용자 생성 또는 업데이트)와 **CSV 내보내기**(외부 도구용으로 사용자 테이블 추출)입니다.> [!NOTE]
>
> 여기서 제공하는 대량 가져오기/내보내기는 사용자 프로필만 생성하거나 업데이트합니다. 과거 KYC 세션, 문서 경고, 라이브니스 증거 또는 제공업체 결정은 다시 생성하지 않습니다. Sumsub, MetaMap, Veriff, Onfido, Persona 또는 다른 제공업체에서 전체 마이그레이션을 하려면 [다른 제공업체에서 데이터 가져오기](https://docs.didit.me/ko/sessions-api/import-verifications.md)를 참고하십시오.## CSV에서 사용자 가져오기### 사용 시점- **초기 마이그레이션**: 다른 KYC 벤더에서 기존 사용자 명단을 가져옵니다.
- **제공업체 얼굴 마이그레이션**: 행을 생성한 후 신뢰할 수 있는 얼굴 이미지를 가져온 사용자 프로필에 연결합니다.
- **대량 온보딩**: 파트너사의 고객 목록을 등록합니다.
- **메타데이터 보완**: 많은 사용자의 태그, 등급 또는 내부 식별자를 한 번에 업데이트합니다.### 템플릿 열*Users → Import → Download template*에서 템플릿을 다운로드합니다. 열은 다음과 같습니다.| 열 | 필수 여부 | 설명 |
| - | - | - |
| `vendor_data` | 예 | 사용자를 식별하는 고유 값입니다. 애플리케이션마다 고유해야 합니다. |
| `display_name` | 아니요 | 콘솔에 표시되는 읽기 쉬운 이름입니다. |
| `full_name` | 아니요 | 법적 성명입니다. 인증된 세션 데이터로 덮어쓰게 됩니다. |
| `email` | 아니요 | 알려진 연락처 이메일입니다. |
| `phone` | 아니요 | 알려진 연락처 전화번호입니다(E.164 형식). |
| `country` | 아니요 | ISO 3166-1 alpha-3 국가 코드입니다. |
| `status` | 아니요 | `ACTIVE`, `FLAGGED` 또는 `BLOCKED`입니다. 기본값은 `ACTIVE`입니다. |
| `tags` | 아니요 | 쉼표로 구분된 태그입니다. |
| `metadata_json` | 아니요 | 사용자 지정 메타데이터를 위한 문자열화된 JSON입니다. |### 가져오기 실행**1. CSV 업로드***Users → Import → Upload CSV*로 이동하여 파일을 선택합니다.**2. 미리보기 검토**콘솔이 각 행을 검증합니다. 잘못된 행은 오류 사유와 함께 강조 표시됩니다(예: 중복된 `vendor_data`, 잘못된 국가 코드).**3. 가져오기 시작**Didit은 행을 비동기로 처리합니다. 탭을 닫아도 됩니다. 진행 상황은 *Users → Import history*에서 확인할 수 있습니다.**4. 결과 검토**가져오기가 끝나면 기록 보기에 생성, 업데이트, 건너뛴 행의 수와 다운로드 가능한 오류 보고서가 표시됩니다.### 업데이트와 생성- `vendor_data`가 존재하지 않으면 새 사용자가 생성됩니다.
- `vendor_data`가 이미 존재하면 해당 행이 기존 사용자의 프로필 필드와 메타데이터를 업데이트합니다.
- 집계 카운터와 인증된 필드(승인된 세션의 `full_name`, `date_of_birth`)는 가져오기로 **절대 덮어쓰지 않습니다**.### 사용자 생성 후 얼굴 가져오기CSV 가져오기는 사용자 행을 생성하거나 업데이트합니다. CSV에는 얼굴 이미지가 포함되지 않습니다. 다른 제공업체의 얼굴 생체 정보를 가져오려면 대상 사용자가 존재한 후 각 얼굴을 업로드합니다.**1. 사용자 생성 또는 가져오기**콘솔 CSV 가져오기를 사용하거나 반복문에서 [`POST /v3/users/create/`](https://docs.didit.me/ko/management-api/users/create)를 호출합니다.**2. didit\_internal\_id 읽기**[`GET /v3/users/{vendor_data}/`](https://docs.didit.me/ko/management-api/users/get)로 사용자를 조회합니다. 응답에는 `didit_internal_id`가 포함됩니다.**3. 얼굴 업로드**원시 base64 얼굴 이미지와 함께 [`POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`](https://docs.didit.me/ko/management-api/users/upload-face)를 호출합니다.```bash theme={null}
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<base64-encoded-jpg-or-png>",
    "comment": "Imported from previous KYC provider"
  }'
```얼굴은 유효한 이미지여야 하며, 디코딩 후 최대 2MB이고, 감지 가능한 얼굴을 포함해야 합니다. Didit은 이를 프로필에 저장하고 중복 감지와 얼굴 검색을 위해 색인합니다. 별도로 [얼굴을 목록에 업로드](https://docs.didit.me/ko/management-api/lists/upload-face.md) 엔드포인트를 사용하지 않는 한 얼굴 차단 목록에 추가되지 않습니다.## CSV로 사용자 내보내기### 사용 시점- **규정 준수 감사**: 전체 사용자 테이블을 감사인에게 제공합니다.
- **데이터 웨어하우스 동기화**: BI 도구로 주기적으로 덤프합니다.
- **SAR / 규제 기관 요청**: 필터링된 사용자 하위 집합을 추출합니다.### 내보내기 실행1. *Users → Export*로 이동합니다.
2. 필터(상태, 국가, 날짜 범위, 검색)를 적용합니다.
3. 열을 선택합니다(기본값은 모든 필드이며, 필요하지 않은 열은 제외할 수 있습니다).
4. 제출합니다. Didit은 내보내기를 비동기로 생성하고 요청한 운영자에게 서명된 다운로드 링크를 이메일로 보냅니다.> [!NOTE]
>
> 내보내기에는 역할이 읽을 수 있도록 허용된 데이터만 포함됩니다. COMPLIANCE\_OFFICER 이상은 전체 테이블을 내보낼 수 있으며, DEVELOPER 및 READER 역할은 내보내기가 제한됩니다.## 성능 특성| 작업 | 일반적인 규모 | 참고 |
| - | - | - |
| 가져오기 | 최대 100,000행 | 더 큰 파일은 서버 측에서 분할되며, 진행 상황은 UI가 폴링합니다 |
| 내보내기 | 최대 1,000,000행 | 더 큰 내보내기는 S3로 스트리밍되며 서명된 URL로 전달됩니다 |## 감사 추적모든 가져오기와 내보내기는 [감사 로그](https://docs.didit.me/ko/console/audit-logs.md)에 기록됩니다.- 작업을 시작한 운영자
- 행 수(가져오기) / 필터 스냅샷(내보내기)
- 타임스탬프와 성공/실패 상태## 다음 단계> [card] [사용자 생성 API](https://docs.didit.me/ko/management-api/users/create.md)
>
> 스크립트 기반 가져오기를 위한 프로그래밍 방식의 사용자 생성입니다.> [card] [사용자 얼굴 업로드](https://docs.didit.me/ko/management-api/users/upload-face.md)
>
> 가져온 얼굴 이미지를 사용자 프로필에 연결합니다.> [card] [데이터 보존](https://docs.didit.me/ko/console/data-retention.md)
>
> 가져온 데이터가 유지되는 기간입니다.> [card] [감사 로그](https://docs.didit.me/ko/console/audit-logs.md)
>
> 가져오기/내보내기 기록을 검토합니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.