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

# Laporan Verifikasi Identitas: Kolom & Skor Kualitas

> Pelajari laporan Verifikasi Identitas Didit: status, kolom dokumen terekstraksi, skor kualitas gambar, kecocokan antarsesi, dan respons data.

## Gambaran umum

**Laporan verifikasi identitas** mencakup semua hal yang diekstraksi dan divalidasi Didit dari dokumen identitas resmi yang diterbitkan pemerintah — paspor, kartu identitas, SIM, dan izin tinggal. Laporan ini menggabungkan kolom dokumen dan data biografis hasil OCR, URL bertanda tangan ke media yang diambil, data alamat yang diurai dan diberi geolokasi, skor kualitas gambar per sisi, konten MRZ, rincian multi-aksara (Latin / non-Latin), serta kecocokan dokumen lintas sesi.

Laporan ini dibuat setelah pengguna menyelesaikan langkah pengambilan dokumen dalam alur kerja (atau memanggil endpoint OCR mandiri). Didit mengidentifikasi jenis dokumen, menjalankan OCR, memvalidasi MRZ / kode batang / kode QR, mengurai alamat, memeriksa manipulasi (tangkapan layar, salinan cetak, manipulasi potret), dan membandingkan dokumen tersebut dengan setiap dokumen lain yang diambil dalam aplikasi Anda.

Setiap laporan memiliki `status`-nya sendiri — terlepas dari status sesi secara keseluruhan — yang mencerminkan hasil penyelesaian langkah ID saja:

* **Disetujui** — dokumen dikenali, semua kolom yang diperlukan diekstraksi, tidak ada peringatan yang memicu tindakan penolakan.
* **Dalam Peninjauan** — satu atau lebih peringatan terpicu dan alur kerja Anda mengarahkannya ke peninjauan.
* **Ditolak** — kondisi penolakan otomatis terpicu (dokumen tidak didukung, dokumen kedaluwarsa, potret tidak ada, terdeteksi dalam daftar blokir, kegagalan usia adaptif) atau peringatan yang tindakan terkonfigurasinya adalah penolakan terpicu (usia minimum/maksimum secara default adalah Penolakan).
* **Kedaluwarsa** — `expiration_date` dokumen telah terlewati **setelah** verifikasi. Pemantauan kedaluwarsa berkelanjutan Didit mengubah laporan dari `Approved` menjadi `Expired`, menambahkan peringatan `DOCUMENT_EXPIRED`, dan memindahkan sesi yang disetujui ke status sesi `Kyc Expired`.
* **Belum Selesai** — pengguna tidak pernah menyelesaikan langkah pengambilan.

## Lokasi kemunculan dalam respons API

Laporan ID disertakan di dalam array `id_verifications[]` — **selalu berupa array JSON**, tidak pernah berupa objek `id_verification` tunggal. Beberapa entri muncul ketika alur kerja menjalankan lebih dari satu langkah dokumen (misalnya ID utama ditambah verifikasi lanjutan).

