메인 콘텐츠로 건너뛰기
POST
curl

개요

세션을 실행하기 전에 사용자 엔티티를 명시적으로 생성합니다. 별도로 지정하지 않으면 반환된 엔티티는 ACTIVE 상태가 됩니다. 선택적으로, 같은 호출에서 해당 사람에게 인증 링크를 이메일로 보낼 수 있습니다 (인증 링크 보내기 참조).

사용 시기

  • 메타데이터 미리 설정: 고객이 인증하기 전에 등급, 가입 경로, 내부 태그 같은 정보를 지정합니다.
  • 다른 벤더에서 이전: 기존 사용자 목록을 Didit에 다시 만들어, 기록과 분석이 알려진 기준점에서 시작되도록 합니다.
  • 신뢰할 수 있는 프로필 얼굴 가져오기: 먼저 사용자를 생성한 다음, 반환된 didit_internal_id로 사용자 얼굴 업로드를 호출합니다.
  • 거래 전용 사용 사례: vendor_data로 사용자를 등록하면 사용자 인증(KYC) 세션을 한 번도 실행하지 않고도 거래를 제출할 수 있습니다.
  • 인증 초대: 한 번의 호출로 사람을 생성하고 인증 링크를 이메일로 보냅니다.

연락처 정보

프로필 필드와 함께 사람의 연락처 정보를 보낼 수 있습니다. full_name을 보내지 않으면 first_name과 last_name이 공백으로 연결되어 full_name이 됩니다. email과 phone_number는 metadata.contact에, country는 metadata.address에 저장됩니다. country는 ISO 3166 코드(alpha-2 또는 alpha-3, 예: ES 또는 ESP)를 받으며, 대문자로 변환되어 저장됩니다. 보낸 metadata에 이미 JSON 객체가 아닌 contact 또는 address 값이 있으면 Didit은 이를 덮어쓰지 않습니다. 이 경우 문제가 있는 필드에 대해 호출은 400을 반환합니다.

인증 링크 보내기

send_verification_link를 true로 설정하면 같은 호출에서 사람을 인증에 초대합니다. Didit은 workflow_id의 워크플로로 해당 사람의 인증 세션을 생성하고, 링크를 email로 보냅니다. language를 사용하면 이메일의 언어를 지정할 수 있습니다. 생략하면 영어로 보냅니다.
  • 링크를 보내려면 email과 workflow_id가 필수이며, 워크플로는 사람을 인증하는 워크플로여야 합니다. 기업 확인(KYB) 워크플로를 지정하면 400을 반환합니다.
  • 세션은 세션 생성과 같은 검사를 거칩니다. vendor_data가 차단 목록에 있거나 크레딧이 부족하면 400을 반환합니다.
  • 사용자와 세션은 함께 생성되거나 전혀 생성되지 않습니다. 어떤 검사라도 실패하면 아무것도 저장되지 않고 이메일도 보내지 않습니다.
  • 응답의 verification_link에는 세션의 session_id, session_number, status, url, workflow_id와 링크가 전송된 email이 포함됩니다. 링크를 보내지 않으면 verification_link는 null입니다.

참고 사항

  • vendor_data는 필수이며 애플리케이션마다 고유해야 합니다. 중복 생성을 시도하면 충돌 오류가 반환됩니다. 기존 사용자를 업데이트하려면 PATCH /v3/users/{vendor_data}/를 사용합니다.
  • vendor_data의 한도는 2000바이트(UTF-8 인코딩)입니다. 이 한도를 넘는 값은 허용되지 않고 400 검증 오류가 반환됩니다.
  • 보통 검증된 세션에서 도출되는 필드(full_name, date_of_birth)는 여기서 미리 설정할 수 있지만, 처음으로 승인된 사용자 인증(KYC) 세션에서 덮어써질 수 있습니다.
  • 이 endpoint는 얼굴 이미지를 받지 않습니다. 신뢰할 수 있는 가져온 얼굴을 첨부하려면, 이 endpoint가 didit_internal_id를 반환한 뒤 POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/를 사용합니다.
  • 생성 자체는 webhook을 보내지 않습니다. 이후 사용자 정보가 변경되면 user.data.updated 또는 user.status.updated가 전송됩니다.
  • send_verification_link를 사용하면 새 세션이 같은 호출에서 사용자를 업데이트하며, 이때 user.data.updated가 전송됩니다.

