> ## 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 Risiko Email: Deliverability & Sinyal Kebocoran

> Nilai risiko alamat email tanpa mengirim OTP. Sinyal deliverability, domain sekali pakai, kebocoran, dan fraud dalam satu panggilan server-to-server dari Didit.

Gunakan `POST /v3/email/risk/` saat Anda memerlukan intelijen email tanpa meminta pengguna memasukkan kode sekali pakai.

Permintaan ini tidak mengirim email. Permintaan ini membuat sesi API, memperkaya alamat tersebut, menerapkan aturan risiko email Anda, lalu mengembalikan blok email yang dinormalisasi, yang sama dengan blok yang digunakan oleh Verifikasi Email, dalam satu respons sinkron.

Saat permintaan disimpan, Didit juga dapat menggunakan email yang telah diberi skor sebagai bukti agregat di **Jaringan**. Grafik jaringan dapat menampilkan intelijen email berisiko tinggi, konteks pelanggaran data, dan cakupan profil sosial pada sinyal email yang dibagikan, tetapi grafik tersebut tidak mengungkapkan alamat email mentah kepada organisasi lain.

## Interpretasi respons

* `status` adalah keputusan akhir untuk sesi API ini. Biasanya bernilai `Approved`; evaluasi risiko dapat menghasilkan `In Review` atau `Declined`.
* `email.is_breached`, `email.is_disposable`, dan `email.is_undeliverable` adalah sinyal ya/tidak yang stabil untuk logika aplikasi Anda.
* `email.breaches` mencantumkan pelanggaran data terbaru yang diketahui dan memuat alamat tersebut, jika cakupannya tersedia, beserta tanggal pelanggaran dan kelas data yang terekspos.
* `email.email_intelligence.score` menggunakan skala risiko 0-100, di mana angka yang lebih tinggi berarti risiko yang lebih tinggi. `breach_risk_level` (`Low`, `Medium`, `High`) dan `no_of_breaches` adalah tampilan turunan.
* `email.email_intelligence.reason_codes` menjelaskan sinyal yang dinormalisasi mana yang berkontribusi pada hasil. Nilainya dapat bertambah seiring waktu, jadi jangan menolak kode yang belum dikenal.
* `email.email_intelligence` dan `email.enrichment` adalah alias kompatibilitas dengan objek ternormalisasi yang sama. Integrasi baru dapat membaca `email.enrichment`.
* `email.matches` mencantumkan sesi lain dari aplikasi Anda tempat alamat yang sama digunakan oleh pengguna lain. Gunakan kolom ini untuk deteksi akun duplikat.
* `request_id` adalah ID sesi API. Simpan bersama `vendor_data` jika Anda perlu mengorelasikan hasil dengan webhook atau aktivitas konsol yang muncul kemudian.

> [!WARNING]
>
> `email.email_intelligence` dan `email.enrichment` bersifat upaya terbaik. Pencarian yang sudah selesai dapat tidak menyertakan keduanya jika tidak ada data intelijen yang dapat digunakan untuk alamat, domain, atau paket tersebut. Bangun aturan terutama berdasarkan `is_breached`, `is_disposable`, dan `is_undeliverable`, dan perlakukan intelijen yang tidak ada sebagai "tidak diketahui", bukan "aman".

## Ekstensi jejak sosial

Atur `enable_social` ke `true` untuk menambahkan blok `email_social` ke respons di bawah `email`: platform online tempat alamat email ini terdaftar, dikelompokkan berdasarkan kategori, dengan jumlah ringkasan dan detail profil apa pun yang dikembalikan oleh mitra data kami.

