메인 콘텐츠로 건너뛰기
이메일 인증 보고서는 이메일 OTP 챌린지의 전체 결과를 캡처합니다. 즉, 메시지가 누구에게 전송되었는지, 해당 주소가 일회용이거나 전송 불가한 주소인지, 알려진 데이터 침해 사고에 포함되어 있는지, 사용자가 몇 번 시도했는지, 차단 목록 또는 다른 승인된 사용자와의 세션 간 일치 항목이 있는지 등을 기록합니다. 이 페이지에서는 인증된 각 주소에 대한 OTP 결과, 데이터 침해 노출 내역, 위험 플래그를 파싱할 수 있도록 결정 endpoint에서 반환하는 JSON 구조를 설명합니다.
OTP 결과, 침해 데이터 및 위험 플래그를 보여주는 Didit 이메일 인증 보고서

개요

이메일 보고서는 워크플로 노드가 이메일 인증 기능을 실행할 때마다 생성됩니다. 각 보고서는 단일 주소에 대한 1회의 OTP 챌린지를 나타내며 다음을 포함합니다.
  • 인증된 email 주소.
  • 불리언 위험 플래그(is_breached, is_disposable, is_undeliverable) 및 침해 인텔리전스 데이터베이스에서 가져온 근거 데이터인 breaches[] 배열.
  • OTP 전송 시도 횟수(verification_attempts) 및 승인 타임스탬프.
  • 모든 전송, 재시도 및 코드 확인 시도에 대한 시간순 lifecycle[] 로그.
  • 다른 승인된 이메일 인증 또는 귀하의 차단 목록에서 동일한 주소를 감지하는 matches[] 배열.
  • warnings[] 배열 — 인증 도중 발생한 위험 이벤트(이메일 인증 경고 참조).
  • 보고서를 생성한 워크플로 그래프 노드를 식별하는 node_id(V3 세션 전용).
호스팅 워크플로 세션에서는 OTP 챌린지가 Didit 인증 UI 내에서 실행되므로 결정 payload에서 결과만 읽으면 됩니다. 호스팅 흐름이 없는 서버 간 OTP의 경우 독립형 Email API를 사용합니다. POST /v3/email/send/는 코드를 전송하고 POST /v3/email/check/는 사용자가 입력한 값을 검증합니다. 완료된 독립형 인증도 동일한 보고서 구조로 제공됩니다. 호스팅 세션은 기본적으로 사용자의 잘못된 코드 입력을 2회(email_max_check_attempts)로, OTP 전송을 2회 — 최초 전송 1회와 재전송 1회(email_max_retries)로 제한하며, 이는 워크플로 노드별로 조정할 수 있습니다. 두 제한 중 하나라도 초과하면 해당 단계는 EMAIL_CODE_ATTEMPTS_EXCEEDED와 함께 Declined로 완료됩니다.

API 응답에서 표시되는 위치

결정 endpoint(GET /v3/session/{sessionId}/decision/)는 복수형 배열 키인 email_verifications 아래에 이메일 보고서를 반환합니다. 이 배열에는 워크플로 그래프의 이메일 인증 노드당 하나의 항목이 포함되며, 일반적으로 하나이지만 단계적 추가 인증 흐름에서는 여러 개가 생성될 수 있습니다.
null 값은 이메일 인증 단계가 아직 실행되지 않았음을 의미합니다. 워크플로에서 둘 이상의 이메일 주소를 수집할 수 있는 경우에는 email_verifications[0]을 직접 읽기보다는 배열을 순회하여 처리하십시오.

스키마

필드별 표준 스키마는 데이터 모델 페이지에서 확인할 수 있습니다.
전송 불가능한 주소(유효하지 않은 구문, 존재하지 않는 도메인, 누락된 MX 레코드 또는 OTP 전송 실패)의 경우 자동 거부 경고인 UNDELIVERABLE_EMAIL_DETECTED와 함께 단계가 Declined로 완료됩니다. 유일한 예외는 사용자가 직접 주소를 입력한 경우(세션 생성 시 사전 입력되지 않은 경우)로, 전송이 불가능한 경우 인라인 오류가 반환되어 즉시 거부되는 대신 다른 주소로 재시도할 수 있습니다.

상태 값

라이프사이클 이벤트 유형

lifecycle[]는 시간순으로 정렬됩니다. 각 이벤트에는 type, timestamp, details 및 청구 가능한 fee(해당하는 경우)가 포함됩니다. details payload는 이벤트 제품군에 따라 다릅니다.
  • 전송 이벤트 (EMAIL_VERIFICATION_MESSAGE_SENT, EMAIL_VERIFICATION_RETRY_MESSAGE_SENT) — { status, reason }. status는 Success, Retry 또는 Undeliverable이며, reason은 전송이 실패하지 않는 한 null입니다(email_can_not_be_delivered, 또는 인식할 수 없는 레거시 값의 경우 unknown).
  • 확인 이벤트 (VALID_CODE_ENTERED, INVALID_CODE_ENTERED) — { code_tried, status }, 이때 status는 Approved, Failed, Expired or Not Found 또는 Declined입니다.
  • 최종 상태 이벤트 — null이지만, EMAIL_VERIFICATION_DECLINED / EMAIL_VERIFICATION_IN_REVIEW는 예외로 { "reason": "<risk code>" }(예: UNDELIVERABLE_EMAIL_DETECTED)를 포함합니다.
status가 Success 또는 Undeliverable인 전송에는 $0.02의 이메일 인증 요금이 기록되며, Retry 전송, 확인 이벤트 및 상태 이벤트는 항상 fee: 0을 가집니다.

세션 간 일치 항목

matches[]는 동일한 애플리케이션 내에서 이전에 승인된 이메일 인증(KYC, KYB 및 독립형 API 세션 전반)의 동일한 주소와 management API 목록에 구성된 차단 목록 일치 항목을 기록합니다. 현재 세션의 vendor_data를 공유하는 인증은 제외되며(동일한 최종 사용자는 자신과 일치하지 않음), 배열은 최대 5개 항목으로 제한되고 오래된 항목부터 정렬됩니다. 주소가 차단 목록에 있지만 일치하는 세션 중 차단 목록에 등록된 세션이 없는 경우, source: "list_entry"(모든 세션 필드는 null)를 포함하는 가상 항목이 배열의 맨 앞에 추가됩니다.

예시

Approved — 정보 제공 수준의 위반 1건이 포함된 정상 OTP

Declined — 전송 불가능한 주소

구문 또는 DNS(MX) 검증에 실패하거나 OTP 이메일을 전송할 수 없는 사전 입력된 주소는 즉시 Declined로 완료됩니다. 사용자에게 코드가 전달되지 않았으므로 코드 확인 이벤트가 표시되지 않습니다.

Declined — 차단 목록에 등록된 일회용 메일함

사용자가 OTP를 완료했지만 주소가 이메일 차단 목록과 일치했습니다(자동 거부). 일회용 플래그도 발생했습니다. 여기서는 disposable_email_action이 기본값인 NO_ACTION으로 유지되었으므로 information 수준으로 표시됩니다.

관련 항목

마지막 수정일 2026년 11월 7일