권한

기본 시크릿 키와 전체 접근 권한이 있는 API 키는 언제든지 이 endpoint를 호출할 수 있습니다. 사용자 지정 접근 권한이 있는 키에는 People(users) 쓰기 권한이 필요합니다. send_verification_link: true를 사용하면 세션 쓰기 권한도 필요합니다. 호출이 세션을 생성하고 그 링크를 전달하기 때문입니다. 이 권한이 없으면 호출은 403을 반환하며, 메시지는 This API key has no write access to sessions.이고 아무것도 저장되지 않습니다. 일부 워크플로나 승인된 세션으로만 제한된 키는 이 endpoint에 접근할 수 없습니다. Console의 역할 및 권한은 팀원이 Console에서 할 수 있는 작업을 결정합니다. 이는 API 키 요청에 대해서는 평가되지 않습니다.

관련 문서

인증

x-api-key
string
header
필수

Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본 키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며 특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나 만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된 IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를 벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write 권한이 없는 키는 세션 링크와 token을 null로 수신합니다. https://docs.didit.me/console/api-keys 를 참고하십시오.

본문

application/json
vendor_data
string
필수

귀하가 지정한 해당 사용자의 고유 식별자입니다(자유 형식 문자열, UUID 아님). 애플리케이션의 사용자 간에 고유해야 하며, 전송된 값과 정확히 일치해야 합니다.

full_name
string | null

사용자의 법적 성명입니다.

Maximum string length: 512
display_name
string | null

콘솔에 표시되는 친숙한 표시 이름입니다(UI 표시 시 full_name보다 우선 적용됨).

Maximum string length: 255
date_of_birth
string<date> | null

YYYY-MM-DD 형식의 생년월일입니다.

status
enum<string>
기본값:ACTIVE

초기 라이프사이클 상태입니다. 기본값은 ACTIVE입니다.

사용 가능한 옵션:
ACTIVE,
FLAGGED,
BLOCKED
metadata
object | null

사용자에게 연결하는 임의의 JSON 객체입니다. 기본값은 {}입니다.

approved_emails
string[]

이 사용자에 대해 사전 신뢰된 이메일 주소 목록입니다(예: ["john@example.com"]).

approved_phones
string[]

이 사용자에 대해 사전 신뢰된 전화번호 목록입니다(예: ["+14155551234"]).

issuing_states
string[]

사전 기록된 발급 국가(ISO 3166-1 alpha-3) 목록입니다(예: ["USA"]).

first_name
string

이름. full_name을 전송하지 않으면 Didit은 first_name과 last_name을 공백으로 결합하여 full_name으로 만듭니다. 별도의 필드로 반환되지 않습니다.

Maximum string length: 255
last_name
string

성. full_name이 전송되지 않은 경우 first_name과 결합되어 full_name이 됩니다. 별도의 필드로 반환되지 않습니다.

Maximum string length: 255
email
string<email>

metadata.contact.email에 저장되는 연락처 이메일입니다(metadata.contact 내에 전송한 email을 대체함). send_verification_link가 true인 경우 필수이며, 인증 링크가 이 주소로 전송됩니다. metadata.contact가 JSON 객체가 아닌 경우, 호출 시 이 필드에 대해 400으로 응답합니다.

phone_number
string

metadata.contact.phone_number에 저장되는 연락처 전화번호입니다. metadata.contact가 JSON 객체가 아닌 경우 이 필드에 대해 호출 시 400을 반환합니다.

Maximum string length: 32
country
string

ISO 3166 코드(alpha-2 또는 alpha-3, 예: ES 또는 ESP)로 표현된 국가입니다. metadata.address.country에 대문자로 저장됩니다. metadata.address가 JSON 객체가 아닌 경우, 호출 시 이 필드에 대해 400을 반환합니다.

Maximum string length: 3

true인 경우 Didit은 해당 사용자를 위해 workflow_id에 대한 인증 세션을 생성하고 email 주소로 링크를 이메일로 전송합니다. email 및 workflow_id가 필요합니다. 범위가 지정된 API 키에는 sessions 쓰기 권한도 필요합니다.

workflow_id
string<uuid>

