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

# Peringatan & Kode Risiko Verifikasi Email

> Referensi kode risiko Verifikasi Email Didit: BREACHED_EMAIL_DETECTED, DISPOSABLE_EMAIL_DETECTED, UNDELIVERABLE_EMAIL_DETECTED, & daftar blokir.

Fitur Verifikasi Email memunculkan **peringatan** setiap kali sinyal risiko terpicu pada alur OTP atau alamat itu sendiri: kebocoran data yang diketahui, penyedia sekali pakai, kotak surat yang tidak dapat menerima email, batas upaya OTP, atau kecocokan terhadap daftar blokir Anda atau verifikasi lain yang telah disetujui. Halaman ini mencantumkan setiap kode, pemicunya, dan cara mengonfigurasi respons alur kerja.

## Ringkasan

Peringatan ditandai dengan fitur `EMAIL`. Peringatan ini muncul pada laporan di bawah `email_verifications[].warnings[]` dan mengikuti bentuk [objek peringatan](https://docs.didit.me/id/reference/data-models.md#objek-peringatan) standar (`feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`). Setiap peringatan juga dirutekan ke dalam log per sesi sehingga muncul di Business Console pada bagian Email.

Beberapa peringatan merupakan pemicu **penolakan otomatis mutlak** — peringatan ini selalu menetapkan status fitur menjadi `Declined` dan memiliki `log_type: "error"`. Peringatan lainnya dipetakan ke **tindakan yang dapat dikonfigurasi** (`DECLINE`, `REVIEW`, atau bawaan `NO_ACTION`) yang ditentukan per node alur kerja atau per panggilan API, sehingga kode risiko yang sama dapat menolak satu alur kerja sembari hanya menandai alur kerja lainnya. Tindakan yang dikonfigurasi juga menentukan tingkat keparahan: `DECLINE` → `error`, `REVIEW` → `warning`, `NO_ACTION` → `information`.

## Kondisi Penolakan Otomatis

Peringatan berikut selalu menolak langkah Verifikasi Email terlepas dari konfigurasi:

* `EMAIL_CODE_ATTEMPTS_EXCEEDED` — pengguna telah menghabiskan kuota OTP: 2 kali entri kode yang salah (`email_max_check_attempts`) atau 2 pengiriman OTP — pengiriman awal ditambah satu pengiriman ulang (`email_max_retries`) — secara bawaan.
* `EMAIL_IN_BLOCKLIST` — alamat berada dalam daftar blokir yang dikelola melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md), atau cocok dengan verifikasi email yang telah disetujui sebelumnya yang masuk daftar blokir.
* `UNDELIVERABLE_EMAIL_DETECTED` — alamat tidak dapat menerima email: sintaksis tidak valid, domain tidak ada, catatan DNS (MX) hilang, atau email OTP tidak dapat dikirimkan. Langkah ini langsung diselesaikan dengan status `Declined` — pemeriksaan kode tidak akan pernah dijalankan. Pengecualian: ketika pengguna mengetik sendiri alamatnya (tidak diisi sebelumnya saat pembuatan sesi), pengiriman yang gagal terkirim mengembalikan error inline sehingga mereka dapat mencoba lagi dengan alamat berbeda alih-alih ditolak.

## Risiko yang Dapat Dikonfigurasi

