> ## 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 Verifikasi Email: OTP & Penilaian Risiko

> Verifikasi email via Didit dengan OTP & penilaian risiko. Deteksi email bocor & sekali pakai. Bayar per panggilan $0.02 tanpa minimum bulanan.

Verifikasi Email Didit menyediakan metode yang andal untuk memverifikasi alamat email pengguna melalui kode sekali pakai (OTP) dan penilaian risiko lanjutan. Fitur ini membantu memastikan informasi kontak yang valid dan dapat digunakan untuk menghubungi pengguna sekaligus melindungi dari email berisiko tinggi dan yang telah disusupi.

Prompt Integrasi Verifikasi Email
        Salin prompt ke papan klip



      
      

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



      
      

Tempel ke

Pelajaran Academy tentang membaca hasil verifikasi sampai pada pemeriksaan verifikasi email pada menit 8:34.[Verifikasi Email — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=514\&rel=0\&playsinline=1)![Diagram alur Verifikasi Email](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)## Cara kerjanyaSolusi Verifikasi Email kami menggabungkan verifikasi OTP dengan sinyal intelijen seperti paparan kebocoran data, keterkiriman, dan reputasi penyedia.**1. Pengumpulan Email**Sistem mengumpulkan dengan aman:| Input | Deskripsi |
| - | - |
| **Alamat email** | Jika tidak diberikan saat pembuatan sesi, pengguna memasukkan alamat email mereka. Jika diberikan saat pembuatan sesi, pengguna harus memverifikasi email yang telah terisi sebelumnya. |
| **Bahasa Pilihan** | Digunakan untuk komunikasi yang dilokalkan jika berlaku. |**2. Pembuatan & Pengiriman OTP**Sistem verifikasi kami:- Menghasilkan kode sekali pakai yang aman dan memiliki batas waktu
- Mengirimkan kode melalui email ke alamat yang diberikan
- Menerapkan praktik terbaik keterkiriman untuk memaksimalkan kemungkinan email masuk ke kotak masuk
- Menyediakan alur pengiriman ulang dengan perlindungan untuk mencegah penyalahgunaan**3. Validasi Kode**Pengguna menyelesaikan verifikasi dengan:- Memasukkan kode yang diterima ke dalam antarmuka verifikasi
- Mengirimkannya dalam batas waktu yang dikonfigurasi (5 menit)
- Meminta kode baru jika diperlukan (dengan batas laju yang sesuai)**4. Penilaian Risiko**Sistem kami melakukan pemeriksaan lanjutan:| Pemeriksaan | Deskripsi |
| - | - |
| **Paparan Kebocoran Data** | Mencari email dalam berbagai kebocoran data yang diketahui dan mencantumkan layanan yang terekspos. |
| **Deteksi Penyedia Sekali Pakai** | Menandai email dari penyedia sementara/sekali pakai. |
| **Pemeriksaan Keterkiriman** | Mendeteksi alamat yang tidak dapat dikirimi email atau memiliki sintaksis yang tidak valid. |
| **Sinyal Reputasi** | Mengidentifikasi pola email yang berpotensi memiliki risiko tinggi. |
| **Penggunaan Duplikat** | Mencocokkan dengan data verifikasi historis. |**5. Pengiriman Hasil**Akses hasil verifikasi melalui berbagai saluran:| Saluran | Deskripsi |
| - | - |
| **Dasbor** | Pembaruan dasbor secara real-time. |
| **Webhook** | Notifikasi webhook. |
| **API** | Respons RESTful API. |
| **Laporan** | Laporan komprehensif dengan informasi verifikasi terperinci. |## Fitur VerifikasiLayanan Verifikasi Email kami menawarkan beberapa fitur utama untuk meningkatkan proses verifikasi Anda:#### Verifikasi OTP- **Pembuatan Kode yang Aman**: Kode sekali pakai acak yang terikat waktu
- **Pengiriman Email**: Pengiriman email yang andal dan dilokalkan
- **Batas Waktu yang Dapat Dikonfigurasi**: Atur waktu kedaluwarsa berdasarkan persyaratan keamanan Anda
- **Opsi Coba Lagi**: Mengizinkan pengguna meminta kode baru dengan batas yang sesuai#### Analisis Email- **Validasi Sintaksis**: Memastikan alamat email mengikuti format yang mematuhi RFC
- **Pemeriksaan Penyedia**: Mengidentifikasi penyedia sementara/sekali pakai
- **Wawasan Keterkiriman**: Mendeteksi alamat yang tidak dapat dikirimi email
- **Intelijen Kebocoran**: Menampilkan catatan kebocoran yang diketahui beserta detailnya#### Penilaian Risiko- **Deteksi Paparan**: Mengidentifikasi apakah email muncul dalam kebocoran data yang diketahui
- **Deteksi Email Sekali Pakai**: Menandai email sementara atau buangan
- **Pemantauan Aktivitas**: Melacak pola mencurigakan di berbagai percobaan
- **Pemeriksaan Daftar Blokir**: Memeriksa email terhadap daftar internal email yang sebelumnya disalahgunakan


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