> ## 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.

# 이메일 인증 API: OTP 및 위험 평가

> Didit 이메일 인증을 통해 OTP 및 위험 평가로 이메일을 검증하세요. 유출, 일회용, 수신 불가 주소를 감지합니다. 월 최소 비용 없이 호출당 $0.02로 이용할 수 있습니다.

Didit의 이메일 인증은 일회용 코드(OTP)와 고급 위험 평가를 통해 사용자 이메일 주소를 검증하는 신뢰할 수 있는 방법을 제공합니다. 이 기능은 유효하고 연락 가능한 연락처 정보를 확보하는 동시에 고위험 및 침해된 이메일로부터 보호할 수 있도록 지원합니다.

이메일 인증 연동 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\````# Goal
Integrate Didit Email Verification (OTP send + check + deliverability / breach / disposable lookup) into your app. Pick ONE mode.

\# Mode A — Session-based
Use this when the user completes verification through a hosted Didit flow.

1\. Add the EMAIL feature to the workflow (Business Console or POST /v3/workflows/). Configure risk actions: duplicated_email_action, breached_email_action, disposable_email_action.
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

Decision surface: `email_verifications[]` array on the decision payload.

\# Mode B — Standalone API (server-to-server, OTP pair)
Two endpoints paired by email address.

Step 1 — send the code:
\```bash
curl -X POST 'https://verification.didit.me/v3/email/send/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"options": { "code_size": 6, "locale": "en", "use_white_label_customization": false },
"vendor_data": "user-1234"
}'
\```
Default: 6 numeric digits and Didit-branded delivery. Set `options.alphanumeric_code: true` for letters+digits (check is case-insensitive). Set `options.use_white_label_customization: true` to use your application's configured white-label sender and branding for this standalone OTP email; the default is `false`. `options.code_size` 4–8. Codes expire in **5 minutes**; one free retry per email within the window.

Step 2 — check the code (user types it into your UI):
\```bash
curl -X POST 'https://verification.didit.me/v3/email/check/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"code": "123456",
"disposable_email_action": "DECLINE"
}'
\```
Each session accepts **up to 3** code-entry attempts. The check response always includes the full email metadata (breaches[], disposable flag, deliverable flag).

\# Status enum (per email_verifications[].status / email.status)
"Not Started" | "In Progress" | "Approved" | "Declined" | "Failed" | "Undeliverable" | "Expired or Not Found" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.EMAIL)
warnings[] risk codes include:
DUPLICATED_EMAIL, BREACHED_EMAIL, DISPOSABLE_EMAIL, UNDELIVERABLE_EMAIL, INVALID_EMAIL, OTP_MAX_ATTEMPTS_REACHED, OTP_EXPIRED.
Full catalogue: /core-technology/email-verification/warnings-email-verification.

\# Failure modes to handle
\- send response status="Undeliverable" — bounce/invalid domain; no charge, surface to the user.
\- check response status="Failed" — wrong code, attempts remaining; re-prompt.
\- check response status="Declined" — third failed attempt; restart with /v3/email/send/.
\- check response status="Expired or Not Found" — outside the 5-minute window; restart.
\- BREACHED_EMAIL warning — the address appears in known breaches; route to review per policy.

\# See also
\- Canonical schema: /reference/data-models#email-verification
\- Per-feature report: /core-technology/email-verification/report-email-verification
\- Risk catalogue: /core-technology/email-verification/warnings-email-verification
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

붙여넣을 곳

인증 결과를 확인하는 방법에 대한 Academy의 강의에서는 8:34에 이메일 인증 검사를 다룹니다.[이메일 인증 — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=514\&rel=0\&playsinline=1)![이메일 인증 흐름도](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/email-verification-flow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=23d035a261faa2063d6d941290ecf752)## 작동 방식Didit의 이메일 인증 솔루션은 OTP 검증과 데이터 유출 노출 여부, 전송 가능성, 제공업체 평판과 같은 인텔리전스 신호를 결합합니다.**1. 이메일 수집**시스템은 다음 항목을 안전하게 수집합니다:| 입력 | 설명 |
| - | - |
| **이메일 주소** | 세션 생성 시 제공되지 않은 경우 사용자가 직접 이메일 주소를 입력합니다. 세션 생성 시 제공된 경우 사용자는 미리 입력된 이메일을 인증해야 합니다. |
| **선호 언어** | 해당되는 경우 현지화된 커뮤니케이션에 사용됩니다. |**2. OTP 생성 및 전송**Didit의 인증 시스템은 다음을 수행합니다:- 안전하고 유효 시간이 제한된 일회용 코드를 생성합니다
- 제공된 주소로 이메일을 통해 코드를 전송합니다
- 받은편지함 도달률을 극대화하기 위해 전송 모범 사례를 적용합니다
- 어뷰징을 방지하기 위한 안전장치가 포함된 재전송 흐름을 제공합니다**3. 코드 검증**사용자는 다음과 같이 인증을 완료합니다:- 수신된 코드를 인증 인터페이스에 입력합니다
- 설정된 시간(5분) 내에 제출합니다
- 필요한 경우 새 코드를 요청합니다(적절한 속도 제한 적용)**4. 위험 평가**Didit 시스템은 다음과 같은 고급 검사를 수행합니다:| 검사 | 설명 |
| - | - |
| **유출 노출** | 알려진 데이터 유출 이력에서 이메일을 조회하고 노출된 서비스를 나열합니다. |
| **일회용 제공업체 감지** | 임시/일회용 제공업체의 이메일에 플래그를 지정합니다. |
| **전송 가능성 검사** | 전송할 수 없거나 구문상 유효하지 않은 주소를 감지합니다. |
| **평판 신호** | 잠재적인 고위험 이메일 패턴을 식별합니다. |
| **중복 사용** | 이전 인증 데이터와 교차 대조합니다. |**5. 결과 전송**다양한 채널을 통해 인증 결과에 접근할 수 있습니다:| 채널 | 설명 |
| - | - |
| **대시보드** | 실시간 대시보드 업데이트. |
| **webhook** | webhook 알림. |
| **API** | RESTful API 응답. |
| **보고서** | 상세한 인증 정보가 포함된 포괄적인 보고서. |## 인증 기능Didit의 이메일 인증 서비스는 인증 프로세스를 개선하기 위한 몇 가지 주요 기능을 제공합니다:#### OTP 검증- **보안 코드 생성**: 무작위로 생성되는 유효 시간이 지정된 일회용 코드
- **이메일 전송**: 안정적이고 현지화된 이메일 전송
- **구성 가능한 시간 제한**: 보안 요구 사항에 따라 만료 시간 설정
- **재시도 옵션**: 적절한 제한 하에 사용자가 새 코드를 요청할 수 있도록 허용#### 이메일 분석- **구문 유효성 검사**: 이메일 주소가 RFC 규격을 준수하는 형식인지 확인
- **제공업체 검사**: 일회용/임시 제공업체 식별
- **전송 가능성 인사이트**: 전송 불가능한 주소 감지
- **유출 인텔리전스**: 알려진 유출 기록과 세부 정보 제공#### 위험 평가- **노출 감지**: 알려진 유출 건에 이메일이 포함되어 있는지 확인
- **일회용 이메일 감지**: 임시 또는 일회용 이메일에 플래그 지정
- **활동 모니터링**: 여러 시도에 걸쳐 의심스러운 패턴 추적
- **차단 목록 확인**: 이전에 악용된 이메일의 내부 목록과 대조


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