인증 세션의 워크플로입니다. send_verification_link가 true일 때 필수입니다. 개인을 인증해야 하며, 기업 확인(KYB) 워크플로는 거부됩니다. 그렇지 않은 경우 무시됩니다.

language
string

인증 이메일 언어로, 지원 언어 코드 형태입니다. 생략 시 영어로 설정됩니다. send_verification_link가 true가 아니면 무시됩니다.

Maximum string length: 10

응답

사용자가 생성되었습니다. 전체 사용자 레코드(Get User와 동일한 형식)와 함께 verification_link가 반환됩니다. send_verification_link가 true인 경우 Didit이 이메일로 전송한 인증 세션이며, 그렇지 않으면 null입니다.

전체 사용자 세부정보입니다. UserListItem을 메타데이터, 댓글 및 updated_at으로 확장합니다.

Didit이 생성하여 해당 사용자에게 이메일로 전송한 인증 세션입니다. 항상 존재하며, send_verification_link가 true가 아닌 경우 null입니다.

didit_internal_id
string<uuid>

이 사용자에 대한 Didit의 고유 내부 UUID입니다.

vendor_data
string | null

귀하가 지정한 해당 사용자의 고유 식별자입니다(세션 생성 시 전달됨). 벤더 식별자가 제공되지 않은 경우 null일 수 있습니다.

display_name
string | null

직접 설정한 커스텀 표시 이름

full_name
string | null

인증된 문서에서 추출된 성명

date_of_birth
string<date> | null
effective_name
string | null

사용 가능한 최적의 이름: display_name이 설정된 경우 해당 값, 그렇지 않으면 full_name

status
enum<string>

사용자 레코드의 수명 주기 상태입니다(세션 상태가 아님). 기본값은 ACTIVE이며, FLAGGED는 사용자를 수동 확인 필요로 표시하고, BLOCKED는 해당 vendor_data에 대한 새 세션을 방지합니다.

사용 가능한 옵션:
ACTIVE,
FLAGGED,
BLOCKED
portrait_image_url
string | null

사용자의 사전 서명된 인물 사진 URL(몇 시간 후 만료됨)

session_count
integer

해당 사용자의 총 인증 세션 수

approved_count
integer

승인된 세션 수

declined_count
integer

거부된 세션 수

in_review_count
integer

검토 중인 세션 수

issuing_states
string[]

이 사용자의 승인된 신분증 문서에서 확인된 발급 국가의 ISO 3166-1 alpha-3 코드 목록입니다(예: ["USA", "ESP"]). 없는 경우 빈 배열입니다.

approved_emails
string[]

이 사용자의 승인된 세션에서 수집된 인증된 이메일 주소입니다(예: ["john@example.com"]).

approved_phones
string[]

이 사용자의 승인된 세션에서 수집된 인증된 전화번호입니다(예: ["+14155551234"]).

features
object

이 사용자의 모든 세션에 걸쳐 집계된 기능별 상태입니다. 가능한 키: ID_VERIFICATION, NFC, LIVENESS, FACE_MATCH, POA, QUESTIONNAIRE, EMAIL_VERIFICATION, PHONE, AML, IP_ANALYSIS, AGE_ESTIMATION, DATABASE_VALIDATION. 가능한 값: Approved, Declined, In Review, Not Finished, Resub Requested.

features_list
object[]

features와 동일한 데이터로, {feature, status} 객체의 정렬된 배열입니다.

last_session_at
string<date-time> | null

가장 최근 세션의 타임스탬프

first_session_at
string<date-time> | null

첫 번째 세션의 타임스탬프

last_activity_at
string<date-time> | null

이 사용자에 대한 가장 최근 활동(세션, 거래, 상태 변경, 데이터 편집 등)의 타임스탬프입니다.

tags
object[]

태그 할당입니다. 참고: 목록 응답에 사용되는 플랫한 {uuid, name, color} 형태와 달리, 상세 응답의 각 항목은 태그 링크 객체({uuid, tag: {...}, added_by_email, added_by_name, created_at})입니다.

created_at
string<date-time>
metadata
object

이 사용자에 첨부한 커스텀 메타데이터 JSON입니다. 기본값은 {}입니다.

comments
object[]

이 사용자의 활동 로그 및 댓글입니다(상태 변경, 프로필 수정, 수동 메모).

updated_at
string<date-time>
마지막 수정일 2026년 11월 7일