Verifikasi email apa pun. Saring alamat palsu saat pendaftaran.
Tangkap email palsu, sekali pakai, dan yang bocor sebelum masuk ke database Anda. Satu panggilan API mencakup sintaks, deliverability, intelijen penyedia, dan OTP (one-time passcode) enam digit. $0.03 per pemeriksaan, 500 gratis/bulan.
Dipercaya oleh 2.000+ organisasi di seluruh dunia.
Bukan cuma sintaks
MX, disposable, role, dan skor risiko.
Kami menguji deliverability secara langsung, menandai alamat sekali pakai dan role, lalu mengembalikan skor risiko yang bisa jadi patokan workflow Anda. $0.03 per pemeriksaan.
Cara kerjanya
Dari pendaftaran sampai jadi user terverifikasi, cuma empat langkah.
Langkah 01
Buat workflow-nya
Pilih pemeriksaan yang Anda inginkan, ID, liveness, face match, sanksi, alamat, usia, telepon, email, pertanyaan kustom. Seret ke dalam flow di dashboard, atau post flow yang sama ke API kami. Buat cabang berdasarkan kondisi, jalankan A/B test, tanpa perlu coding.
Langkah 02
Integrasikan
Integrasikan secara native dengan SDK Web, iOS, Android, React Native, atau Flutter kami. Redirect ke halaman yang di-host. Atau cukup kirim link ke user Anda, via email, SMS, WhatsApp, di mana saja. Pilih yang paling cocok dengan stack Anda.
Langkah 03
User menjalani flow-nya
Didit menyediakan kamera, isyarat pencahayaan, mobile hand-off, dan aksesibilitas. Saat user menjalani flow, kami menilai 200+ sinyal fraud secara real-time dan memverifikasi setiap field dengan sumber data otoritatif. Hasilnya kurang dari dua detik.
Langkah 04
Anda menerima hasilnya
Webhook terautentikasi secara real-time menjaga database Anda tetap sinkron saat user disetujui, ditolak, atau dikirim untuk ditinjau. Poll API sesuai permintaan. Atau buka konsol untuk memeriksa setiap sesi, setiap sinyal, dan mengelola kasus sesuai keinginan Anda.
Dibuat untuk developer · Dibuat untuk melawan fraud · Desain terbuka
Enam kapabilitas. Satu feature flag. EMAIL_VERIFICATION.
Setiap kapabilitas adalah toggle pada modul yang sama. Tanpa tingkatan upsell, tanpa paket terpisah, tanpa panggilan add-on. Aktifkan per workflow di konsol atau teruskan secara inline pada panggilan API.
Sintaks, mail records, dan live probe, setiap panggilan.
Kami mengurai sintaks, mencari record MX (mail exchange), dan membuka koneksi ke server tujuan untuk mengonfirmasi bahwa alamat dapat dijangkau. Responsnya mencakup boolean bersih yang bisa jadi patokan workflow Anda.
Deliverability stackalex.sample@flytap.com
Sintaks RFC 5322Local-part + domain di-parse
MX lookup1 record · 10 ms
SMTP probe250 OK · menerima email
is_undeliverablefalse
02 · Provider intelligence
Email sekali pakai. Penyedia gratis. Saring dari awal.
Katalog terbaru layanan sekali pakai (10minutemail, mailinator, guerrilla), penyedia gratis (Gmail, Outlook, Yahoo, ProtonMail), dan layanan masking yang baru muncul. Setiap tag dipetakan ke tindakan tolak, tinjau, atau setujui yang Anda sesuaikan per aplikasi.
03 · Breach exposure
Ketahui apakah inbox-nya pernah bocor. Sebelum di-onboard.
Setiap alamat diperiksa terhadap database pelanggaran yang teragregasi. Responsnya mencantumkan setiap kebocoran yang melibatkan alamat tersebut, nama, tanggal pelanggaran, kelas data yang terekspos, sehingga tim kepatuhan Anda memiliki jejak bukti untuk pencatatan AML (anti-money laundering).
04 · Konfirmasi OTP
Kode enam digit. Validitas lima menit. Template terlokalisasi.
Gunakan layar entri yang kami host atau formulir Anda sendiri. Dua kali percobaan per sesi, dua kali pengiriman ulang per 24 jam, validitas lima menit, setiap batasan diberlakukan untuk Anda. Template otomatis terlokalisasi ke bahasa pilihan user.
05 · Anti-penyalahgunaan
Deteksi catch-all. Filter berbasis peran. Duplikasi lintas sesi.
Peringatan yang dapat dikonfigurasi menampilkan setiap pola penyalahgunaan: breached, disposable, duplikat di seluruh sesi, atau masuk daftar blokir. Dua penolakan otomatis (terlalu banyak percobaan, alamat tidak dapat dikirim) tetap diberlakukan terlepas dari kebijakan. Alamat catch-all dan berbasis peran terdeteksi sebelum kode dikirim.
Kebijakan risiko5 peringatan · 3 tindakan
EMAIL_CODE_ATTEMPTS_EXCEEDEDTolak otomatis
EMAIL_IN_BLOCKLISTTolak otomatis
DISPOSABLE_EMAIL_DETECTEDTolak
BREACHED_EMAIL_DETECTEDTinjau
DUPLICATED_EMAILTinjau
06 · Harga
$0.03 per pemeriksaan. 500 gratis setiap bulan. Selamanya.
Harga $0.03 yang sama untuk hosted flow dan standalone API. Tanpa biaya platform, tanpa minimum bulanan, tanpa kejutan biaya berlebih. Gabungkan Email Verification di depan pemeriksaan know-your-customer (KYC) lengkap seharga $0.33 untuk menyaring pendaftaran sampah sebelum menghabiskan kredit.
PenagihanPublik · per pemeriksaan
Per pemeriksaan
$0.03
Jalur A atau Jalur B
Paket gratis
500/mo
Selamanya, tanpa kartu
Tanpa minimumBayar per keberhasilan
Terhubung ke KYCbundel +$0.33
Integrasikan
Dua endpoint. JSON yang sama. Harga yang sama.
Pilih hosted flow jika Anda ingin kami menangani entri kode dan menghubungkannya ke workflow yang lebih luas. Pilih standalone API jika Anda mengelola UI-nya sendiri. Keduanya mengembalikan laporan yang sama.
Tempel blok di bawah ini ke Claude Code, Cursor, Codex, Devin, Aider, atau Replit Agent. Isi stack Anda. Agent akan memprovisi Didit, membuat workflow Verifikasi Email, menyambungkan webhook, dan deploy.
didit-integration-prompt.md
# Didit Email Verification — integrate in 5 minutes
You are integrating Didit's Email Verification module into <my_stack>.
Follow these steps exactly. Every URL, header, and enum value below is
canonical — do not paraphrase or "improve" them. The module covers:
syntax validation, MX (Mail Exchange) lookup, SMTP (Simple Mail Transfer
Protocol) deliverability probe, disposable-provider detection,
free-provider detection, breach exposure lookup (HaveIBeenPwned-style),
catch-all + role-based anti-abuse signals, OTP (one-time password)
confirmation, and a configurable risk policy that can chain straight
into a Know Your Customer (KYC) (know your customer) workflow.
## 1. Provision an account
- Sign up: https://business.didit.me (no credit card required).
- Or provision programmatically: POST https://apx.didit.me/auth/v2/programmatic/register/
(returns an API key bound to the workspace + application).
## 2. Two integration paths — pick one
### Path A — Workflow Builder (hosted UI)
Best when you want Didit to host the OTP entry screen, localize the
email template, handle resend cool-downs, and chain Email Verification
into a wider KYC / KYB workflow.
1. Create a workflow that contains the EMAIL_VERIFICATION feature:
POST https://verification.didit.me/v3/workflows/
Authorization header: x-api-key: <your-api-key>
Body: workflow_label, features array with the single entry
{ feature: "EMAIL_VERIFICATION" } (UPPERCASE — strict enum)
Optional config: per-warning action overrides (Decline / Review /
Approve) for BREACHED_EMAIL_DETECTED, DISPOSABLE_EMAIL_DETECTED,
DUPLICATED_EMAIL, and EMAIL_IN_BLOCKLIST.
2. Create a verification session for an end user:
POST https://verification.didit.me/v3/session/
Body: workflow_id (from step 1), vendor_data (your own user id),
optional contact_details.email (pre-fills the OTP step).
Response: session_url — redirect the user to it.
3. Listen for webhook callbacks (see "Webhooks" below).
### Path B — Standalone server-to-server API
Best when you already own the OTP UI and just want Didit to send and
validate the code plus return the risk signals.
Two endpoints, both authenticated with x-api-key:
POST https://verification.didit.me/v3/email/send/
Body (application/json):
- email (required, string — RFC 5322 address)
- language (optional, ISO 639-1 code — picks the email template)
- vendor_data (optional string, your user id)
Returns: { reference_id }
POST https://verification.didit.me/v3/email/check/
Body (application/json):
- reference_id (required, from /email/send/)
- code (required, 6-digit string the user typed)
Returns: the full email-verification report (see Section 4).
Use the same vendor_data on retries so cross-session matches work.
## 3. Webhooks (Path A only — Path B returns synchronously)
- Register a webhook destination once via
POST https://verification.didit.me/v3/webhook/destinations/
Body: url, subscribed_events: ["session.verified",
"session.review_started",
"session.declined"]
- Response includes secret_shared_key — store it.
- Every webhook delivery carries an X-Signature-V2 header you MUST verify
before trusting the payload. HMAC-SHA256 verification MUST run against the raw body bytes (the raw payload as Didit sent it) BEFORE any JSON parsing — re-serialising the parsed body changes whitespace and key order, which invalidates the signature.Algorithm:
1. sortKeys(payload) recursively
2. shortenFloats (truncate trailing zeros after the decimal point)
3. JSON.stringify the result
4. HMAC-SHA256 with the secret_shared_key
5. Hex-encode, compare to the X-Signature-V2 header.
Two module-level event types fire alongside the session events above:
- EMAIL_VERIFICATION_MESSAGE_SENT — OTP was dispatched
- EMAIL_VERIFICATION_DECLINED — verification finished with a
Declined status (caller should
surface the warning to the user)
## 4. Reading the report (both paths return the same shape)
The email object includes:
- status: "Approved" | "Declined" | "In Review" | "Not Finished"
- email: the address that was verified
- is_breached: boolean — true when the address appears in known breaches
- breaches: array of { name, domain, logo_path, breach_date,
description, is_verified, data_classes,
breach_emails_count }
- is_disposable: boolean — true for throwaway providers
- is_undeliverable: boolean — true when MX + SMTP probe failed
- verification_attempts: number — OTP attempts used (max 2)
- verified_at: ISO 8601 timestamp
- matches: array of cross-session hits, each carrying session_id,
session_number, vendor_data, verification_date, email,
status, is_blocklisted
- warnings: Array<{ risk, additional_data, log_type,
short_description, long_description }>
Auto-decline risks (always enforced by Didit, not configurable):
- EMAIL_CODE_ATTEMPTS_EXCEEDED
- EMAIL_IN_BLOCKLIST
- UNDELIVERABLE_EMAIL_DETECTED
Configurable risks (action per workflow — Decline, Review, or Approve):
- BREACHED_EMAIL_DETECTED (exposure / breach intelligence)
- DISPOSABLE_EMAIL_DETECTED (temporary / throwaway provider)
- DUPLICATED_EMAIL (cross-session match on another user)
Anti-abuse limits (enforced server-side):
- Code Entry Attempts: max 2 tries to type the right OTP
- Code Resend Requests: max 2 resends per 24 hours
- Code Validity: 5 minutes from delivery
## 5. Chaining Email Verification into a KYC flow
EMAIL_VERIFICATION is a regular feature inside the Workflow Builder, so
it composes with any of the 25+ other modules. The canonical patterns:
- Cheap pre-filter: gate KYC behind Email Verification so disposable +
breached + undeliverable signups never burn a $0.33 KYC bundle. Use a
conditional branch — if status is Declined on email, skip
ID_VERIFICATION + LIVENESS + FACE_MATCH.
- Compliance log: keep Email Verification in the flow even when KYC is
the primary check, so the verified email is timestamped and signed
alongside the ID Verification report for Anti-Money Laundering (AML) (anti-money laundering)
recordkeeping.
- Step-up auth: rerun Email Verification at a sensitive action (large
withdrawal, password reset) using the same workflow + vendor_data
for closed-loop continuity.
## 6. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: EMAIL_VERIFICATION, ID_VERIFICATION,
LIVENESS, FACE_MATCH, AML, IP_ANALYSIS, PHONE_VERIFICATION.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Always verify webhook signatures before trusting payload data.
- Status casing matches exactly: "Approved", "Declined", "In Review",
"Not Finished" (title-cased, space-separated).
## 7. Pricing reference (public)
- Email Verification: $0.03 per check (Path A or Path B).
- Bundled inside a full KYC workflow: same $0.03 add-on — the $0.33
full-KYC bundle does not include EMAIL_VERIFICATION by default.
- 500 free checks every month, forever, on every account.
## 8. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Test emails: deterministic synthetic addresses returned in sandbox
(Approved by default; trigger Declined by sending the canonical
disposable / breached test addresses listed in the docs).
- Switch to live: flip the application's environment toggle in console.
When in doubt: https://docs.didit.me/core-technology/email-verification/overview
Dirancang untuk kepatuhan
Buka negara baru dengan satu klik. Kami yang mengerjakan bagian sulitnya.
Kami membuka anak perusahaan lokal, mengamankan lisensi, menjalankan pengujian penetrasi, mendapatkan sertifikasi, dan menyelaraskan dengan setiap regulasi baru. Untuk meluncurkan verifikasi di negara baru, cukup aktifkan tombol. 220+ negara sudah aktif, diaudit dan diuji penetrasi setiap kuartal, satu-satunya penyedia identitas yang secara formal disebut oleh pemerintah negara anggota Uni Eropa lebih aman daripada verifikasi langsung.
Per pemeriksaan, harga sama untuk hosted flow atau API standalone.
0
Verifikasi email gratis setiap bulan, selamanya, di setiap akun.
0 min
Validitas kode sekali pakai, semua batasan diterapkan untuk Anda.
0
Kode peringatan yang bisa dikonfigurasi, ditambah 3 penolakan otomatis yang diterapkan.
Tiga tingkatan, satu daftar harga
Mulai gratis. Bayar sesuai penggunaan. Skala ke Enterprise.
500 verifikasi gratis setiap bulan, selamanya. Pay-as-you-go untuk produksi. Kontrak kustom, data residency, dan SLA (Service Level Agreements) untuk Enterprise.
Gratis
Gratis
$0 / bulan. Tidak perlu kartu kredit.
Paket KYC gratis (Verifikasi ID + Passive Liveness + Face Match + Analisis Perangkat & IP), 500 / bulan, setiap bulan
User yang masuk daftar hitam
Deteksi Duplikat
200+ sinyal fraud di setiap sesi
KYC yang dapat digunakan kembali di seluruh jaringan Didit
Platform Manajemen Kasus
Workflow Builder
Dokumentasi publik, sandbox, SDK, server MCP (Model Context Protocol)