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

# メールOTP確認API：メール認証コードの検証

> DiditのPOST /v3/email/check/で、メールのワンタイムコードを検証し、情報漏洩・使い捨てアドレス・到達性のシグナルを取得できます。従量課金制で契約は不要です。

## インテリジェンスアドオン

`enable_enrichment`を`true`に設定すると、アドレスに対してメールインテリジェンスも実行され、リスクスコアと過去の漏洩履歴が得られます。
このアドオンは、チェックの料金に加えて、定価でリクエスト1件あたり\$0.05が請求されます。
残高が不足している場合、リクエストは`403`を返します。

シグナルの扱いは3つのフィールドで決まります。
いずれも`NO_ACTION`(デフォルト)または`DECLINE`を指定でき、`enable_enrichment`が`true`の場合にのみ有効になります。

| フィールド | 却下される条件 |
| - | - |
| `email_intelligence_score_action` | リスクスコアがしきい値を上回る場合。 |
| `recent_email_breach_action` | アドレスが最近の既知のデータ漏洩に含まれている場合。 |
| `frequent_email_breach_action` | アドレスが多数の既知のデータ漏洩に含まれている場合。 |

`NO_ACTION`の場合でもシグナルは`email.email_intelligence`で返されるため、独自のルールを適用できます。


## OpenAPI