Setiap risiko berikut dipetakan ke pengaturan (per node alur kerja, atau per panggilan pada [endpoint pemeriksaan](https://docs.didit.me/id/standalone-apis/email-check.md) mandiri) yang dapat Anda konfigurasikan ke `DECLINE`, `REVIEW`, atau `NO_ACTION`:

| Pengaturan | Kode risiko | Perilaku bawaan |
| - | - | - |
| `breached_email_action` | `BREACHED_EMAIL_DETECTED` | `NO_ACTION` — menampilkan detail kebocoran pada tingkat `information` tanpa mengubah status. |
| `disposable_email_action` | `DISPOSABLE_EMAIL_DETECTED` | `NO_ACTION` — menandai penyedia sekali pakai pada tingkat `information` tanpa mengubah status. |
| `duplicated_email_action` | `DUPLICATED_EMAIL` | `NO_ACTION` — mencatat duplikat pada tingkat `information`. Dilewati jika alamat dimasukkan ke daftar izin. |

Deteksi duplikat hanya mempertimbangkan verifikasi email yang **telah disetujui sebelumnya** dalam aplikasi yang sama, yang dikelompokkan berdasarkan `vendor_data` — verifikasi yang berbagi `vendor_data` yang sama diperlakukan sebagai satu pengguna akhir dan dikecualikan. Biarkan `vendor_data` kosong dan setiap sesi akan diperlakukan sebagai pengguna yang berbeda. Jika alamat berada di daftar izin email Anda, tindakan duplikat akan dilewati dan `EMAIL_IN_ALLOWLIST` akan dimunculkan sebagai gantinya.

## Batas Upaya Verifikasi

Fitur Verifikasi Email menerapkan batas mutlak pada upaya OTP untuk mencegah penyalahgunaan:

* **Upaya entri kode** — `email_max_check_attempts`, bawaan **2**: kode salah (atau kedaluwarsa) kedua akan menyelesaikan langkah.
* **Upaya pengiriman** — `email_max_retries`, bawaan total **2** pengiriman (pengiriman awal ditambah satu pengiriman ulang): permintaan pengiriman ulang berikutnya akan menyelesaikan langkah.

Melebihi salah satu batas akan memunculkan `EMAIL_CODE_ATTEMPTS_EXCEEDED` dan menolak secara otomatis. Anda dapat menyesuaikan kedua batas per node alur kerja.

## Peringatan yang dihasilkan

| Tag | Tingkat keparahan | Deskripsi |
| - | - | - |
| `EMAIL_CODE_ATTEMPTS_EXCEEDED` | `error` | Pengguna melampaui batas input kode atau pengiriman. Ditolak secara otomatis. |
| `EMAIL_IN_BLOCKLIST` | `error` | Alamat terdapat dalam daftar blokir yang dibuat melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md), atau cocok dengan verifikasi disetujui yang masuk daftar blokir. Ditolak secara otomatis. `additional_data` memuat `blocklisted_session_id`, `blocklisted_session_number`, dan `api_service` (semuanya `null` untuk kecocokan murni dari daftar). |
| `EMAIL_IN_ALLOWLIST` | `information` | Alamat cocok dengan daftar izin yang dibuat melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md), sehingga tindakan email duplikat dilewati. |
| `BREACHED_EMAIL_DETECTED` | Sesuai `breached_email_action` (secara default `information`) | Alamat ditemukan dalam satu atau beberapa kebocoran data yang diketahui. Larik `breaches[]` pada laporan memuat layanan yang bocor, tanggal, dan kelas data. |
| `DISPOSABLE_EMAIL_DETECTED` | Sesuai `disposable_email_action` (secara default `information`) | Domain merupakan penyedia email sementara / sekali pakai yang diketahui dan sering digunakan untuk menghindari ketertelusuran. |
| `UNDELIVERABLE_EMAIL_DETECTED` | `error` | Alamat tidak dapat menerima email (sintaksis tidak valid, domain tidak ada, record MX hilang, atau pengiriman gagal). Ditolak secara otomatis. |
| `DUPLICATED_EMAIL` | Sesuai `duplicated_email_action` (secara default `information`) | Alamat cocok dengan verifikasi email yang telah disetujui sebelumnya milik pengguna akhir yang berbeda (dikelompokkan berdasarkan `vendor_data`). `additional_data` memuat `duplicated_session_id`, `duplicated_session_number`, dan `api_service`. |

Paling banyak satu dari `EMAIL_IN_BLOCKLIST`, `DUPLICATED_EMAIL`, dan `EMAIL_IN_ALLOWLIST` yang terpicu per percobaan — daftar blokir lebih diutamakan daripada duplikat, dan duplikat lebih diutamakan daripada daftar izin.

## Kecocokan lintas sesi

Ketika suatu alamat terdeteksi pada verifikasi email yang telah disetujui sebelumnya atau pada daftar blokir Anda, kecocokan tersebut juga muncul di bawah `email_verifications[].matches[]` (dibatasi hingga 5 entri). Setiap kecocokan memuat `session_id`, `session_number`, `vendor_data`, `verification_date`, `email`, `status`, `is_blocklisted`, `api_service`, dan `source` berupa `session` (verifikasi disetujui lainnya) atau `list_entry` (entri daftar blokir). Jika alamat saat ini ada di daftar izin email Anda, Didit tetap menyimpan bukti kecocokan tetapi memunculkan `EMAIL_IN_ALLOWLIST` alih-alih menerapkan tindakan email duplikat. Lihat [laporan Verifikasi Email](https://docs.didit.me/id/core-technology/email-verification/report-email-verification.md#kecocokan-lintas-sesi) untuk skema kecocokan lengkap.

## Contoh

```json theme={null}
{
  "warnings": [
    {
      "feature": "EMAIL",
      "risk": "EMAIL_IN_BLOCKLIST",
      "additional_data": {
        "blocklisted_session_id": null,
        "blocklisted_session_number": null,
        "api_service": null
      },
      "log_type": "error",
      "short_description": "Email in blocklist",
      "long_description": "The system detected that the email is in the blocklist, which is not allowed.",
      "node_id": "feature_email_1"
    },
    {
      "feature": "EMAIL",
      "risk": "DISPOSABLE_EMAIL_DETECTED",
      "additional_data": null,
      "log_type": "information",
      "short_description": "Disposable email detected",
      "long_description": "The system detected that the email is disposable, which is not allowed.",
      "node_id": "feature_email_1"
    }
  ]
}
```

## Jenis peringatan

Setiap risiko diberi tingkat keparahan berdasarkan konfigurasi aplikasi Anda. Tingkat keparahan terbagi ke dalam tiga kategori:

## Terkait

* [Gambaran umum Verifikasi Email](https://docs.didit.me/id/core-technology/email-verification/overview.md) — perilaku fitur dan harga.
* [Laporan Verifikasi Email](https://docs.didit.me/id/core-technology/email-verification/report-email-verification.md) — bentuk respons lengkap termasuk `lifecycle[]` dan `matches[]`.
* [Model data — verifikasi email](https://docs.didit.me/id/reference/data-models.md#verifikasi-email) — skema kanonik kolom demi kolom.
* [Management API — Lists](https://docs.didit.me/id/management-api/lists/overview.md) — kelola daftar blokir email yang digunakan oleh `EMAIL_IN_BLOCKLIST`.


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