> ## 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 Manajemen Verifikasi v3: Alur Kerja & Penagihan

> Kelola alur kerja, kuesioner, penagihan & daftar blokir via API Didit. Siap MCP. Harga bayar per pemakaian, tanpa kontrak.

## Autentikasi

Semua endpoint API manajemen menggunakan kunci API aplikasi Anda. Tidak ada UUID org/app yang diperlukan di URL karena aplikasi diidentifikasi dari kunci Anda.

```bash theme={null}
curl -H "x-api-key: YOUR_API_KEY" https://verification.didit.me/v3/...
```

Belum punya kunci API? [Daftar secara programatis dalam 2 panggilan API](https://docs.didit.me/id/integration/programmatic-registration.md).

***

## Alur Kerja

Alur kerja menentukan langkah verifikasi yang dijalani pengguna Anda (pemindaian ID, liveness, pencocokan wajah, skrining AML, dll.). Setiap alur kerja adalah konfigurasi yang dapat digunakan ulang dan dilampirkan ke sesi.

**GET /v3/workflows/** `GET`

Daftar semua alur kerja untuk aplikasi Anda. Mengembalikan fitur, ambang batas, dan apakah alur kerja tersebut merupakan nilai bawaan.

**POST /v3/workflows/** `POST`

Buat alur kerja baru. Tentukan fitur verifikasi yang akan diaktifkan, atur ambang batas, konfigurasikan jenis dokumen yang diterima, dan lainnya.

**GET /v3/workflows/\{uuid}/** `GET`

Dapatkan detail lengkap dari alur kerja tertentu, termasuk semua konfigurasi fitur dan ambang batas.

**PATCH /v3/workflows/\{uuid}/** `PATCH`

Perbarui konfigurasi alur kerja. Anda dapat mengubah pengaturan fitur, ambang batas, atau dokumen yang diterima.

**DELETE /v3/workflows/\{uuid}/** `DELETE`

Hapus alur kerja. Sesi yang sudah menggunakan alur kerja ini tidak terpengaruh.

> [!WARNING]
>
> Kami sangat menyarankan penggunaan **Konsol Bisnis** untuk membuat dan mengonfigurasi alur kerja. Pembuat alur kerja visual menyediakan templat, konfigurasi fitur dengan seret dan lepas, pengaturan dokumen, penyesuaian ambang batas, dan pratinjau, tanpa perlu menulis kode. Gunakan API hanya untuk otomatisasi atau pengelolaan alur kerja secara programatis.

### Contoh Cepat: Membuat Alur Kerja

Nilai `workflow_type` menentukan kumpulan fitur dasar. Fitur individual kemudian diaktifkan atau dinonaktifkan dengan flag `is_*_enabled`.

```bash theme={null}
curl -X POST https://verification.didit.me/v3/workflows/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workflow_label": "Standard KYC",
    "workflow_type": "kyc",
    "is_default": true,
    "is_face_match_enabled": true,
    "is_liveness_enabled": true,
    "is_aml_enabled": false
  }'
```

Nilai `workflow_type` yang tersedia: `kyc`, `kyb`, `adaptive_age_verification`, `biometric_authentication`, `address_verification`, `questionnaire_verification`, `email_verification`, `phone_verification`.

Untuk alur kerja `kyc`, verifikasi identitas otomatis disertakan, sehingga Anda tidak memerlukan flag terpisah untuk itu. Gunakan flag `is_*_enabled` untuk menambah atau menghapus fitur opsional seperti pencocokan wajah, liveness, AML, NFC, telepon, email, bukti alamat, Analisis Perangkat & IP, dan lainnya.

Kemudian gunakan alur kerja tersebut saat membuat sesi:

```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "callback_url": "https://myapp.com/callback",
    "workflow_id": "WORKFLOW_UUID_FROM_ABOVE"
  }'
```

***

## Kuesioner

Formulir kustom yang dapat Anda tambahkan ke alur kerja verifikasi untuk mengumpulkan informasi tambahan dari pengguna.

**GET /v3/questionnaires/** `GET`

Daftar semua kuesioner.

**POST /v3/questionnaires/** `POST`

Buat kuesioner baru dengan pertanyaan kustom, logika percabangan, dan terjemahan.

**GET /v3/questionnaires/\{uuid}/** `GET`

Dapatkan detail kuesioner, termasuk semua pertanyaan dan struktur formulir.

**PATCH /v3/questionnaires/\{uuid}/** `PATCH`

Perbarui kuesioner.

**DELETE /v3/questionnaires/\{uuid}/** `DELETE`

Hapus kuesioner.

***

## Pengguna

Kelola individu terverifikasi (pengguna) di aplikasi Anda. Setiap pengguna diidentifikasi oleh string `vendor_data` yang Anda berikan saat membuat sesi.

**GET /v3/users/** `GET`

Daftar semua pengguna untuk aplikasi Anda, termasuk status verifikasi dan riwayat sesinya.

**GET /v3/users/\{vendor\_data}/** `GET`

Dapatkan detail pengguna berdasarkan pengenal vendor\_data Anda.

**PATCH /v3/users/\{vendor\_data}/** `PATCH`

Perbarui metadata pengguna.

**POST /v3/users/delete/** `POST`

Hapus pengguna secara massal. Isi: `{"vendor_data_list": ["user-1", "user-2"]}` atau `{"delete_all": true}`. Juga menghapus permanen semua templat biometrik yang disimpan untuk pengguna tersebut.

***

## Templat Biometrik

Templat biometrik wajah tanpa gambar yang disimpan oleh aplikasi yang telah memberikan persetujuan setelah sesi dihapus. Lihat [Templat biometrik](https://docs.didit.me/id/management-api/biometric-templates/overview.md).

**GET /v3/biometric-templates/** `GET`

Daftar berpaginasi dengan filter (`vendor_data`, `vendor_user_uuid`, `status`, `source_type`, `retained_from`, `retained_to`, `ordering`).

**GET /v3/biometric-templates/count/** `GET`

Jumlah templat dengan filter yang sama.

**GET /v3/biometric-templates/\{template\_uuid}/** `GET`

Satu templat: pengguna pemilik, referensi asal, tanggal kedaluwarsa, instruksi, dan status.

**DELETE /v3/biometric-templates/\{template\_uuid}/** `DELETE`

Hapus permanen satu templat. Mengembalikan `{"uuid": "...", "outcome": "purged" | "already_purged"}`.

**POST /v3/biometric-templates/delete/** `POST`

Hapus permanen secara massal. Isi: `{"template_uuids": [...]}` atau `{"delete_all": true}` ditambah filter opsional.

***

## Operasi Sesi

**POST /v3/sessions/delete/** `POST`

Hapus sesi secara massal. Membutuhkan `delete:sessions`. Isi: `{"session_numbers": ["1", "2", "3"]}` atau `{"delete_all": true}` (persempit `delete_all` dengan filter Daftar Sesi yang diawali `filter_`, seperti `filter_status`), ditambah `retain_face_embeddings`, `face_retention_days`, `face_retention_deadline`, `deletion_instruction`, dan `instruction_id` yang bersifat opsional. Hingga 20 sesi yang cocok mengembalikan `200` dengan `face_retention_outcome` untuk setiap sesi; lebih dari itu mengembalikan `202` dengan tugas penghapusan.

**GET /v3/sessions/delete/\{job\_id}/** `GET`

Progres dan jumlah setiap hasil dari penghapusan sesi massal yang mengembalikan `202`.

**GET /v3/sessions/\{uuid}/reviews/** `GET`

Daftar tinjauan dan log aktivitas untuk sesi.

**POST /v3/sessions/\{uuid}/reviews/** `POST`

Tambahkan catatan tinjauan atau perubahan status ke sesi.

***

## Penagihan

**GET /v3/billing/balance/** `GET`

Mengambil saldo kredit saat ini dan pengaturan isi ulang otomatis.

```json theme={null}
{
  "balance": "142.5000",
  "auto_refill_enabled": true,
  "auto_refill_amount": "100.0000",
  "auto_refill_threshold": "10.0000"
}
```

**POST /v3/billing/top-up/** `POST`

Membuat sesi checkout Stripe untuk mengisi ulang kredit. Setiap isi ulang bernilai \$50 hingga \$20,000 dan ditambahkan sesuai nilai nominalnya.

```json theme={null}
{
  "amount_in_dollars": 100,
  "success_url": "https://myapp.com/billing/success",
  "cancel_url": "https://myapp.com/billing/cancel"
}
```

***

## Daftar (Daftar Blokir, Daftar Izin & Kustom)

Kelola daftar bertipe untuk pemblokiran, penambahan ke daftar izin, dan kondisi alur kerja kustom. Lihat [dokumentasi lengkap API Daftar](https://docs.didit.me/id/management-api/lists/overview.md).

**GET /v3/lists/** `GET`

Mencantumkan semua daftar untuk aplikasi (daftar blokir, daftar izin, kustom).

**POST /v3/lists/\{list\_uuid}/entries/** `POST`

Menambahkan entri ke daftar. Mendukung `reference_session_id` untuk mengekstrak data secara otomatis dari sesi, dan `reference_object_uuid` untuk keterlacakan ke transaksi/pengguna/bisnis.

**DELETE /v3/lists/\{list\_uuid}/entries/\{entry\_uuid}/** `DELETE`

Menghapus entri dari daftar.

**POST /v3/lists/\{list\_uuid}/entries/face-upload/** `POST`

Mengunggah gambar wajah ke daftar blokir wajah (base64).

***

## Konfigurasi Webhook

**GET /v3/webhook/** `GET`

Mengambil konfigurasi webhook saat ini, termasuk URL, versi, kunci rahasia untuk memverifikasi tanda tangan webhook, serta kebijakan retensi data dan kebijakan retensi templat biometrik aplikasi.
Respons juga memuat `allowed_domains`, yang dijelaskan di bawah `PATCH /v3/webhook/`.

```json theme={null}
{
  "webhook_url": "https://myapp.com/webhooks/didit",
  "webhook_version": "v3",
  "secret_shared_key": "whsec_a1b2c3d4e5f6...",
  "capture_method": "both",
  "data_retention_months": null,
  "face_retention_policy": "delete_with_session",
  "face_retention_days": null,
  "allowed_return_hosts": ["app.example.com"],
  "allowed_domains": ["https://app.example.com"]
}
```

**PATCH /v3/webhook/** `PATCH`

Perbarui URL webhook, versi, atau lakukan rotasi kunci rahasia. Setel `rotate_secret_key: true` untuk membuat rahasia webhook baru (rahasia lama langsung tidak berlaku). Juga menetapkan kebijakan retensi aplikasi: `data_retention_months`, dan `face_retention_policy` (`delete_with_session` sebagai default, atau `retain_until_user_deleted`) beserta `face_retention_days` yang wajib diisi dengan nilai berhingga (1-3650) saat retensi diaktifkan. Lihat [Retensi templat biometrik](https://docs.didit.me/id/console/data-retention.md#retensi-templat-biometrik). Juga mendaftarkan `allowed_return_hosts`: hingga 20 nama host saja (misalnya `app.example.com`, tanpa skema, port, path, atau wildcard) yang boleh menjadi tujuan pengembalian pengguna melalui HTTPS setelah verifikasi [API dompet ID digital](https://docs.didit.me/id/standalone-apis/digital-id-wallets.md#daftarkan-tujuan-pengembalian-anda). Daftar baru menggantikan daftar yang sudah terdaftar, dan domain White Label aplikasi Anda selalu diizinkan.

Juga menetapkan `allowed_domains`: hingga 50 origin web (misalnya `https://app.example.com`) tempat alur verifikasi yang di-hosting boleh disematkan dan tempat pengguna boleh dikembalikan dengan `callback` sesi.
Setiap entri terdiri dari skema, host, dan port opsional, tanpa path, query, atau wildcard.
Gunakan `https`; `http` hanya diterima untuk `localhost`, `127.0.0.1`, dan `::1`.
Didit menyimpan setiap origin dalam huruf kecil tanpa port default, dan mengembalikan daftar tersebut di `allowed_domains`.
Entri yang tidak valid gagal dengan 400 pada `allowed_domains`.
Daftar baru menggantikan daftar yang sudah terdaftar, dan daftar kosong menghapus pembatasan.
Selama daftar tidak kosong, [`POST /v3/session/`](https://docs.didit.me/id/sessions-api/create-session) menolak `callback` web di luar daftar tersebut dengan 400, dan alur yang di-hosting tidak mengarahkan pengguna ke callback tersimpan atau callback default alur kerja yang berada di luar daftar tersebut.
Skema URL kustom (deep link aplikasi) dan panggilan API server-ke-server tidak terpengaruh.

Jika Anda mengirim `endpoints`, setiap tujuan webhook yang tidak tercantum dalam daftar akan dihapus secara permanen, beserta rahasia penandatanganannya dan seluruh log pengirimannya, sama seperti [`DELETE /v3/webhook/destinations/{destination_uuid}/`](https://docs.didit.me/id/management-api/webhook/delete-destination).
Tindakan ini tidak dapat dibatalkan.
Untuk mengelola tujuan satu per satu, gunakan [endpoint tujuan webhook](https://docs.didit.me/id/management-api/webhook/list-destinations.md) sebagai gantinya.

```json theme={null}
{
  "webhook_url": "https://myapp.com/webhooks/didit",
  "webhook_version": "v3",
  "allowed_domains": ["https://app.example.com"]
}
```

***

## Ringkasan Lengkap Endpoint API

| Endpoint | Metode | Deskripsi |
| - | - | - |
| `/v3/session/` | POST | Membuat sesi verifikasi |
| `/v3/sessions/` | GET | Mencantumkan semua sesi |
| `/v3/session/{id}/decision/` | GET | Mengambil hasil verifikasi sesi |
| `/v3/session/{id}/update-status/` | PATCH | Menyetujui atau menolak sesi |
| `/v3/session/{id}/delete/` | DELETE | Menghapus satu sesi |
| `/v3/sessions/delete/` | POST | Hapus massal sesi |
| `/v3/sessions/delete/{job_id}/` | GET | Status tugas penghapusan sesi massal |
| `/v3/sessions/{id}/reviews/` | GET, POST | Aktivitas/peninjauan sesi |
| `/v3/workflows/` | GET, POST | Mencantumkan/membuat alur kerja |
| `/v3/workflows/{id}/` | GET, PATCH, DELETE | Detail/pembaruan/penghapusan alur kerja |
| `/v3/questionnaires/` | GET, POST | Mencantumkan/membuat kuesioner |
| `/v3/questionnaires/{id}/` | GET, PATCH, DELETE | Detail kuesioner |
| `/v3/users/` | GET | Mencantumkan pengguna terverifikasi |
| `/v3/users/{vendor_data}/` | GET, PATCH | Detail/perbaruan pengguna |
| `/v3/users/delete/` | POST | Hapus pengguna secara massal (juga menghapus templat biometrik yang disimpan) |
| `/v3/biometric-templates/` | GET | Mencantumkan templat biometrik yang disimpan |
| `/v3/biometric-templates/count/` | GET | Menghitung templat biometrik yang disimpan |
| `/v3/biometric-templates/{id}/` | GET, DELETE | Detail templat / hapus templat secara permanen |
| `/v3/biometric-templates/delete/` | POST | Hapus templat secara permanen secara massal |
| `/v3/lists/` | GET, POST | Mencantumkan semua daftar / membuat daftar |
| `/v3/lists/{id}/` | GET, PATCH, DELETE | Detail daftar / perbarui / hapus |
| `/v3/lists/{id}/entries/` | GET, POST | Mencantumkan entri / menambahkan entri |
| `/v3/lists/{id}/entries/{eid}/` | DELETE | Menghapus entri |
| `/v3/lists/{id}/entries/face-upload/` | POST | Unggah wajah ke daftar blokir |
| `/v3/webhook/` | GET, PATCH | Konfigurasi webhook (URL, rahasia, versi), kebijakan retensi, dan host pengembalian dompet |
| `/v3/billing/balance/` | GET | Memeriksa saldo kredit |
| `/v3/billing/top-up/` | POST | Mengisi ulang kredit |


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