* `email.email_social.profiles_registered` dan `email.email_social.profiles_checked` adalah angka utamanya: platform tempat alamat email dikonfirmasi terdaftar, dibandingkan dengan jumlah platform yang dievaluasi.
* `email.email_social.registered_platforms` dan `email.email_social.not_registered_platforms` mencantumkan setiap platform beserta `category` dan `scope`-nya (`global`, atau `local` untuk platform khusus wilayah).
* `email.email_social.categories` memberikan jumlah terdaftar dan rasio per kategori, dan `email.email_social.profiles` memuat detail profil per platform jika platform tersebut menampilkannya (nama, URL foto, teks deskripsi, status privasi, dan tanda akun bisnis).
* Indeks ringkasan (`digital_footprint_diversity`, `digital_sophistication_index`, `engagement_depth_index`, `subscription_affordability_index`) adalah komposit 0-10. Setiap jumlah dapat bernilai `null` jika pemeriksaan tidak mengembalikan data untuknya.

`profiles_registered: 0` adalah jawaban yang sah, bukan kegagalan: platform telah diperiksa dan alamat email tidak ditemukan di satu pun dari platform tersebut, yang merupakan sinyal identitas sintetis yang umum. Endpoint ini tidak mengambil tindakan atas hal tersebut dengan sendirinya. Gunakan `email_no_social_presence_action` dalam alur kerja untuk mengubahnya menjadi keputusan Peninjauan atau Penolakan.

Blok ini tidak ada jika `enable_social` tidak diatur, dan juga jika pemeriksaan jejak sosial tidak dapat diselesaikan. Dalam kasus terakhir, pemeriksaan tersebut tidak ditagih.

## Perilaku sandbox

Kunci sandbox memvalidasi permintaan dan mengembalikan data yang disetujui secara deterministik. Kunci tersebut tidak mengirim email, tidak menggunakan kredit, tidak membuat sesi, dan tidak berkontribusi ke Jaringan. Jika `enable_social` diatur, kunci tersebut juga mengembalikan blok `email_social` yang deterministik.

## Penagihan

Panggilan Email Risk API berharga \$0.04 pada harga daftar, lebih murah daripada Verifikasi Email penuh karena tidak ada email yang dikirim. Permintaan di lingkungan produksi dikenai biaya setelah pencarian dimulai, meskipun sebagian kolom yang diisi dengan upaya terbaik tidak tersedia.

Ekstensi jejak sosial ditagih secara terpisah: satu unit `email_social` per permintaan di atas harga Email Risk API, setiap kali pemeriksaan selesai. Pemeriksaan kredit sebelum pencarian mencakup keduanya.


## OpenAPI