* **API keputusan sesi** — `GET /v3/session/{sessionId}/decision/` mengembalikan `id_verifications[]` di tingkat atas. Lihat [Ambil keputusan sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md).
* **Webhook** — payload `session.status.updated` menyertakan array `id_verifications[]` yang sama setelah langkah tersebut menghasilkan data. Lihat [Webhook](https://docs.didit.me/id/integration/webhooks.md).
* **API OCR mandiri** — pengiriman dokumen langsung mengembalikan objek `id_verification` tunggal dengan kolom yang sama. Lihat [API OCR mandiri](https://docs.didit.me/id/standalone-apis/id-verification.md).

> [!NOTE]
>
> Baca `response.id_verifications[0]` dan lakukan iterasi pada array tersebut. Bentuk `id_verification` tunggal hanya ada pada API OCR mandiri — bentuk ini tidak ada pada endpoint keputusan v3.

## Schema

Skema kanonis kolom-demi-kolom tersedia di halaman referensi [Data models](https://docs.didit.me/id/reference/data-models.md#verifikasi-identitas). Kolom-kolom di bawah ini diambil langsung dari `IDVerificationV3Serializer`, yang memperluas `IDVerificationV2Serializer` dan menambahkan `node_id`, array lintas-sesi `matches[]`, serta array Silent Capture `document_selfie_face_matches[]`.

### Kolom tingkat atas

| Kolom | Tipe | Deskripsi |
| - | - | - |
| `status` | `"Approved" \| "Declined" \| "In Review" \| "Expired" \| "Not Finished"` | Status langkah identitas. |
| `node_id` | string \| null | Node graf alur kerja yang menghasilkan laporan ini. |
| `document_type` | `"Passport" \| "Identity Card" \| "Driver's License" \| "Residence Permit" \| "Health Insurance Card" \| "Tax Card" \| "Social Security Card" \| "Work Permit" \| "Visa" \| "Public Service Card" \| "Birth Certificate" \| "Firearm License" \| "Other" \| null` | Kelompok dokumen tingkat atas yang dikenali (dapat dibaca manusia). |
| `document_subtype` | string \| null | Kode subtipe dokumen dari registri dokumen Didit, disaring sesuai dengan dokumen yang diizinkan oleh pengaturan dokumen alur kerja. Dokumen khusus wilayah menyertakan wilayahnya, misalnya `QUEENSLAND_DRIVER_LICENSE_GENERIC`. Lihat [Subtipe dokumen](https://docs.didit.me/id/core-technology/id-verification/document-subtypes-id-verification.md) untuk daftar kode lengkap, termasuk cara membedakan surat izin mengemudi komersial (CDL) AS dari yang standar. |
| `document_number` | string | Nomor dokumen hasil OCR. Untuk surat izin mengemudi yang mencantumkan nomor lisensi dan nomor kartu, lihat catatan di bawah tabel. |
| `personal_number` | string | Nomor identitas pribadi / nasional hasil OCR, jika berbeda dari nomor dokumen. |
| `portrait_image`, `front_image`, `front_video`, `back_image`, `back_video`, `full_front_image`, `full_back_image` | string (URL bertanda tangan) | Media yang diambil. URL bersifat ditandatangani dan dibatasi waktu — unduh segera, jangan pernah menyimpan URL secara permanen. |
| `front_image_camera_front`, `back_image_camera_front` | string (URL bertanda tangan) \| null | Bingkai yang diambil oleh kamera depan pengguna saat pengambilan dokumen. Digunakan untuk pemeriksaan wajah lintas kamera dan dibandingkan dengan [daftar blokir wajah](https://docs.didit.me/id/console/blocklist-users.md#pemblokiran-wajah) Anda; masing-masing juga dapat [ditambahkan ke daftar blokir wajah](https://docs.didit.me/id/management-api/lists/create-entry.md#wajah-dari-swafoto-pengambilan-dokumen). |
| `front_image_camera_front_face_match_score`, `back_image_camera_front_face_match_score` | float (0–100) \| null | Skor kemiripan antara bingkai kamera depan dan foto dokumen. |
| `document_selfie_face_matches` | array \| null | Sesi sebelumnya atau entri daftar blokir wajah yang wajahnya cocok dengan swafoto yang diambil selama pengambilan dokumen ([Pencarian Wajah Silent Capture](https://docs.didit.me/id/core-technology/face-search/overview.md#swafoto-yang-diambil-selama-pengambilan-dokumen)). Format entri sama dengan `liveness_checks[].matches`; `match_image_url` adalah URL bertanda tangan yang akan kedaluwarsa. `null` untuk sesi yang lebih lama atau saat pencarian tidak dijalankan, `[]` saat dijalankan dan tidak menemukan apa pun. |
| `front_image_quality_score`, `back_image_quality_score` | object \| null | Penilaian kualitas per sisi (lihat Skor kualitas gambar). |
| `document_liveness` | object \| null | Skor liveness dokumen per jenis penipuan, dengan ambang batas yang digunakan sebagai dasar penilaian (lihat Skor liveness dokumen). Khusus V3. |
| `date_of_birth`, `expiration_date`, `date_of_issue` | string (YYYY-MM-DD) | Tanggal-tanggal dokumen. |
| `age` | number | Usia pemegang dalam tahun yang dihitung dari `date_of_birth`. |
| `issuing_state` | string (ISO 3166-1 alpha-3) | Kode negara penerbit. |
| `issuing_state_name` | string | Nama negara yang dilokalisasi. |
| `first_name`, `last_name`, `full_name` | string | Nama pemegang dalam aksara yang dipilih oleh `preferred_characters` (lihat di bawah). |
| `gender` | `"M" \| "F" \| "U"` | Jenis kelamin, jika ada pada dokumen (`U` = tidak diketahui). |
| `address`, `formatted_address` | string | String alamat mentah dan yang telah di-geocode/diformat. |
| `place_of_birth` | string | Tempat lahir hasil OCR. |
| `marital_status` | `"SINGLE" \| "MARRIED" \| "DIVORCED" \| "WIDOWED" \| "UNKNOWN"` | Status perkawinan, jika ada pada dokumen. |
| `nationality` | string (ISO 3166-1 alpha-3) | Kewarganegaraan pemegang, jika berbeda dari negara penerbit. |
| `extra_fields` | object | Kolom tambahan spesifik dokumen (kategori SIM, golongan darah, nama dalam aksara alternatif, `tax_number`, …). |
| `mrz` | object \| null | Kolom kunci/nilai MRZ yang diurai. |
| `parsed_address` | object \| null | Alamat terstruktur dan di-geocode (`street_1`, `street_2`, `city`, `region`, `country`, `postal_code`, `address_type`, `formatted_address`, `document_location`, `raw_results`, `is_best_match`). |
| `extra_files[]` | array URL bertanda tangan | Gambar tambahan yang dilampirkan pada dokumen ini. |
| `matches[]` | array | Kecocokan dokumen lintas-sesi (lihat Kecocokan lintas-sesi). |
| `warnings[]` | array | Peringatan tingkat modul — lihat [Peringatan verifikasi identitas](https://docs.didit.me/id/core-technology/id-verification/warnings-id-verification.md). |

> [!NOTE]
>
> **`issuing_state` selalu pada tingkat negara, tidak pernah sub-nasional.** Untuk setiap
> jenis dokumen, termasuk surat izin mengemudi yang diterbitkan oleh negara bagian atau provinsi
> (Australia, Amerika Serikat, Kanada), `issuing_state` dan
> `issuing_state_name` melaporkan **negara** (misalnya `AUS` /
> `Australia`), bukan negara bagian. Nilai sub-nasional, jika dokumen
> memuatnya, tersedia secara terpisah di `parsed_address.region` (beralih
> ke `extra_fields.state` pada beberapa jenis dokumen). Ringkasan sesi **Business
> Console** menampilkan ini sebagai baris **Wilayah** di bawah
> **Negara penerbit** jika ada.

> [!NOTE]
>
> **Surat izin mengemudi yang memuat dua nomor (Australia).** Surat izin mengemudi Australia
> mencetak nomor lisensi, yang mengidentifikasi hak mengemudi pemegang dan
> tetap sama saat kartu diganti, serta nomor kartu,
> yang mengidentifikasi kartu fisik dan berubah pada setiap penerbitan ulang. Untuk
> lisensi ini Didit selalu memetakan nomor-nomor tersebut dengan cara yang sama:
>
> * `personal_number` — **nomor lisensi**
> * `document_number` — **nomor kartu**
>
> Ini berlaku untuk setiap negara bagian dan wilayah Australia (NSW, VIC, QLD, WA, SA,
> TAS, ACT, NT). Pada beberapa varian, nomor kartu hanya dicetak di bagian belakang,
> sehingga hanya terbaca saat bagian belakang lisensi diambil. Jika tidak ada nomor kartu
> yang dapat dibaca, nomor lisensi dilaporkan sebagai **keduanya**,
> `document_number` dan `personal_number`, sehingga `document_number` selalu memuat
> sebuah pengidentifikasi setelah verifikasi selesai. `personal_number` tetap merupakan
> nomor lisensi dalam kedua kasus tersebut. Pada jenis dokumen lain, `document_number` tetap
> menjadi nomor utama hasil OCR dan dapat berupa pengidentifikasi tingkat pemegang itu sendiri.

> [!NOTE]
>
> **CUIL Argentina adalah `extra_fields.tax_number`, bukan `personal_number`.**
> Dokumen Argentina mencantumkan CUIL — pengenal 11 digit yang digunakan sebagai kunci oleh AFIP, ANSES, dan
> biro kredit — di tempat yang berbeda pada setiap dokumen, dan
> DNI mencantumkan nomor 11 digit kedua di sampingnya:
>
> * pada **surat izin mengemudi (SIM)**, CUIL adalah nilai yang dibawa oleh `personal_number`;
> * pada **DNI**, `personal_number` membawa *número de trámite*, yang
>   mengidentifikasi pengajuan kartu dan bukan merupakan pengenal bagi pemegangnya.
>   CUIL DNI dibaca dari kolom cetaknya sendiri.
>
> Oleh karena itu, `personal_number` **bukanlah** CUIL yang andal untuk Argentina: pada DNI, ini adalah
> nomor 11 digit yang secara senyap tidak akan mengembalikan hasil apa pun dari registri mana pun.
> Gunakan `extra_fields.tax_number` sebagai gantinya. Didit hanya melaporkannya jika nilainya
> tervalidasi sebagai CUIL nyata (awalan individu ditambah digit pemeriksaan modulo-11), dalam
> digit kanonik tanpa pemisah (`27111111117`), terlepas dari dokumen Argentina mana pun yang
> ditunjukkan oleh pemegang. Ketika CUIL kartu tidak dapat dibaca,
> kunci tersebut tidak ada, alih-alih diisi dengan nomor yang bukan CUIL — ambil
> surat izin mengemudi sebagai dokumen kedua, atau kumpulkan CUIL melalui
> jawaban Kuesioner atau `metadata` sesi, agar pengguna tersebut tercakup.

### Skor kualitas gambar

`front_image_quality_score` dan `back_image_quality_score` masing-masing mengembalikan:

| Kolom | Tipe | Apa yang diukur |
| - | - | - |
| `focus_score` | number 0–100 | Ketajaman — varians Laplacian lokal 10% teratas, tahan terhadap latar belakang seragam. Bobot 45%. |
| `brightness_score` | number 0–100 | Memberikan penalti pada gambar yang terlalu gelap atau mengalami paparan berlebih. Bobot 30%. |
| `brightness_issue` | `"ok" \| "too_dark" \| "too_bright"` | Arah masalah kecerahan, ketika `brightness_score` rendah. |
| `resolution_score` | number 0–100 | Berdasarkan jumlah total piksel dari tangkapan. Bobot 25%. |
| `is_document_fully_visible` | boolean \| null | `true` ketika keempat sudut dokumen terlihat, `false` ketika ada sudut yang terpotong, `null` ketika deteksi sudut tidak tersedia. |
| `overall_score` | number 0–100 | Komposit berbobot (fokus 45%, kecerahan 30%, resolusi 25%). |

> [!TIP]
>
> Gunakan `overall_score` sebagai pemeriksaan kelayakan cepat — skor di atas **70** umumnya menunjukkan tangkapan yang cukup baik untuk verifikasi yang andal.

### Skor liveness dokumen

`document_liveness` melaporkan apa yang diukur oleh [pemeriksaan liveness dokumen](https://docs.didit.me/id/core-technology/id-verification/warnings-id-verification.md#liveness-dokumen-manipulasi), **terlepas dari apakah pemeriksaan tersebut memicu peringatan atau tidak**. Peringatan hanya muncul ketika skor berada di bawah salah satu ambang batas alur kerja, sehingga sebelum adanya kolom ini dokumen yang disetujui tidak memuat bukti liveness sama sekali - kolom ini adalah cara Anda mengaudit sesi yang lolos. Kolom ini bernilai `null` jika pemeriksaan tidak dijalankan (misalnya metode non-dokumen, atau gangguan model yang tercatat dalam log sesi).

Kolom ini memuat satu objek per jenis penipuan - `portrait_replace`, `printed_copy`, dan `screen_replay` - masing-masing dengan:

| Kolom | Tipe | Arti |
| - | - | - |
| `score` | number 0–100 \| null | Kemungkinan bahwa dokumen tersebut asli dalam kaitannya dengan jenis penipuan ini (lebih tinggi = lebih besar kemungkinan asli). Nilai ini adalah yang **terendah** dari kedua sisi, yang merupakan nilai yang digunakan untuk keputusan. Bernilai `null` jika kedua sisi tidak menghasilkan skor yang dapat digunakan - misalnya skor potret dihilangkan pada sisi tempat tidak ditemukan potret. |
| `front`, `back` | number 0–100 \| null | Skor yang sama untuk setiap sisi yang ditangkap. Bernilai `null` untuk sisi yang tidak diambil atau yang skornya dihilangkan. |
| `decline_threshold`, `review_threshold` | number \| null | Ambang batas yang disimpan saat node Verifikasi Identitas mengevaluasi dokumen ini. Pengeditan alur kerja setelahnya tidak mengubahnya. Bernilai `null` jika bukti evaluasi historis tidak tersedia. |
| `bucket` | `"approve" \| "review" \| "decline" \| null` | Posisi `score` terhadap ambang batas tersebut: di bawah `decline_threshold` → `decline`, di bawah `review_threshold` → `review`, selain itu `approve`. Bernilai `null` jika tidak ada skor yang dapat digunakan, pemeriksaan tidak diterapkan, atau bukti evaluasi historis tidak tersedia. Kategori ini menjelaskan pemeriksaan untuk jenis penipuan ini, bukan status sesi secara keseluruhan. |

```json theme={null}
"document_liveness": {
  "portrait_replace": {
    "score": 96.46,
    "front": 96.46,
    "back": 98.2,
    "decline_threshold": 35,
    "review_threshold": 70,
    "bucket": "approve"
  },
  "printed_copy": {
    "score": 91.2,
    "front": 91.2,
    "back": 93.7,
    "decline_threshold": 35,
    "review_threshold": 77,
    "bucket": "approve"
  },
  "screen_replay": {
    "score": 99.9,
    "front": 99.9,
    "back": 99.5,
    "decline_threshold": 30,
    "review_threshold": 70,
    "bucket": "approve"
  }
}
```

Untuk dokumen yang lebih lama tanpa bukti evaluasi yang tersimpan, skor yang tersimpan tetap terlihat tetapi ambang batas dan `bucket` bernilai `null`. Pengaturan alur kerja saat ini tidak pernah digunakan untuk merekonstruksi hasil historis. Hal yang sama berlaku untuk tangkapan yang evaluasi dokumennya belum selesai.

Business Console menampilkan tiga baris yang sama di blok **Liveness dokumen** pada bagian Verifikasi Identitas sesi.

### Kecocokan lintas sesi

`matches[]` mencantumkan hingga **5** dokumen lain di aplikasi Anda yang cocok dengan dokumen ini — **tanggal lahir** yang sama, **negara penerbit** yang sama, dan **nama lengkap** yang sangat mirip. Dokumen yang dimasukkan ke daftar blokir juga memerlukan kecocokan nomor dokumen yang persis. Sesi milik pengguna yang sama (`vendor_data` yang sama) dikecualikan.

Setiap entri mencakup `session_id`, `session_number`, `vendor_data`, `verification_date`, `user_details` (`name`, `document_type`, `document_number`), `status`, `is_blocklisted` (`true` jika dokumen ditambahkan ke daftar blokir Anda), `api_service`, dan `front_image_url` yang ditandatangani.

## Nilai status

| Status | Arti | Dampak lanjutan |
| - | - | - |
| `Approved` | Dokumen dikenali, kolom yang diperlukan diekstraksi, semua pemeriksaan lolos pada ambang batas yang dikonfigurasi. | Dihitung sebagai pemeriksaan ID yang berhasil. |
| `In Review` | Satu atau beberapa peringatan terpicu dan alur kerja merutekannya ke peninjauan. | Sesi juga beralih ke `In Review` sampai seorang peninjau mengambil tindakan. |
| `Declined` | Kondisi penolakan otomatis terpicu (dokumen tidak didukung, dokumen kedaluwarsa, potret tidak ada, kecocokan daftar blokir, kegagalan usia adaptif) atau peringatan yang dikonfigurasi untuk menyebabkan penolakan terpicu. | Sesi ditolak kecuali cabang lain yang disetujui memenuhi alur kerja. |
| `Expired` | Tanggal kedaluwarsa dokumen terlewati **setelah** persetujuan. Ditetapkan oleh pemantauan dokumen berkelanjutan Didit, yang aktif secara default (negara dan jenis dokumen yang **Expiration mode**-nya adalah **Allow expired** dikecualikan), bersama dengan peringatan `DOCUMENT_EXPIRED`. | Sesi yang disetujui beralih ke `Kyc Expired`. |
| `Not Finished` | Pengguna meninggalkan langkah pengambilan. | Cabang ID tidak menghasilkan hasil. |

## Dokumen multi-aksara (Latin / non-Latin)

Beberapa dokumen — Kirgizstan, Kazakh, Rusia, Jepang, Korea, Tiongkok, Arab, Thailand, dan lainnya — mencetak nama, alamat, atau tempat lahir pemegang dokumen baik dalam **transliterasi** Latin **maupun** aksara lokal. Anda memilih aksara mana yang mengisi respons level teratas menggunakan pengaturan alur kerja (atau API mandiri) `preferred_characters`:

| Nilai | Mengisi kolom level teratas dengan | Aksara sebaliknya masuk ke |
| - | - | - |
| `latin` *(default)* | Transliterasi Latin yang tercetak pada dokumen | `extra_fields.*_non_latin` |
| `non_latin` | Nilai aksara lokal yang tercetak pada dokumen | `extra_fields.*_latin` |

Nilai aksara alternatif berada di dalam `extra_fields` di bawah kunci berakhiran: `first_name_non_latin`, `last_name_non_latin`, `middle_name_non_latin`, `full_name_non_latin`, `address_non_latin`, `place_of_birth_non_latin` (atau varian `_latin` yang cocok).

### Kapan kolom aksara alternatif muncul

* **Hanya jika kedua aksara benar-benar ada pada dokumen.** Jika kolom OCR yang secara nominal diberi label "Surname-Kyrgyz (Cyrillic)" diekstraksi sebagai teks beraksara Latin (homoglif atau transliterasi Latin), kolom tersebut **tidak** memenuhi syarat sebagai alternatif non-Latin dan kunci tersebut dihilangkan.
* `full_name_non_latin` (dan `full_name_latin`) selalu **direkonstruksi** dari komponen nama depan, nama tengah, dan nama belakang individual jika keduanya tersedia — kolom mentah "Full Name" dari OCR diabaikan demi konsistensi.
* Ketika `preferred_characters=latin` tetapi dokumen **hanya** memuat teks non-Latin (sehingga kolom level teratas menjadi non-Latin), Didit menjalankan tahap transliterasi dan mengekspos `first_name_latin`, `last_name_latin`, `middle_name_latin`, `full_name_latin`, `place_of_birth_latin`, dan `address_latin` sebagai fallback Latin.

```json theme={null}
{
  "first_name": "John",
  "last_name": "Doe",
  "full_name": "John Doe",
  "extra_fields": {
    "first_name_non_latin": "Айна"
  }
}
```

`last_name_non_latin` tidak ada karena kolom "Surname (Cyrillic)" pada dokumen terbaca sebagai karakter Latin pada sampel ini — tidak ada nama belakang non-Latin asli yang dapat diekstraksi.

## Contoh

### Approved — kartu identitas Spanyol yang bersih (semua kolom)

```json theme={null}
{
  "id_verifications": [
    {
      "status": "Approved",
      "document_type": "Identity Card",
      "document_subtype": "ID_CARD_GENERIC",
      "document_number": "SAMPLE-DOC-12345",
      "personal_number": "SAMPLE-PER-12345",
      "portrait_image": "https://<media-host>/.../portrait.jpg?signature=...",
      "front_image": "https://<media-host>/.../front.jpg?signature=...",
      "front_video": "https://<media-host>/.../front.mp4?signature=...",
      "back_image": "https://<media-host>/.../back.jpg?signature=...",
      "back_video": "https://<media-host>/.../back.mp4?signature=...",
      "full_front_image": "https://<media-host>/.../full_front.jpg?signature=...",
      "full_back_image": "https://<media-host>/.../full_back.jpg?signature=...",
      "front_image_camera_front": null,
      "back_image_camera_front": null,
      "front_image_camera_front_face_match_score": null,
      "back_image_camera_front_face_match_score": null,
      "front_image_quality_score": {
        "focus_score": 85.3,
        "brightness_score": 92.1,
        "brightness_issue": "ok",
        "is_document_fully_visible": true,
        "resolution_score": 72.4,
        "overall_score": 84.6
      },
      "back_image_quality_score": {
        "focus_score": 79.1,
        "brightness_score": 90.5,
        "brightness_issue": "ok",
        "is_document_fully_visible": true,
        "resolution_score": 72.4,
        "overall_score": 81.5
      },
      "date_of_birth": "1990-01-01",
      "age": 35,
      "expiration_date": "2031-06-02",
      "date_of_issue": "2021-06-02",
      "issuing_state": "ESP",
      "issuing_state_name": "Spain",
      "first_name": "John",
      "last_name": "Doe",
      "full_name": "John Doe",
      "gender": "M",
      "address": "Avda de Madrid 34",
      "formatted_address": "Avda de Madrid 34, Madrid, Madrid 28822, Spain",
      "place_of_birth": "Madrid",
      "marital_status": "SINGLE",
      "nationality": "ESP",
      "extra_fields": {},
      "mrz": {
        "document_number": "SAMPLE-DOC-12345",
        "surname": "DOE",
        "name": "JOHN",
        "birth_date": "900101",
        "expiry_date": "310602"
      },
      "parsed_address": {
        "street_1": "Avda de Madrid 34",
        "street_2": null,
        "city": "Madrid",
        "region": "Madrid",
        "country": "ES",
        "postal_code": "28822",
        "address_type": "Avda",
        "formatted_address": "Avda de Madrid 34, Madrid, Madrid 28822, Spain",
        "document_location": { "latitude": 40.4168, "longitude": -3.7038 },
        "raw_results": {
          "geometry": {
            "location": { "lat": 40.4168, "lng": -3.7038 },
            "location_type": "ROOFTOP"
          }
        },
        "is_best_match": true
      },
      "extra_files": [],
      "warnings": [],
      "node_id": "id_primary",
      "matches": []
    }
  ]
}
```

### In Review — QR tidak terdeteksi pada dokumen yang seharusnya memilikinya

Diringkas — respons sebenarnya selalu memuat rangkaian kolom lengkap seperti yang ditunjukkan di atas.

```json theme={null}
{
  "id_verifications": [
    {
      "status": "In Review",
      "node_id": "id_primary",
      "document_type": "Identity Card",
      "document_subtype": "ID_CARD_GENERIC",
      "document_number": "SAMPLE-DOC-12345",
      "first_name": "John",
      "last_name": "Doe",
      "full_name": "John Doe",
      "warnings": [
        {
          "feature": "ID_VERIFICATION",
          "risk": "QR_NOT_DETECTED",
          "additional_data": null,
          "log_type": "warning",
          "short_description": "QR not detected",
          "long_description": "The system couldn't find or read the QR code on the document. This could be due to poor image quality or an unsupported document type.",
          "node_id": "id_primary"
        }
      ]
    }
  ]
}
```

## Catatan keamanan

URL yang ditandatangani yang dikembalikan untuk gambar dan video dokumen bersifat sementara — URL tersebut kedaluwarsa setelah jendela validitas terbatas. Perlakukan URL tersebut sebagai berumur pendek: segera unduh apa yang Anda perlukan dan jangan simpan dalam cache atau tampilkan secara publik. Biasanya aplikasi Anda hanya membutuhkan `status`, beberapa kolom data biografi, dan peringatan — simpan seminimal mungkin untuk memperkecil celah terhadap potensi pelanggaran keamanan di masa mendatang.

## Terkait

* [Peringatan Verifikasi Identitas](https://docs.didit.me/id/core-technology/id-verification/warnings-id-verification.md) — enum peringatan lengkap, penyebab, dan penanganannya.
* [Pemantauan dokumen](https://docs.didit.me/id/core-technology/id-verification/document-monitoring-id-verification.md) — bagaimana Didit menyaring manipulasi dan duplikasi lintas sesi.
* [Dokumen yang didukung](https://docs.didit.me/id/core-technology/id-verification/supported-documents-id-verification.md) — jenis dokumen dan negara mana saja yang dicakup.
* [Subtipe dokumen](https://docs.didit.me/id/core-technology/id-verification/document-subtypes-id-verification.md) — daftar kode `document_subtype` lengkap, termasuk deteksi lisensi mengemudi komersial AS vs. lisensi mengemudi standar.
* [Webhook](https://docs.didit.me/id/integration/webhooks.md) — dengarkan `session.status.updated` untuk menerima laporan.
* [Model data — Verifikasi Identitas](https://docs.didit.me/id/reference/data-models.md#verifikasi-identitas) — skema kanonis beserta setiap kolomnya.


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