> ## 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 Estimasi Usia

> Panduan kode risiko Estimasi Usia Didit: AGE_BELOW_MINIMUM, LOW_LIVENESS_SCORE, NO_FACE_DETECTED, beserta ambang batas dan tindakan.

Fitur Estimasi Usia menghasilkan **peringatan** setiap kali sinyal risiko aktif pada pemeriksaan gabungan usia + deteksi liveness pasif: usia yang diprediksi berada di bawah batas minimum Anda, usia tidak dapat dihitung, subjek gagal dalam liveness, wajah tidak ditemukan, atau serangan presentasi terdeteksi. Halaman ini mencantumkan setiap kode, pemicunya, serta cara mengonfigurasi respons alur kerja.

## Gambaran umum

Estimasi Usia selalu menjalankan **dua pemeriksaan dalam satu panggilan** — pengujian deteksi liveness pasif dan model regresi usia — sehingga peringatannya dialirkan melalui pipeline liveness bersama dan diberi tag fitur `LIVENESS`. Peringatan ini muncul pada laporan di bawah `age_estimation.warnings[]` (API mandiri) atau `liveness_checks[].warnings[]` (disematkan dalam alur kerja). Skema objek peringatan didokumentasikan di bawah [Model data — Objek peringatan](https://docs.didit.me/id/reference/data-models.md#objek-peringatan).

Penghasil:

* **API mandiri** — endpoint menghasilkan lima peringatan yang tercantum di bawah [Pemicu penolakan](#pemicu-penolakan).
* **Alur kerja** — penghasil liveness bersama ditambah pemeriksaan khusus usia. Peringatan usia hanya aktif pada alur estimasi usia (alur kerja verifikasi usia adaptif atau node alur kerja `AGE_ESTIMATION`) — langkah liveness biasa melaporkan perkiraan usia tetapi tidak pernah memunculkan peringatan usia.

Tingkat keparahan: lima risiko tolak otomatis (`NO_FACE_DETECTED`, `LIVENESS_FACE_ATTACK`, `FACE_IN_BLOCKLIST`, `AGE_BELOW_MINIMUM`, `AGE_NOT_DETECTED`) selalu berupa `log_type: "error"` dan memaksakan status `Declined`; risiko selebihnya ditetapkan sebagai `error` / `warning` / `information` berdasarkan ambang batas atau tindakan yang dikonfigurasi.

## Pemicu penolakan

Pada API mandiri, keputusannya adalah `Declined` setiap kali peringatan **apa pun** aktif:

* **Usia di bawah ambang batas** — usia yang diprediksi kurang dari `age_estimation_decline_threshold` (default `18`; `0` menonaktifkan pemeriksaan usia). Memunculkan `AGE_BELOW_MINIMUM`.
* **Usia tidak dihitung** — tidak ada usia wajah yang dapat diestimasi (tidak ada wajah yang terdeteksi, atau tidak ada wajah yang dapat digunakan untuk model usia). Memunculkan `AGE_NOT_DETECTED`.
* **Skor liveness pada atau di bawah ambang batas** — `score <= face_liveness_score_decline_threshold` (default `30`); skor `null` dihitung sebagai `0`. Memunculkan `LOW_LIVENESS_SCORE`. Ditiadakan jika `NO_FACE_DETECTED` aktif — keduanya bersifat saling eksklusif.
* **Tidak ada wajah terdeteksi** — model liveness tidak menemukan wajah. Memunculkan `NO_FACE_DETECTED`.
* **Serangan presentasi** — model liveness mendeteksi layar, foto cetak, topeng, atau spoofing lainnya. Memunculkan `LIVENESS_FACE_ATTACK`.

Dalam alur kerja, pemeriksaan usia membandingkan estimasi usia yang dibulatkan ke bawah (tahun penuh) terhadap ambang batas yang dikonfigurasi:

* **Dengan fallback Verifikasi Identitas aktif** (`enable_id_verification_fallback`, default aktif): usia di bawah `borderline_minimum_age_threshold` (default `18`) memunculkan `AGE_BELOW_MINIMUM`; usia dalam rentang batas (hingga `borderline_maximum_age_threshold`) dilanjutkan ke verifikasi dokumen alih-alih memunculkan peringatan, dan `AGE_NOT_DETECTED` tidak pernah dimunculkan — usia yang tidak terdeteksi juga dialihkan ke verifikasi dokumen.
* **Dengan fallback dinonaktifkan**: tidak adanya estimasi usia memunculkan `AGE_NOT_DETECTED`, dan usia di bawah `minimum_age_threshold` (default `18`) memunculkan `AGE_BELOW_MINIMUM`.

## Risiko yang dapat dikonfigurasi

Risiko berikut memungkinkan Anda menyesuaikan ambang batas atau tindakan per pengaturan alur kerja:

| Pengaturan | Kode risiko | Opsi yang dapat dikonfigurasi |
| - | - | - |
| Ambang batas usia | `AGE_BELOW_MINIMUM` | Mandiri: `age_estimation_decline_threshold` (default `18`, `0` menonaktifkan). Alur kerja: `minimum_age_threshold` / `borderline_minimum_age_threshold` (default `18`) ditambah fallback Verifikasi Identitas untuk usia di rentang batas. |
| Skor Liveness Rendah | `LOW_LIVENESS_SCORE` | **Ambang penolakan terpisah** (default `30` → `error` + penolakan) dan **Ambang peninjauan** (default `60` → `warning` + peninjauan) yang diterapkan terhadap skor liveness. |
| Kemungkinan Wajah Duplikat | `POSSIBLE_DUPLICATED_FACE` | Tindakan saat deteksi: `DECLINE` / `REVIEW` / `NO_ACTION` (default `NO_ACTION`). Hanya sesi alur kerja. |
| Beberapa Wajah | `MULTIPLE_FACES_DETECTED` | Tindakan saat deteksi: `DECLINE` / `REVIEW` / `NO_ACTION` (default `NO_ACTION`). Hanya liveness pasif alur kerja. |

Sesi alur kerja juga menyaring wajah terhadap daftar Anda: `FACE_IN_BLOCKLIST` selalu menolak secara otomatis (`error`), sedangkan `POSSIBLE_FACE_IN_BLOCKLIST` memindahkan sesi ke `In Review`.

## Peringatan yang dihasilkan

| Tag | Tingkat keparahan (`log_type`) | Deskripsi |
| - | - | - |
| `AGE_BELOW_MINIMUM` | `error` — tolak otomatis | Usia yang diestimasi berada di bawah ambang batas aktif (standalone `age_estimation_decline_threshold`; alur kerja `minimum_age_threshold` / `borderline_minimum_age_threshold`; semuanya memiliki nilai default `18`). `additional_data` selalu `null`. |
| `AGE_NOT_DETECTED` | `error` — tolak otomatis | Tidak ada usia wajah yang dapat diestimasi. Selalu dimunculkan oleh API standalone saat usia bernilai `null`; dalam alur kerja hanya saat fallback verifikasi identitas dinonaktifkan. |
| `LOW_LIVENESS_SCORE` | `error` pada/di bawah ambang batas penolakan; `warning` pada/di bawah ambang batas peninjauan | Skor liveness berada pada atau di bawah ambang batas yang dikonfigurasi (default ambang batas penolakan untuk standalone dan alur kerja adalah `30`; default peninjauan alur kerja `60`), menunjukkan potensi penggunaan foto statis, layar, atau video. Tidak dimunculkan saat `NO_FACE_DETECTED` terpicu. |
| `NO_FACE_DETECTED` | `error` — tolak otomatis | Tidak ada wajah yang terdeteksi pada gambar yang dikirimkan. Minta ulang pengguna untuk memosisikan kamera di tengah dengan pencahayaan yang memadai. |
| `LIVENESS_FACE_ATTACK` | `error` — tolak otomatis | Model liveness menandai adanya serangan presentasi (pemutaran ulang layar, foto cetak, topeng, deepfake). |
| `MULTIPLE_FACES_DETECTED` | Sesuai tindakan yang dikonfigurasi (default `information`, tanpa tindakan) | Ditemukan lebih dari satu wajah pada gambar; wajah terbesar menentukan hasilnya. Khusus liveness pasif pada alur kerja — API standalone tidak memunculkannya. |
| `FACE_IN_BLOCKLIST` | `error` — tolak otomatis | Wajah yang terdeteksi cocok dengan entri dalam daftar blokir wajah Anda yang dikelola melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md). Khusus sesi alur kerja. |
| `POSSIBLE_DUPLICATED_FACE` | Sesuai tindakan yang dikonfigurasi (default `information`, tanpa tindakan) | Wajah yang terdeteksi sangat mirip dengan wajah yang disetujui sebelumnya pada sesi lain (kecocokan yang memiliki `vendor_data` yang sama dikecualikan). Khusus sesi alur kerja. |

## Contoh

```json theme={null}
{
  "warnings": [
    {
      "risk": "LOW_LIVENESS_SCORE",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Low liveness score",
      "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data."
    },
    {
      "risk": "AGE_BELOW_MINIMUM",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Age below minimum",
      "long_description": "The age of the face is below the minimum age threshold for the application."
    }
  ]
}
```

Dalam payload keputusan alur kerja (`liveness_checks[].warnings[]`), setiap peringatan juga memuat `node_id` yang mengidentifikasi node alur kerja yang memunculkannya.

## Jenis peringatan

Setiap risiko diberi tingkat keparahan berdasarkan konfigurasi aplikasi Anda. Tingkat keparahan dibagi menjadi tiga kategori:

## Terkait

* [Ringkasan Estimasi Usia](https://docs.didit.me/id/core-technology/age-estimation/overview.md) — perilaku fitur, harga, dan logika keputusan.
* [Laporan Estimasi Usia](https://docs.didit.me/id/core-technology/age-estimation/report-age-estimation.md) — format respons lengkap baik untuk API standalone maupun nilai alur kerja tersemat.
* [Referensi API Standalone](https://docs.didit.me/id/standalone-apis/age-estimation.md) — permintaan dan respons `POST /v3/age-estimation/`.
* [Liveness pasif](https://docs.didit.me/id/core-technology/liveness/overview.md) — model liveness bersama yang digunakan dalam respons estimasi usia.
* [Model data — estimasi usia](https://docs.didit.me/id/reference/data-models.md#estimasi-usia) — skema kanonis kolom demi kolom.


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