````yaml id/openapi-25.json POST /v3/email/risk/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/email/risk/:
    post:
      tags:
        - Standalone APIs
      summary: Memberi skor risiko pada alamat email
      description: >-
        Mengembalikan sinyal keterkiriman, alamat sekali pakai, kebocoran data,
        pencocokan lintas sesi, dan intelijen risiko yang dinormalisasi tanpa
        mengirim OTP. Endpoint ini membuat sesi API dan mengembalikan id-nya
        sebagai `request_id`.


        **Keputusan.** `status` tingkat atas mencerminkan `email.status`. Status
        ini biasanya bernilai `Approved`; evaluasi risiko dapat menghasilkan `In
        Review` atau `Declined`.


        **Alias kompatibilitas.** Respons produksi menampilkan objek intelijen
        yang dinormalisasi sebagai `email.email_intelligence` dan
        `email.enrichment`. Nilainya identik. Integrasi baru dapat membaca
        `email.enrichment`. Kedua kunci tersebut tidak ada jika tidak ada data
        intelijen yang dapat digunakan yang dikembalikan.


        **Penagihan.** Panggilan produksi menggunakan harga Email Risk API.
        Permintaan dikenakan biaya begitu pencarian dimulai, bahkan saat
        beberapa kolom best-effort tidak tersedia.


        **Sandbox.** Kunci sandbox memvalidasi permintaan dan mengembalikan data
        deterministik yang disetujui tanpa mengirim email, menggunakan kredit,
        membuat sesi, atau berkontribusi ke Networks.


        **Autentikasi.** Kirim kunci API aplikasi Anda di `x-api-key`.
        Kredensial yang hilang atau tidak valid akan mengembalikan `403` - API
        ini tidak pernah mengembalikan `401`.


        **Batas laju.** Anggaran tulis bersama sebesar 300 permintaan per menit
        per kunci API di seluruh endpoint POST/PATCH/DELETE (pembuatan transaksi
        dan ingesti event memiliki anggaran terpisah sebesar 600).


        **Jejak sosial.** Atur `enable_social` ke `true` untuk menambahkan blok
        `email_social`: platform online tempat alamat ini terdaftar, dengan
        jumlah per kategori dan detail profil apa pun yang tersedia.
        `profiles_registered: 0` berarti platform telah diperiksa dan alamat
        tersebut tidak ditemukan di platform mana pun - sebuah jawaban valid
        yang dikenai biaya. Blok ini tidak ada jika add-on tidak diminta atau
        pemeriksaan tidak dapat diselesaikan, dan dalam kasus tersebut tidak
        dikenakan biaya. Penagihan menambahkan satu unit `email_social` per
        permintaan di luar harga endpoint ini sendiri.
      operationId: post_v3email_risk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailRiskRequest'
            examples:
              Minimal:
                summary: Beri skor alamat dengan pengaturan default
                value:
                  email: alice@example.com
              Full context:
                summary: Beri skor dengan sinyal, petunjuk negara, dan ID korelasi
                value:
                  email: alice@example.com
                  country_code: US
                  signals:
                    ip: 192.0.2.1
                    device_id: 8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2
                    device_platform: web
                    os_version: '14.4'
                    app_version: 1.2.34
                    user_agent: >-
                      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                      AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4
                      Safari/605.1.15
                  vendor_data: lead-123
                  metadata:
                    source: signup_prescreen
      responses:
        '200':
          description: >-
            Evaluasi risiko selesai. Periksa `status` untuk melihat
            keputusannya; HTTP selalu `200` untuk pencarian yang selesai.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailRiskResponse'
              examples:
                Clean address:
                  summary: Alamat yang dapat dikirimi tanpa paparan kebocoran
                  value:
                    request_id: 82397be9-5921-4970-a979-2d5b43e08b33
                    status: Approved
                    email:
                      status: Approved
                      email: alice@example.com
                      is_breached: false
                      breaches: []
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                      enrichment:
                        score: 4
                        deliverable: high
                        breach_risk_level: Low
                        breach_risk_index: 4
                        is_recent_breach: false
                        is_frequent_breached: false
                        is_disposable: false
                        is_free_domain: false
                        is_breached: false
                        no_of_breaches: 0
                        reason_codes: []
                    vendor_data: lead-123
                    metadata:
                      source: signup_prescreen
                    created_at: '2026-09-01T10:30:00.123456+00:00'
                Breached address:
                  summary: Alamat ditemukan dalam kebocoran data yang diketahui
                  value:
                    request_id: d1e5c2a8-6f30-4c1a-8b2d-3e4f5a6b7c8d
                    status: In Review
                    email:
                      status: In Review
                      email: bob@example.org
                      is_breached: true
                      breaches:
                        - name: ExampleBreach2023
                          domain: example.org
                          breach_date: '2023-06-01'
                          breach_emails_count: 1200000
                          description: A data breach affecting example.org accounts.
                          logo_path: https://logos.example.org/example.png
                          data_classes:
                            - email_addresses
                            - passwords
                          is_verified: true
                      is_disposable: false
                      is_undeliverable: false
                      verification_attempts: 0
                      verified_at: null
                      warnings: []
                      lifecycle: []
                      matches: []
                      email_intelligence:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                      enrichment:
                        score: 58
                        deliverable: high
                        breach_risk_level: High
                        breach_risk_index: 72
                        is_recent_breach: true
                        is_frequent_breached: true
                        is_disposable: false
                        is_free_domain: true
                        is_breached: true
                        no_of_breaches: 4
                        reason_codes:
                          - code: IR-F784B630
                            direction: risk
                            message: Email's digital footprint diversity is Very Low
                            impact_level: low
                    vendor_data: lead-125
                    metadata: null
                    created_at: '2026-09-01T10:30:00.123456+00:00'
        '400':
          $ref: '#/components/responses/EmailRiskValidationError'
        '403':
          $ref: '#/components/responses/RiskPermissionDenied'
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/email/risk/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "alice@example.com",
                "country_code": "US",
                "vendor_data": "lead-123",
                "metadata": {"source": "signup_prescreen"}
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.email.assess_risk(
                email="alice@example.com",
            )
            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.assessRisk({
              email: "alice@example.com",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{\n\tEmail: \"alice@example.com\",\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.EmailRiskRequest;

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

            var result = client.email().assessRisk(EmailRiskRequest.builder()
                    .email("alice@example.com")
                    .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->assessRisk([
                'email' => 'alice@example.com',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.email.assess_risk(email: "alice@example.com")
            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.AssessRiskAsync(new EmailRiskRequest
            {
                Email = "alice@example.com",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    EmailRiskRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Alamat email yang akan diberi skor.
          example: alice@example.com
        country_code:
          type: string
          maxLength: 3
          description: >-
            Petunjuk negara ISO 3166-1 alpha-2 atau alpha-3 opsional untuk
            cakupan intelijen.
          example: US
        signals:
          $ref: '#/components/schemas/RiskSignals'
        vendor_data:
          type: string
          description: >-
            Referensi stabil Anda untuk permintaan ini. Disimpan pada sesi API
            dan ditampilkan kembali dalam respons.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Metadata JSON non-sensitif Anda. Disimpan pada sesi API dan
            dikembalikan dalam respons.
        enable_social:
          type: boolean
          default: false
          description: >-
            Jika true, cari juga jejak sosial alamat tersebut - platform email,
            sosial, profesional, e-commerce, dan hiburan tempat alamat tersebut
            terdaftar. Ditagih sebagai satu unit `email_social` per permintaan
            selain harga endpoint ini sendiri.
          example: true
    EmailRiskResponse:
      type: object
      required:
        - request_id
        - status
        - created_at
      properties:
        request_id:
          type: string
          format: uuid
          description: >-
            Id dari sesi API yang dibuat untuk permintaan ini. Simpan bersama
            `vendor_data` jika Anda perlu mengorelasikan hasilnya dengan webhook
            atau aktivitas konsol berikutnya.
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Keputusan akhir untuk sesi API ini. Biasanya `Approved`; evaluasi
            risiko dapat menghasilkan `In Review` atau `Declined`.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Salinan `vendor_data` yang Anda kirimkan, atau `null` jika Anda
            tidak mengirimkannya.
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Salinan `metadata` yang Anda kirimkan, atau `null` jika Anda tidak
            mengirimkannya.
        created_at:
          type: string
          format: date-time
          description: Cap waktu respons ini.
        email:
          type: object
          description: >-
            Laporan email yang dinormalisasi, blok yang sama yang digunakan oleh
            respons Verifikasi Email.
          required:
            - status
            - email
            - is_breached
            - breaches
            - is_disposable
            - is_undeliverable
          properties:
            status:
              type: string
              enum:
                - Approved
                - In Review
                - Declined
              description: >-
                Keputusan untuk alamat email ini. Mencerminkan `status` tingkat
                teratas.
            email:
              type: string
              description: Alamat yang dinilai.
              example: alice@example.com
            is_breached:
              type: boolean
              description: Apakah alamat muncul dalam kebocoran kredensial yang diketahui.
            breaches:
              type: array
              description: >-
                Hingga 5 kebocoran data terbaru yang diketahui berisi alamat
                ini. Larik kosong jika `is_breached` bernilai `false`.
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Pengidentifikasi pelanggaran.
                  domain:
                    type: string
                    description: Domain dari layanan yang mengalami kebocoran data.
                  breach_date:
                    type: string
                    format: date
                    description: Tanggal pelanggaran terjadi.
                  breach_emails_count:
                    type: integer
                    description: Jumlah total akun yang terekspos dalam pelanggaran data.
                  description:
                    type: string
                    description: >-
                      Deskripsi pelanggaran yang mudah dibaca manusia (dapat
                      berisi markup HTML).
                  logo_path:
                    type: string
                    description: URL logo layanan yang mengalami kebocoran data.
                  data_classes:
                    type: array
                    items:
                      type: string
                    description: >-
                      Kategori data yang terekspos, dalam snake_case (misalnya,
                      `email_addresses`, `passwords`).
                  is_verified:
                    type: boolean
                    description: Apakah pelanggaran telah diverifikasi sebagai sah.
            is_disposable:
              type: boolean
              description: Apakah domain milik penyedia sekali pakai.
            is_undeliverable:
              type: boolean
              description: Apakah alamat dinyatakan tidak dapat dikirim.
            verification_attempts:
              type: integer
              description: Pengiriman OTP untuk alamat ini. `0` untuk pencarian risiko.
            verified_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Waktu ketika alamat terakhir diverifikasi melalui OTP. `null`
                untuk pencarian risiko.
            warnings:
              type: array
              description: >-
                Peringatan risiko yang dicatat untuk permintaan ini. Berupa
                array kosong jika tidak ada.
              items:
                $ref: '#/components/schemas/RiskWarning'
            lifecycle:
              type: array
              description: >-
                Jejak audit kronologis dari permintaan. Berupa array kosong
                untuk pencarian risiko tanpa pengiriman.
              items:
                $ref: '#/components/schemas/RiskLifecycleEvent'
            matches:
              type: array
              description: >-
                Sesi lain dari aplikasi Anda tempat alamat email yang sama
                digunakan oleh pengguna berbeda (`vendor_data` berbeda). Hingga
                5 entri. Array kosong jika tidak ada kecocokan.
              items:
                $ref: '#/components/schemas/EmailMatchItem'
            email_intelligence:
              $ref: '#/components/schemas/EmailIntelligence'
            enrichment:
              $ref: '#/components/schemas/EmailIntelligence'
            email_social:
              $ref: '#/components/schemas/EmailSocialFootprint'
    RiskSignals:
      type: object
      description: >-
        Konteks perangkat dan jaringan opsional yang diamati oleh aplikasi Anda.
        Semua kolom bersifat opsional. Meneruskannya akan menyediakan data untuk
        deteksi kecocokan lintas sesi di Networks.
      properties:
        ip:
          type: string
          format: ip
          description: Alamat IPv4 atau IPv6 yang teramati untuk pengguna akhir.
          example: 192.0.2.1
        device_id:
          type: string
          maxLength: 255
          description: >-
            Pengidentifikasi perangkat stabil yang dikumpulkan oleh aplikasi
            Anda (`ANDROID_ID` Android, `identifierForVendor` iOS).
        device_platform:
          type: string
          enum:
            - android
            - ios
            - ipados
            - tvos
            - web
          description: Platform perangkat pengguna akhir.
        device_model:
          type: string
          maxLength: 255
          description: Model perangkat yang dilaporkan oleh aplikasi Anda.
        os_version:
          type: string
          maxLength: 64
          description: Versi sistem operasi.
        app_version:
          type: string
          maxLength: 64
          description: Versi aplikasi Anda.
        user_agent:
          type: string
          maxLength: 512
          description: User agent browser atau aplikasi.
    RiskWarning:
      type: object
      required:
        - feature
        - risk
        - log_type
        - short_description
        - long_description
      properties:
        feature:
          type: string
          description: Fitur yang menghasilkan peringatan.
        risk:
          type: string
          description: >-
            Kode risiko yang dapat dibaca mesin. Nilai baru dapat ditambahkan
            seiring waktu.
        additional_data:
          type: object
          nullable: true
          additionalProperties: true
          description: Konteks spesifik risiko, atau `null`.
        log_type:
          type: string
          enum:
            - error
            - warning
            - information
          description: Tingkat keparahan yang digunakan oleh aturan keputusan.
        short_description:
          type: string
          description: Ringkasan satu baris yang dapat dibaca manusia.
        long_description:
          type: string
          description: Penjelasan yang mudah dibaca manusia.
    RiskLifecycleEvent:
      type: object
      required:
        - type
        - timestamp
        - details
        - fee
      properties:
        type:
          type: string
          description: >-
            Tipe event yang dapat dibaca mesin. Nilai-nilai baru dapat
            ditambahkan seiring waktu.
        timestamp:
          type: string
          format: date-time
          description: Waktu ketika peristiwa terjadi.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: Payload khusus event, atau `null`.
        fee:
          type: number
          description: Jumlah USD yang ditagihkan untuk event ini.
    EmailMatchItem:
      type: object
      description: >-
        Sesi lain dari aplikasi Anda yang menggunakan alamat email yang sama
        dengan `vendor_data` yang berbeda.
      properties:
        session_id:
          type: string
          format: uuid
          description: ID sesi dari verifikasi lain yang menggunakan alamat email ini.
        session_number:
          type: integer
          description: Nomor urut sesi yang mudah dibaca manusia.
        vendor_data:
          type: string
          nullable: true
          description: '`vendor_data` dari sesi tersebut.'
        verification_date:
          type: string
          description: Waktu ketika sesi tersebut dibuat (`YYYY-MM-DDTHH:MM:SSZ`).
        email:
          type: string
          description: Alamat email yang cocok.
        status:
          type: string
          description: >-
            Status sesi tersebut (misalnya, `Approved`, `Declined`, `In
            Progress`).
        is_blocklisted:
          type: boolean
          description: Apakah alamat email ada di daftar blokir aplikasi Anda.
        api_service:
          type: string
          nullable: true
          description: >-
            Untuk sesi bertipe API, API mandiri yang membuatnya; `null` untuk
            sesi verifikasi reguler.
        source:
          type: string
          description: >-
            Tempat kecocokan ditemukan. Biasanya `session`; kecocokan daftar
            blokir melalui entri daftar organisasi menggunakan `list_entry`.
    EmailIntelligence:
      type: object
      description: >-
        Blok intelijen email yang dinormalisasi. Hanya ada ketika add-on
        intelijen dijalankan untuk email ini; jika ada, ini juga diekspos
        sebagai alias `enrichment` dengan nilai yang identik.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Skor risiko 0-100 yang dinormalisasi. Lebih tinggi berarti lebih
            berisiko.
        deliverable:
          type: string
          nullable: true
          description: Tingkat keterkiriman (misalnya, `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium`, atau `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Indeks risiko pelanggaran numerik.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` jika alamat muncul dalam kebocoran data terkini.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` jika alamat muncul dalam banyak kebocoran data.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` saat domain merupakan penyedia email sekali pakai.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` saat domain merupakan penyedia email gratis.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` jika alamat muncul dalam kebocoran data yang diketahui.'
        no_of_breaches:
          type: number
          nullable: true
          description: Jumlah kebocoran data yang diketahui yang memuat alamat tersebut.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Pengidentifikasi Didit yang stabil untuk sinyal tersebut,
                  misalnya `IR-5AC67A32`. Tidak transparan: kelompokkan dan
                  filter berdasarkan nilai ini, jangan menguraikannya.
              value:
                nullable: true
                description: >-
                  Untuk flag risiko (misalnya `voip`, `leaked`, `disposable`,
                  `spam_trap`), nilainya: boolean, level, atau tanggal. Null
                  untuk kode alasan dengan skor.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Apakah sinyal meningkatkan risiko atau menambah kepercayaan.
              message:
                type: string
                description: >-
                  Penjelasan sinyal yang mudah dibaca manusia, dalam bahasa
                  Inggris.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Seberapa kuat sinyal tersebut memengaruhi skor, misalnya
                  `low`, `medium`, atau `high`.
          description: >-
            Sinyal yang menjelaskan skor tersebut, masing-masing dengan kode
            Didit yang stabil, arah, pesan, dan tingkat dampak. Kode baru dapat
            muncul sewaktu-waktu, jadi jangan tolak kode yang tidak dikenal.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Jejak sosial dari alamat email: platform online tempat alamat tersebut
        terdaftar. Ada hanya jika `enable_social` diatur dan pemeriksaan
        selesai. Setiap hitungan dapat bernilai null jika tidak ada data yang
        dikembalikan untuknya. `profiles_registered: 0` berarti platform telah
        diperiksa dan alamat email tidak ditemukan di platform mana pun -
        respons yang valid, dapat ditagih, dan merupakan sinyal identitas
        sintetis yang umum.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Platform tempat alamat email dikonfirmasi terdaftar.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Platform yang dievaluasi untuk pendaftaran.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Platform yang mengembalikan nama terkait.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Platform yang mengembalikan foto profil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Platform komunikasi yang keberadaannya terdeteksi.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Kategori platform unik dengan keberadaan yang terdeteksi.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indikator kematangan digital komposit, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indikator kekayaan profil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Bauran platform gratis vs berbayar, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform gratis.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform berbayar penuh.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Kelengkapan profil WhatsApp. Hanya untuk telepon; null untuk email.
          example: Partial
        registered_platforms:
          type: array
          description: Platform tempat pendaftaran dikonfirmasi.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Platform yang diperiksa dengan hasil negatif.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Jumlah dan rasio terdaftar per kategori platform.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detail profil per platform, dikunci berdasarkan platform, jika
            platform menyediakannya.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Pengenal platform.
          example: whatsapp
        category:
          type: string
          description: >-
            Kategori platform, mis. MESSAGING, SOCIAL_MEDIA, ECOMMERCE,
            PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` untuk platform di seluruh dunia, `local` untuk platform
            khusus kawasan tertentu.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Platform dalam kategori ini tempat pendaftaran dikonfirmasi.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Porsi platform yang diperiksa dalam kategori tersebut yang memiliki
            registrasi, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nama profil, jika platform menampilkannya.
        photo:
          type: string
          nullable: true
          description: URL foto profil, jika platform menampilkannya.
        about:
          type: string
          nullable: true
          description: Teks tentang/bio profil, jika platform menampilkannya.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilitas profil, jika platform menampilkannya.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Apakah profil tersebut merupakan akun bisnis, jika platform
            menampilkannya.
  responses:
    EmailRiskValidationError:
      description: Validasi permintaan gagal.
      content:
        application/json:
          examples:
            Missing email:
              summary: Email tidak ada
              value:
                email:
                  - This field is required.
            Invalid email:
              summary: Email tidak valid
              value:
                email:
                  - Enter a valid email address.
            Invalid country hint:
              summary: Petunjuk negara tidak valid
              value:
                country_code:
                  - Ensure this field has no more than 3 characters.
    RiskPermissionDenied:
      description: >-
        Kunci API tidak ada atau tidak valid, atau organisasi tidak dapat
        menanggung biaya pencarian langsung. API ini tidak pernah mengembalikan
        `401`.
      content:
        application/json:
          examples:
            Missing or invalid API key:
              summary: >-
                Tidak ada header `x-api-key`, atau kunci tidak valid atau
                dicabut
              value:
                detail: You do not have permission to perform this action.
            Not enough credits:
              summary: Saldo organisasi tidak mencukupi untuk harga pencarian
              value:
                error: You don't have enough credits to perform this request.
    RateLimitedWrite:
      description: >-
        Batas tulis bersama sebesar 300 permintaan per menit per kunci API telah
        terlampaui. Patuhi `Retry-After` sebelum mencoba lagi.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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