> ## 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とリスク評価でメールを検証し、漏えい、使い捨て、配信不能のアドレスを検出します。1回$0.02の従量課金で月額の最低料金はありません。

Diditのメールアドレス認証は、ワンタイムパスコード（OTP）と高度なリスク評価によって、ユーザーのメールアドレスを確実に検証する機能です。有効で到達可能な連絡先情報を確保しつつ、リスクの高いメールや侵害されたメールから保護します。

メールアドレス認証の連携プロンプト
        Copy prompt to clipboard



      
      

\<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>



      
      

Paste into

検証結果の読み方を扱う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の生成と配信**認証システムは次を行います。- 時間制限のある安全なワンタイムパスコードを生成します
- 指定されたアドレスにメールでコードを配信します
- 受信トレイへの到達率を高めるため、到達性のベストプラクティスを実装しています
- 悪用を防ぐ保護機能を備えた再送フローを提供します**3. コードの検証**ユーザーは次の手順で認証を完了します。- 受信したコードを認証画面に入力します
- 設定された制限時間（5分）内に送信します
- 必要に応じて新しいコードを要求します（適切なレート制限あり）**4. リスク評価**システムは高度なチェックを実行します。| チェック | 説明 |
| - | - |
| **漏えいの有無** | 既知のデータ漏えいでメールアドレスを調べ、露出したサービスを一覧表示します。 |
| **使い捨てプロバイダーの検出** | 一時的/使い捨てのプロバイダーのメールにフラグを立てます。 |
| **到達性チェック** | 配信できないアドレスや、構文が無効なアドレスを検出します。 |
| **評判シグナル** | リスクの高い可能性のあるメールのパターンを特定します。 |
| **重複利用** | 過去の検証データと照合します。 |**5. 結果の配信**検証結果は複数のチャネルから確認できます。| チャネル | 説明 |
| - | - |
| **ダッシュボード** | リアルタイムのダッシュボード更新。 |
| **Webhook** | Webhook通知。 |
| **API** | RESTful APIのレスポンス。 |
| **レポート** | 検証の詳細情報を含む包括的なレポート。 |## 認証の機能Diditのメールアドレス認証サービスには、認証プロセスを強化する主な機能がいくつかあります。#### OTP認証- **安全なコード生成**: ランダムで時間制限のあるワンタイムパスコード
- **メール配信**: 信頼性が高く、ローカライズされたメール配信
- **設定可能なタイムアウト**: セキュリティ要件に合わせて有効期限を設定
- **再試行オプション**: 適切な上限のもとで、ユーザーが新しいコードを要求可能#### メールの分析- **構文の検証**: メールアドレスがRFCに準拠した形式であることを確認
- **プロバイダーのチェック**: 使い捨て/一時的なプロバイダーを特定
- **到達性の洞察**: 配信できないアドレスを検出
- **漏えいインテリジェンス**: 既知の漏えい記録を詳細とともに表示#### リスク評価- **露出の検出**: メールアドレスが既知の漏えいに含まれているかを特定
- **使い捨てメールの検出**: 一時的な、または使い捨てのメールにフラグを立てる
- **アクティビティの監視**: 試行にわたる不審なパターンを追跡
- **ブロックリストのチェック**: 過去に悪用されたメールの社内リストと照合


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