````yaml ja/openapi-25.json POST /v3/email/check/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 本人確認API。x-api-keyヘッダーで認証します。
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/email/check/:
    post:
      tags:
        - Standalone APIs
      summary: メールコードを確認
      description: >-
        [`POST
        /v3/email/send/`](/ja/standalone-apis/email-send)で送信したOTPを検証し、最終的な検証結果とメールインテリジェンスを取得します。メールインテリジェンスには、到達可能性、情報漏えいへの露出（`is_breached`と、漏えい情報データベースから取得した`breaches`リスト）、使い捨てメールプロバイダーの検出、およびお客様のセッション間でのアドレスの重複利用が含まれます。


        **チェックが検証を特定する方法。**
        照合はお客様のアプリケーションと`email`アドレスの組み合わせで行われます。`request_id`は入力として使用しません。直近**5分**以内に作成された保留中の検証のうち、最新のものがチェックされます。該当するものがない場合（未送信、確定済み、送信時に配信不能、または作成から5分以上経過）、エンドポイントは`status:
        "Expired or Not Found"`とともに`200`を返します。


        **試行回数の上限。** 各検証では**3回**までコードを試行できます。1回目と2回目の誤ったコードでは、残りの試行回数と`email:
        null`とともに`status:
        "Failed"`が返されます。3回目の誤ったコードで検証は`Declined`として確定し、`EMAIL_CODE_ATTEMPTS_EXCEEDED`警告が付与され、完全なメールレポートが返されます。コードは大文字と小文字を区別せずに比較されます（`alphanumeric_code`で送信した場合に関係します）。有効なのは最後に送信したコードのみです。


        **結果。**
        `Approved`：コードが正しく、却下となるリスクがない状態です。`Declined`：最終状態です。コードは正しかったものの却下となるリスクに該当した（後述の`DECLINE`アクション、ブロックリストに登録されたアドレス、または確定時に配信不能と判明したアドレス）場合、もしくは試行回数の上限に達した場合です。`Failed`：コードが誤っており、試行回数が残っている状態です。`Expired
        or Not
        Found`：チェック対象がない状態です。`Approved`/`Declined`の場合、`request_id`は送信時の`request_id`（セッションID）と等しく、`email`には完全なレポート（`is_breached`、`breaches`、`is_disposable`、`is_undeliverable`、`warnings`、`lifecycle`、`matches`）が含まれます。`Failed`および`Expired
        or Not Found`の場合、`request_id`は1回限りのランダムなUUIDです。


        **リスクアクション。**
        `duplicated_email_action`、`breached_email_action`、`disposable_email_action`は、正しいコードで対応するリスクが検出された場合の処理を決定します。`DECLINE`は最終ステータスを`Declined`に変更します。`NO_ACTION`（デフォルト）はステータスに影響を与えずに`email.warnings`にリスクを記録します。


        **請求。** チェックは無料です。クレジットは送信が成功した時点で消費されます。


        **セッションへの保存。** 確定したチェックは送信時に作成されたセッションを更新し（Business Consoleで確認でき、`GET
        /v3/session/{sessionId}/decision/`で照会可能）、`status.updated`のWebhookを送信します。


        **サンドボックス。**
        サンドボックスのAPIキーではすべての処理がスキップされます。形式が正しいコードであれば（`123456`を含む）、簡略化された`email`オブジェクト（`status`、`email`、`is_breached`、`is_disposable`、`is_undeliverable`）を含む静的な`Approved`ペイロードが返されます。形式が正しくない入力には引き続き`400`が返されます。データは一切保存されません。


        **認証。**
        アプリケーションのAPIキーを`x-api-key`ヘッダーで送信してください。認証情報がない、または無効な場合は`403`（`{"detail":
        "You do not have permission to perform this
        action."}`）が返されます。このAPIが`401`を返すことはありません。


        **レート制限。**
        すべてのPOST/PATCH/DELETEエンドポイントで共有される書き込み枠として、APIキーごとに毎分300リクエストまでです。超過すると`429`が返されます。


        **ソーシャルフットプリント。**
        `enable_social`を`true`に設定すると、`email_social`ブロックが追加されます。このブロックには、このアドレスが登録されているオンラインプラットフォームが、カテゴリごとの件数および取得可能なプロフィール詳細とともに含まれます。`profiles_registered:
        0`は、プラットフォームを確認した結果、どのプラットフォームにもこのアドレスが見つからなかったことを意味し、有効かつ課金対象の回答です。アドオンをリクエストしなかった場合、またはチェックを完了できなかった場合、このブロックは含まれず、その場合は課金されません。請求では、このエンドポイント自体の料金に加えて、リクエストごとに`email_social`が1単位追加されます。
      operationId: post_v3email_check
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  description: >-
                    対応する[`POST
                    /v3/email/send/`](/ja/standalone-apis/email-send)の呼び出しで使用したものと同じメールアドレスです。この値によって、確認と送信が紐付けられます。
                  example: alice@example.com
                code:
                  type: string
                  maxLength: 10
                  description: >-
                    エンドユーザーが受け取ったOTP。4〜8桁の数字、または送信時に`alphanumeric_code:
                    true`を使用した場合は4〜8文字の英数字です。比較では大文字と小文字は区別されません。
                  example: '123456'
                duplicated_email_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    同じメールアドレスが、アプリケーションの別のユーザー（異なる`vendor_data`）によってすでに使用され、承認されている場合の対応です（過去に承認済みとなった認証のみが対象です）。`DECLINE`は最終的な`status`を`Declined`に切り替え、`NO_ACTION`はリスクを`email.warnings`に記録して`email.matches`を設定します。
                breached_email_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    メールアドレスが既知のデータ漏えいに含まれている場合の処理です（`email.is_breached`）。`DECLINE`は最終的な`status`を`Declined`に変更し、`NO_ACTION`はリスクを`email.warnings`に記録します。
                disposable_email_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    ドメインが使い捨て/一時メールのプロバイダーに属する場合（`email.is_disposable`）の対応です。`DECLINE`は最終的な`status`を`Declined`に切り替え、`NO_ACTION`はリスクを`email.warnings`に記録します。
                enable_enrichment:
                  type: boolean
                  default: false
                  description: >-
                    `true`の場合、そのアドレスに対してメールインテリジェンスも実行します（リスクスコアと漏洩履歴）。このエンドポイント自体の料金に加えて、リクエストごとに`email_intelligence_api`1ユニット（定価で$0.05）として課金されます。残高が不足している場合、リクエストは`403`を返します。
                  example: false
                email_intelligence_score_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    メールインテリジェンスのリスクスコアがしきい値を超えた場合のアクション。`DECLINE`は最終的な`status`を`Declined`に変更し、`NO_ACTION`は却下せずにシグナルを記録します。`enable_enrichment`が`true`の場合にのみ有効です。
                recent_email_breach_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    メールアドレスが最近の既知のデータ侵害に含まれている場合のアクション。`DECLINE`は最終的な`status`を`Declined`に変更し、`NO_ACTION`は却下せずにシグナルを記録します。`enable_enrichment`が`true`の場合にのみ有効です。
                frequent_email_breach_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    メールアドレスが多数の既知のデータ侵害に含まれている場合のアクション。`DECLINE`は最終的な`status`を`Declined`に変更し、`NO_ACTION`は却下せずにシグナルを記録します。`enable_enrichment`が`true`の場合にのみ有効です。
                enable_social:
                  type: boolean
                  default: false
                  description: >-
                    trueの場合、アドレスのソーシャルフットプリント（そのアドレスが登録されているメール、ソーシャル、ビジネス、EC、エンターテインメントの各プラットフォーム）も検索します。このエンドポイント自体の料金に加えて、リクエスト1件ごとに`email_social`1ユニット分が請求されます。
                  example: true
                email_no_social_presence_action:
                  type: string
                  enum:
                    - NO_ACTION
                    - DECLINE
                  default: NO_ACTION
                  description: >-
                    ソーシャルフットプリントチェックで、対象となるいずれのプラットフォームにもこのメールアドレスが登録されていないと判明した場合のアクション。このエンドポイントで指定できるのはNO_ACTIONとDECLINEのみです。REVIEWは、ワークフロー設定の同名のキーで利用できます。
              required:
                - email
                - code
            examples:
              Default:
                summary: リスクは記録するが、自動で却下は行わない
                value:
                  email: alice@example.com
                  code: '123456'
              Strict risk policy:
                summary: 使い捨てのメールボックスと漏洩したメールボックスを自動で却下
                value:
                  email: alice@example.com
                  code: '123456'
                  disposable_email_action: DECLINE
                  breached_email_action: DECLINE
      responses:
        '200':
          description: >-
            チェックが完了しました。誤ったコードや存在しない検証の場合も`200`が返るため、HTTPコードではなく`status`を確認してください。`email`は確定した結果（`Approved`/`Declined`）の場合のみ値が入り、`Failed`では`null`、`Expired
            or Not Found`では含まれません。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailVerificationCheckResponse'
              examples:
                Approved:
                  summary: 正しいコード。問題のないメールアドレス、完全なメールレポート
                  value:
                    request_id: e39cb057-92fc-4b59-b84e-02fec29a0f24
                    status: Approved
                    message: The verification code is correct.
                    email:
                      status: Approved
                      email: alice@example.com
                      is_breached: false
                      breaches: []
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 1
                      verified_at: '2026-06-12T01:24:47.311323Z'
                      warnings: []
                      lifecycle:
                        - type: EMAIL_VERIFICATION_MESSAGE_SENT
                          timestamp: '2026-06-12T01:23:39.580554+00:00'
                          details:
                            status: Success
                            reason: null
                          fee: 0.02
                        - type: VALID_CODE_ENTERED
                          timestamp: '2026-06-12T01:24:47.311201+00:00'
                          details:
                            code_tried: '123456'
                            status: Approved
                          fee: 0
                        - type: EMAIL_VERIFICATION_APPROVED
                          timestamp: '2026-06-12T01:24:47.384292+00:00'
                          details: null
                          fee: 0
                      matches: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-12T01:24:47.401719+00:00'
                Approved with breach exposure:
                  summary: 正しいコード。漏洩履歴が警告として記録される（breached_email_action=NO_ACTION）
                  value:
                    request_id: 3a1f2b6c-9d4e-4f7a-8b2c-1e5d6f7a8b9c
                    status: Approved
                    message: The verification code is correct.
                    email:
                      status: Approved
                      email: bob@example.com
                      is_breached: true
                      breaches:
                        - name: ExampleApp
                          domain: exampleapp.com
                          breach_date: '2019-03-21'
                          breach_emails_count: 763117
                          description: >-
                            In March 2019, the social platform ExampleApp
                            suffered a data breach that exposed email addresses
                            and passwords.
                          logo_path: https://<media-host>/logos/ExampleApp.png
                          data_classes:
                            - email_addresses
                            - passwords
                          is_verified: true
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 1
                      verified_at: '2026-06-12T01:24:47.311323Z'
                      warnings:
                        - feature: EMAIL
                          risk: BREACHED_EMAIL_DETECTED
                          additional_data: null
                          log_type: information
                          short_description: Breached email detected
                          long_description: >-
                            This email address was found in one or more known
                            data breaches.
                      lifecycle:
                        - type: EMAIL_VERIFICATION_MESSAGE_SENT
                          timestamp: '2026-06-12T01:23:39.580554+00:00'
                          details:
                            status: Success
                            reason: null
                          fee: 0.02
                        - type: VALID_CODE_ENTERED
                          timestamp: '2026-06-12T01:24:47.311201+00:00'
                          details:
                            code_tried: '835126'
                            status: Approved
                          fee: 0
                        - type: EMAIL_VERIFICATION_APPROVED
                          timestamp: '2026-06-12T01:24:47.384292+00:00'
                          details: null
                          fee: 0
                      matches: []
                    vendor_data: user-5678
                    metadata: null
                    created_at: '2026-06-12T01:24:47.401719+00:00'
                Failed (attempts remaining):
                  summary: コードが正しくありません。ユーザーは再試行できます。ここでのrequest_idは使い捨てのUUIDです
                  value:
                    request_id: 11111111-2222-3333-4444-555555555555
                    status: Failed
                    message: 'The verification code is incorrect. Attempts remaining: 2'
                    email: null
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-12T01:24:21.512340+00:00'
                Declined (risk policy):
                  summary: コードは正しいが、メールアドレスが使い捨てで、disposable_email_action=DECLINEの場合
                  value:
                    request_id: 8c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                    status: Declined
                    message: The verification code is correct.
                    email:
                      status: Declined
                      email: tempuser42@mailinator.com
                      is_breached: false
                      breaches: []
                      is_disposable: true
                      is_undeliverable: false
                      verification_attempts: 1
                      verified_at: '2026-06-12T01:24:47.311323Z'
                      warnings:
                        - feature: EMAIL
                          risk: DISPOSABLE_EMAIL_DETECTED
                          additional_data: null
                          log_type: error
                          short_description: Disposable email detected
                          long_description: >-
                            The system detected that the email is disposable,
                            which is not allowed.
                      lifecycle:
                        - type: EMAIL_VERIFICATION_MESSAGE_SENT
                          timestamp: '2026-06-12T01:23:39.580554+00:00'
                          details:
                            status: Success
                            reason: null
                          fee: 0.02
                        - type: VALID_CODE_ENTERED
                          timestamp: '2026-06-12T01:24:47.311201+00:00'
                          details:
                            code_tried: '123456'
                            status: Approved
                          fee: 0
                        - type: EMAIL_VERIFICATION_DECLINED
                          timestamp: '2026-06-12T01:24:47.384292+00:00'
                          details:
                            reason: DISPOSABLE_EMAIL_DETECTED
                          fee: 0
                      matches: []
                    vendor_data: user-1234
                    metadata: null
                    created_at: '2026-06-12T01:24:47.401719+00:00'
                Expired or Not Found:
                  summary: 過去5分間にこのメールアドレスの保留中の検証はありません
                  value:
                    request_id: 88808a77-06e9-4cb0-85f5-9c052ddfd987
                    status: Expired or Not Found
                    message: No pending email verification found in the last 5 minutes.
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-12T01:24:59.887904+00:00'
        '400':
          description: 検証エラー：DRFのフィールドエラーエンベロープです。問題のあるフィールドごとにメッセージの配列が1つ返されます。
          content:
            application/json:
              examples:
                Invalid email:
                  summary: メールアドレスの形式が不正です
                  value:
                    email:
                      - Enter a valid email address.
                Missing code:
                  summary: リクエストボディに`code`が含まれていません
                  value:
                    code:
                      - This field is required.
        '403':
          description: >-
            権限がありません。`x-api-key`ヘッダーがない場合に返されます。誤った、取り消された、または期限切れのキーの場合は`401`が返されます。チェックは無料のため、ここではクレジットの確認は行われません。
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: '`x-api-key`ヘッダーがないか、キーが無効または失効しています'
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            レート制限を超過しました。すべてのPOST/PATCH/DELETEエンドポイントは、APIキーごとに1分あたり300件の書き込みリクエストという共通の上限を共有します。レスポンスには`X-RateLimit-Limit`、`X-RateLimit-Remaining`、`X-RateLimit-Reset`、`Retry-After`ヘッダーが含まれます。
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: 現在の1分間に300件を超える書き込みリクエスト
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/email/check/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "alice@example.com",
                "code": "123456",
                "disposable_email_action": "DECLINE"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.email.check_code(
                email="alice@example.com",
                code="123456",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.email.checkCode({
              email: "alice@example.com",
              code: "123456",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.CheckCode(ctx, didit.EmailCheckCodeParams{\n\tEmail: \"alice@example.com\",\n\tCode:  \"123456\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;
            import me.didit.types.EmailCheckCodeParams;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.email().checkCode(EmailCheckCodeParams.builder()
                    .email("alice@example.com")
                    .code("123456")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->email->checkCode([
                'email' => 'alice@example.com',
                'code' => '123456',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.email.check_code(
              email: "alice@example.com",
              code: "123456"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Email.CheckCodeAsync(new
            EmailCheckCodeParams

            {
                Email = "alice@example.com",
                Code = "123456",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    EmailVerificationCheckResponse:
      type: object
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            `Approved`/`Declined`の場合は、一致した認証のセッションIDで、`POST
            /v3/email/send/`が返す`request_id`と同一です。`Failed`および`Expired or Not
            Found`の場合は、後から照会できないランダムな一回限りのUUIDです。
        status:
          type: string
          enum:
            - Approved
            - Declined
            - Failed
            - Expired or Not Found
          description: >-
            `Approved`：コードが正しく、却下となるリスクもありません。`Declined`：最終状態です。却下となるリスクに該当したか、試行回数の上限（3回）に達しました。`Failed`：コードが誤っており、試行回数が残っています。`Expired
            or Not Found`：直近5分以内に、このメールアドレスに対する保留中の認証がありません。
        message:
          type: string
          description: 結果を人が読める形で説明したもの。誤ったコードが入力された後の残り試行回数を含みます。
        email:
          type: object
          nullable: true
          description: >-
            メールの完全なレポート。最終的な結果（`Approved`/`Declined`）の場合にのみ存在し（null以外）、`Failed`の場合は`null`、`Expired
            or Not Found`の場合は含まれません。
          properties:
            status:
              type: string
              enum:
                - Approved
                - Declined
                - In Review
                - Not Finished
                - Expired
              description: メールアドレス認証の最終ステータスです。確定済みのチェックでは、トップレベルの`status`と一致します。
            email:
              type: string
              format: email
              description: 認証済みのメールアドレス。
              example: alice@example.com
            is_breached:
              type: boolean
              description: このアドレスが既知のデータ漏えいに含まれている場合は`true`です（漏えい情報の照会は確定時に実行されます）。
            breaches:
              type: array
              description: >-
                このメールアドレスを含む既知の漏洩のうち、最新のものを最大5件返します。`is_breached`が`false`の場合は空配列（または省略）です。
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: データ侵害の識別子。
                  domain:
                    type: string
                    description: 漏洩したサービスのドメインです。
                  breach_date:
                    type: string
                    format: date
                    description: データ侵害が発生した日付。
                  breach_emails_count:
                    type: integer
                    description: 侵害で流出したアカウントの総数。
                  description:
                    type: string
                    description: 情報漏えいの内容を人が読める形で説明したもの（HTMLマークアップを含む場合があります）。
                  logo_path:
                    type: string
                    description: 漏洩したサービスのロゴのURL。
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      漏洩したデータのカテゴリ。snake_caseで表されます（例:
                      `email_addresses`、`passwords`）。
                  is_verified:
                    type: boolean
                    description: 漏えいが正当なものとして検証済みかどうか。
            is_disposable:
              type: boolean
              description: ドメインが既知の使い捨て/一時メールプロバイダーに属する場合は`true`です。
            is_undeliverable:
              type: boolean
              description: >-
                このアドレスでメールを受信できない場合（構文またはDNS/MXの検証に失敗した場合、またはメッセージがバウンスした場合）は`true`です。
            verification_attempts:
              type: integer
              description: この認証でOTPを送信した回数（1、または再試行後は2）。
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: 正しいコードが入力された日時。認証が一度も承認されなかった場合は`null`。
            warnings:
              type: array
              description: 認証中に記録されたリスク警告(重複、漏洩、使い捨て、配信不能、試行回数超過、ブロックリストなど)。該当がない場合は空の配列です。
              items:
                type: object
                properties:
                  feature:
                    type: string
                    description: 警告を生成した機能。ここでは常に`EMAIL`です。
                  risk:
                    type: string
                    description: 機械可読なリスクコードです。
                  additional_data:
                    type: object
                    nullable: true
                    description: >-
                      リスク固有のコンテキスト(例:
                      重複リスクの場合は重複しているセッションID)。リスクに追加データがない場合は`null`です。
                  log_type:
                    type: string
                    enum:
                      - error
                      - warning
                      - information
                    description: >-
                      重大度。`error`のリスクは認証を却下し、`warning`はレビュー対象としてフラグを付け、`information`はステータスに影響を与えずに記録されます。
                  short_description:
                    type: string
                    description: リスクを人が読める形で1行にまとめた要約。
                  long_description:
                    type: string
                    description: リスクを人が読める形で説明したもの。
            lifecycle:
              type: array
              description: >-
                検証の監査証跡を時系列で示します。イベントの`type`は`EMAIL_VERIFICATION_MESSAGE_SENT`、`EMAIL_VERIFICATION_RETRY_MESSAGE_SENT`、`VALID_CODE_ENTERED`、`INVALID_CODE_ENTERED`、`EMAIL_VERIFICATION_APPROVED`、`EMAIL_VERIFICATION_DECLINED`、`EMAIL_VERIFICATION_IN_REVIEW`、`EMAIL_VERIFICATION_EXPIRED`のいずれかです。
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: イベントタイプです。
                  timestamp:
                    type: string
                    format: date-time
                    description: イベントが発生した日時。
                  details:
                    type: object
                    nullable: true
                    description: >-
                      イベント固有のペイロードです。送信イベント: `{status, reason}`。コード入力イベント:
                      `{code_tried, status}`。最終ステータスイベント:
                      `null`、または却下またはレビュー中の場合は`{reason}`。
                  fee:
                    type: number
                    description: >-
                      このイベントで請求されたUSD金額。最初の送信成功時にのみゼロ以外の値になり、再試行、コード入力、ステータスイベントでは0です。
            matches:
              type: array
              description: >-
                同じメールアドレスが別のユーザー（異なる`vendor_data`）によって使用された、あなたのアプリケーションの他のセッション（KYC、KYB、またはAPI）です。最大5件です。合成されたリストエントリのブロックリスト一致がある場合は先頭に追加されます（セッション由来のブロックリスト登録メールアドレスが存在しない場合のみ）。セッション由来の一致はcreated_atの順序を保持します。一致がない場合は空の配列です。
              items:
                type: object
                properties:
                  session_id:
                    type: string
                    format: uuid
                    description: このメールアドレスを使用した他の認証のセッションID。
                  session_number:
                    type: integer
                    description: そのセッションのわかりやすい連番。
                  vendor_data:
                    type: string
                    nullable: true
                    description: そのセッションの`vendor_data`です。
                  verification_date:
                    type: string
                    description: そのセッションが作成された日時（`YYYY-MM-DDTHH:MM:SSZ`）。
                  email:
                    type: string
                    description: 一致したメールアドレスです。
                  status:
                    type: string
                    description: そのセッションのステータス（例：`Approved`、`Declined`、`In Progress`）。
                  is_blocklisted:
                    type: boolean
                    description: メールアドレスがアプリケーションのブロックリストに登録されているかどうか。
                  api_service:
                    type: string
                    nullable: true
                    description: >-
                      APIタイプのセッションの場合、そのセッションを作成したスタンドアロンAPI（例：`PHONE_VERIFICATION`）。通常の認証セッションでは`null`です。
                  source:
                    type: string
                    description: >-
                      一致が見つかった場所です。通常は`session`です。組織のリストエントリ経由のブロックリスト一致では、`source:
                      "list_entry"`で`session_id`/`session_number`がnullの合成された一致が先頭に追加されます。
            email_social:
              $ref: '#/components/schemas/EmailSocialFootprint'
            email_intelligence:
              allOf:
                - $ref: '#/components/schemas/EmailIntelligence'
              description: メールインテリジェンスのシグナル。チェックで`enable_enrichment`が`true`だった場合にのみ含まれます。
        vendor_data:
          type: string
          nullable: true
          description: 一致した認証のセッションの`vendor_data`です。`Expired or Not Found`の場合は`null`です。
        metadata:
          type: object
          nullable: true
          description: 一致した認証のセッションの`metadata`。`Expired or Not Found`の場合は`null`。
        created_at:
          type: string
          format: date-time
          description: このチェックレスポンスの日時。
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        メールアドレスのソーシャルフットプリント:
        そのメールアドレスが登録されているオンラインプラットフォームです。`enable_social`が設定され、チェックが完了した場合にのみ含まれます。データが返されなかった項目の件数は、いずれもnullになる場合があります。`profiles_registered:
        0`は、プラットフォームがチェックされ、そのいずれにもメールアドレスが見つからなかったことを意味します。これは有効かつ課金対象の結果であり、合成IDによく見られる兆候です。
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: メールアドレスの登録が確認されたプラットフォーム。
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: 登録状況を評価したプラットフォーム。
          example: 14
        names_found:
          type: integer
          nullable: true
          description: 関連付けられた名前を返したプラットフォーム。
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: プロフィール写真を返したプラットフォーム。
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: 存在が検出されたコミュニケーションプラットフォーム。
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: 存在が検出された個別のプラットフォームカテゴリ。
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: デジタル成熟度の総合指標（0-10）。
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: プロフィールの充実度を示す指標(0-10)。
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: 無料プラットフォームと有料プラットフォームの構成比（0-10）。
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: 無料プラットフォームでの登録。
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: 完全有料プラットフォームでの登録。
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: フリーミアムプラットフォームでの登録。
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: WhatsAppプロフィールの充実度。電話番号のみ対象で、メールアドレスの場合はnullです。
          example: Partial
        registered_platforms:
          type: array
          description: 登録が確認されたプラットフォーム。
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: 確認の結果、否定的な結果となったプラットフォーム。
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: プラットフォームカテゴリごとの登録数と割合。
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: プラットフォームが公開している場合の、プラットフォームごとのプロフィール詳細です。プラットフォームをキーとします。
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        正規化されたメールインテリジェンスブロック。このメールアドレスに対してインテリジェンスアドオンが実行された場合にのみ存在します。存在する場合は、同一の値を持つ`enrichment`エイリアスとしても公開されます。
      properties:
        score:
          type: number
          nullable: true
          description: 0-100に正規化されたリスクスコア。値が高いほどリスクが高くなります。
        deliverable:
          type: string
          nullable: true
          description: 配信可能性の区分(例:`high`)。
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`、`Medium`、`High`のいずれかです。'
        breach_risk_index:
          type: number
          nullable: true
          description: 情報漏えいリスクの数値指標です。
        is_recent_breach:
          type: boolean
          nullable: true
          description: このアドレスが最近の情報漏えいに含まれている場合は`true`です。
        is_frequent_breached:
          type: boolean
          nullable: true
          description: このアドレスが多数の情報漏えいに含まれている場合は`true`です。
        is_disposable:
          type: boolean
          nullable: true
          description: ドメインが使い捨てメールプロバイダーである場合は`true`です。
        is_free_domain:
          type: boolean
          nullable: true
          description: ドメインがフリーメールプロバイダーである場合は`true`です。
        is_breached:
          type: boolean
          nullable: true
          description: このアドレスが既知の情報漏えいに含まれている場合は`true`です。
        no_of_breaches:
          type: number
          nullable: true
          description: このメールアドレスを含む既知のデータ侵害の数。
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  シグナルの不変のDidit識別子。例:
                  `IR-5AC67A32`。不透明な値のため、グループ化やフィルターには使用できますが、解析はしないでください。
              value:
                nullable: true
                description: >-
                  リスクフラグ（例：`voip`、`leaked`、`disposable`、`spam_trap`）の場合、その値です：真偽値、レベル、または日付。スコア付きの理由コードではnullです。
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: シグナルがリスクを高めたか、信頼を加えたか。
              message:
                type: string
                description: シグナルを人が読める形で説明したもの（英語）。
              impact_level:
                type: string
                nullable: true
                description: シグナルがスコアに与えた影響の強さ。例：`low`、`medium`、`high`。
          description: >-
            スコアの根拠となるシグナル。それぞれに安定したDiditコード、方向、メッセージ、影響度があります。新しいコードが今後追加される可能性があるため、未知のコードを拒否しないでください。
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: プラットフォーム識別子。
          example: whatsapp
        category:
          type: string
          description: >-
            プラットフォームのカテゴリー。例:
            MESSAGING、SOCIAL_MEDIA、ECOMMERCE、PROFESSIONAL、EMAIL_PROVIDER。
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: グローバルなプラットフォームの場合は`global`、地域限定のプラットフォームの場合は`local`。
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: このカテゴリーのうち、登録が確認されたプラットフォーム。
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: そのカテゴリでチェックしたプラットフォームのうち、登録があるものの割合（0.0〜1.0）。
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: プロフィール名。プラットフォームが公開している場合に返されます。
        photo:
          type: string
          nullable: true
          description: プロフィール写真のURL。プラットフォームが公開している場合に返されます。
        about:
          type: string
          nullable: true
          description: プロフィールの自己紹介文。プラットフォームが公開している場合に返されます。
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: プロフィールの公開設定。プラットフォームが公開している場合に返されます。
        business_account:
          type: boolean
          nullable: true
          description: プラットフォームが公開している場合、プロフィールがビジネスアカウントかどうか。
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API
        keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権（なし、読み取り、書き込み）、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください:
        https://docs.didit.me/console/api-keys

````

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