---
title: Buat Proses
description: Buat proses verifikasi dengan mengirim gambar yang ditangkap secara langsung. Mengembalikan hasil sinkron.
canonical: https://developer.unico.io/id/dual-api/developers/api-reference/api/post-processes
locale: id
generated_by: markdown-export
---

- [/id/](/id/)
- [Referensi API](/id/dual-api/developers/api-reference/)
- [API](/id/dual-api/developers/api-reference/api/)
- Create Process

**Di halaman ini# Buat Proses

Endpoint ini menangani tiga produk yang berbagi path yang sama tetapi berbeda dalam parameter body, kapabilitas, dan field respons:

**Integrasi** — memvalidasi siapa pengguna tersebut dengan membandingkan wajah mereka dengan basis identitas Unico (`subject.duiType` + `subject.code` diperlukan).
**Transaksional** — memverifikasi bahwa ini adalah orang yang sama dari proses sebelumnya dengan membandingkan wajah-dengan-wajah (`referenceProcessId` ATAU array `references` dengan selfie / process id diperlukan).
**Cardholder Verification** — memastikan bahwa sebuah kartu adalah milik pemegang yang dinyatakan, tanpa pengambilan selfie apa pun (`subject.code` + `card` diperlukan). Secara opsional menggunakan kembali proses yang telah divalidasi sebelumnya melalui `referenceProcessId` untuk memicu gate penggunaan kembali; tanpa itu, respons akan default ke `unsure`. Lihat kapabilitas [Cardholder Verification](/id/capabilities/cardholder-verification).

Produk aktif ditentukan oleh **APIKEY** yang dikirim di header permintaan.
Untuk alur integrasi lengkap, lihat [Ringkasan API](/id/dual-api/developers/api-reference/api/).
### Endpoint​

LingkunganURL**Production**`POST https://api.id.unico.app/processes/v1`**Sandbox**`POST https://api.id.uat.unico.app/processes/v1`
### Permintaan​

Headers
HeaderNilai`Authorization``Bearer <access_token>` (lihat [Autentikasi](/id/dual-api/developers/api-reference/authentication))`APIKEY`API key yang telah disediakan — menentukan produk aktif dan kapabilitas yang diaktifkan.`Content-Type``application/json`
Parameter body
IntegrasiTransaksionalCardholder VerificationFieldTipeWajibDeskripsi`subject.duiType`integeryaPengidentifikasi tipe dokumen. Lihat [nilai `duiType`](#duitype-values) di bawah.`subject.code`stringyaNilai pengenal sebagaimana didefinisikan oleh `subject.duiType`. Tanpa titik atau tanda hubung.`subject.name`stringtidakNama lengkap.`subject.gender`stringtidak`M` atau `F`.`subject.birthDate`string (ISO 8601)tidakTanggal lahir (`YYYY-MM-DD`).`subject.email`stringtidakAlamat email.`subject.phone`stringtidakNomor telepon E.164.`subject.clientReference`stringkondisionalPengidentifikasi unik pengguna dalam sistem Anda. **Wajib untuk kemampuan [Multi Akun](/id/capabilities/multi-accounts).** Unik dalam basis Anda, maksimal 256 karakter, tanpa spasi.`useCase`stringtidakKonteks operasi, misalnya `Onboarding`.`subsidiaryId`stringtidakID cabang — diperlukan hanya jika terdapat beberapa cabang.`imageBase64`stringyaSelfie yang ditangkap oleh front-end Anda, dalam base64.FieldTipeWajibDeskripsi`references`arraykondisionalInput referensi untuk alur Validasi 1:1. Setiap item berisi `referenceType` (`REFERENCE_TYPE_IMAGE_BASE64` atau `REFERENCE_TYPE_PROCESS_ID`) dan `referenceContent` (gambar yang di-encode base64 atau UUID proses).`referenceProcessId`stringkondisional**Tidak digunakan lagi.** Gunakan `references` sebagai gantinya. ID proses Integrasi referensi untuk dibandingkan. Jika referensi adalah proses by-Unico, gunakan `authenticationInfo.authenticationId`.`imageBase64`stringyaSelfie yang ditangkap oleh front-end Anda, dalam base64.`subject`objecttidakWadah informasi pengguna.`subject.duiType`stringtidakJenis pengenal. Nilai yang mungkin: `DUI_TYPE_AR_DNI`, `DUI_TYPE_BR_CPF`, `DUI_TYPE_ID_NIK`, `DUI_TYPE_MX_CURP`, `DUI_TYPE_NG_NIN`, `DUI_TYPE_US_SSN`.`subject.code`stringtidakNilai pengenal sebagaimana didefinisikan oleh `subject.duiType`. Tanpa titik atau tanda hubung.`subject.name`stringtidakNama lengkap pengguna.`subject.gender`stringtidak`M` atau `F`.`subject.birthDate`string (ISO 8601)tidakTanggal lahir (`YYYY-MM-DD`).`subject.email`stringtidakAlamat email.`subject.phone`stringtidakNomor telepon E.164.`useCase`stringtidakKonteks operasi, misalnya `Transactional`.`subsidiaryId`stringtidakID cabang — diperlukan hanya jika ada beberapa cabang.informasiUntuk produk ini, tidak memungkinkan untuk melakukan orkestrasi dengan Skor Risiko. Hasil selalu dikembalikan secara sinkron dalam respons POST.FieldTipeWajibDeskripsi`subject.duiType`integeryaPengidentifikasi tipe dokumen. Lihat [nilai `duiType`](#duitype-values) di bawah. Saat ini hanya `DUI_TYPE_BR_CPF`.`subject.code`stringyaCPF pemegang kartu yang diverifikasi. Tanpa titik atau tanda hubung.`card.bin`stringkondisional6 atau 8 digit pertama kartu (BIN). Diperlukan bersama dengan `card.last4`.`card.last4`stringkondisional4 digit terakhir kartu. Diperlukan bersama dengan `card.bin`.`card.name`stringtidakNama pemegang kartu sebagaimana tercetak pada kartu.`referenceProcessId`string (UUID)tidakID proses yang telah divalidasi sebelumnya untuk digunakan kembali — proses dengan hasil Verifikasi Identitas atau Deteksi Kehidupan yang disetujui untuk CPF yang sama. Versi kemampuan ini saat ini berbasis penggunaan kembali: tanpa field ini, gate tidak akan pernah dipicu dan respons akan default ke hasil `unsure` standar — permintaan itu sendiri tidak akan pernah gagal.`useCase`stringtidakKonteks operasi, misalnya `CardholderVerification`.`subsidiaryId`stringtidakID cabang — diperlukan hanya jika terdapat beberapa cabang.informasiTidak ada `imageBase64` yang dikirim untuk produk ini — Cardholder Verification berjalan sepenuhnya di back-end, tanpa langkah pengambilan selfie.
**Nilai `duiType`**NegaraKodeDeskripsiAR6Paspor ArgentinaAR7DNI ArgentinaAR49SIM Argentina (Licencia Nacional de Conducir)AT34Nomor Pajak Austria (STNR)BE36Nomor Nasional Belgia (NN)BR1CPF BrasilBR5Paspor BrasilBR14CNPJ BrasilCA28SIN KanadaCH33Nomor AHV/AVS SwissCL9RUN ChiliCL52Paspor ChiliCL57SIM Chili (Licencia de Conducir)CO26NIT KolombiaCO53Paspor KolombiaCO55SIM Kolombia (Licencia de Conducción)CO56Kartu Kewarganegaraan Kolombia (Cédula de Ciudadanía)DE41Nomor Identifikasi Pajak Jerman (IdNr)DK29CPR DenmarkEC10NI EkuadorES50Nomor Identitas Warga Asing Spanyol (NIE)ES51Dokumen Identitas Nasional Spanyol (DNI)FI35Kode Identitas Pribadi Finlandia (HETU)FR46Nomor Referensi Pajak Prancis (SPI)GB30Nomor Asuransi Nasional Inggris (NINO)GT12CUI GuatemalaID16NIK IndonesiaIE47Nomor Layanan Publik Pribadi Irlandia (PPSN)IT37Codice Fiscale Italia (CF)LU48Nomor Identifikasi Nasional Luksemburg (Matricule)MX2CURP MeksikoMX25RFC Meksiko (Perorangan)MX58SIM Meksiko (Licencia de Conducir)NG8NIN NigeriaNG20Nomor Verifikasi Bank Nigeria (BVN)NG43Token BVN Nigeria (hash)NG44Token NIN Nigeria (hash)NL42Nomor Layanan Warga Negara Belanda (BSN)NO39Nomor Identitas Nasional Norwegia (Fødselsnummer)PE27RUC PeruPE40DNI PeruPE54Paspor PeruPL31PESEL PolandiaPT45Nomor Identifikasi Pajak Portugal (NIF)SE32Nomor Pribadi Swedia (PNR)SE38Nomor Koordinasi Swedia (Samordningsnummer)TR24Nomor Identifikasi Turki (TCKN)US4SSN Amerika SerikatUS11Paspor Amerika SerikatUS18SIM Amerika SerikatUS21Kartu Paspor Amerika SerikatUS22Paspor Polikarbonat Amerika SerikatUS23Kartu Identitas Amerika SerikatUY13CI UruguayZZ15Alamat emailZZ17Nomor telepon—0Tidak ditentukan—3Pengidentifikasi internal Unico
Persyaratan gambar
Resolusi minimum: 640 x 480 (standar HD)
Ukuran file maksimum: 800 KB (kompresi JPEG92 disarankan)
Format yang diterima: PNG, JPEG, WebP
Token JWT dari SDK kedaluwarsa setelah **10 menit** dan hanya dapat digunakan **sekali**

Permintaan yang dikompresi
API mendukung pengiriman body permintaan yang dikompresi, menggunakan header HTTP standar `Content-Encoding`. Ini bersifat opsional dan sepenuhnya backward-compatible: klien yang tidak mengirim header ini akan tetap berfungsi seperti sebelumnya.
Format yang didukung
EncodingHeader `Content-Encoding`StatusGzip`gzip`✅ DirekomendasikanDeflate`deflate`✅ DidukungTanpa kompresi(header tidak ada)✅ Didukung (perilaku default)
RekomendasiGunakan `gzip`. Ini memiliki dukungan paling universal di berbagai bahasa dan pustaka HTTP, sehingga menghindari ambiguitas implementasi yang ada pada format lain.
Kompresi direkomendasikan untuk permintaan dengan body yang besar (misalnya, payload JSON yang ekstensif, pengunggahan gambar yang di-encode base64, pengiriman data secara batch). Untuk permintaan kecil, overhead dari kompresi mungkin tidak memberikan manfaat yang berarti.
Cara mengirim permintaan yang dikompresi

Kompresi body permintaan (misalnya, JSON yang telah di-serialize) menggunakan algoritma yang dipilih.
Kirim body yang telah dikompresi sebagai byte biner dalam permintaan.
Sertakan header `Content-Encoding` dengan nilai yang sesuai (`gzip` atau `deflate`).
Pertahankan `Content-Type` yang menjelaskan format konten asli (misalnya, `application/json`), bukan encoding transport-nya.

cURLPython (requests).NET (C#, HttpClient)```
echo '{"subject":{"code":"12345678909"},"useCase":"Onboarding","imageBase64":"/9j/4AAQSkZJR..."}' | gzip > body.json.gzcurl -X POST https://api.id.unico.app/processes/v1 \  -H "Authorization: Bearer $TOKEN" \  -H "APIKEY: $API_KEY" \  -H "Content-Type: application/json" \  -H "Content-Encoding: gzip" \  --data-binary @body.json.gz
```

```
import gzipimport jsonimport requestspayload = {    "subject": {"code": "12345678909"},    "useCase": "Onboarding",    "imageBase64": capturedImage,}compressed_body = gzip.compress(json.dumps(payload).encode("utf-8"))response = requests.post(    "https://api.id.unico.app/processes/v1",    data=compressed_body,    headers={        "Authorization": f"Bearer {token}",        "APIKEY": api_key,        "Content-Type": "application/json",        "Content-Encoding": "gzip",    },)
```

```
using System.IO.Compression;using System.Text;using System.Text.Json;var json = JsonSerializer.Serialize(payload);var jsonBytes = Encoding.UTF8.GetBytes(json);using var outputStream = new MemoryStream();using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress, leaveOpen: true)){    await gzipStream.WriteAsync(jsonBytes, 0, jsonBytes.Length);}outputStream.Position = 0;var content = new ByteArrayContent(outputStream.ToArray());content.Headers.ContentType = new MediaTypeHeaderValue("application/json");content.Headers.ContentEncoding.Add("gzip");using var client = new HttpClient();client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");client.DefaultRequestHeaders.Add("APIKEY", apiKey);var response = await client.PostAsync("https://api.id.unico.app/processes/v1", content);
```

tipsUntuk contoh Python, gunakan parameter `data=`, bukan `json=`. Parameter `json=` menserialisasi payload secara otomatis, tetapi tidak mengompresnya.
**Menggunakan `deflate` sebagai gantinya:** alur di atas identik — hanya panggilan kompresi dan nilai `Content-Encoding` yang berubah.
Bahasa`deflate`Bash / cURL`zlib-flate -compress < body.json > body.json.deflate` (dari `qpdf`), lalu `-H "Content-Encoding: deflate"`Python`zlib.compress(data)` sebagai pengganti `gzip.compress(data)`.NET (C#)`System.IO.Compression.DeflateStream` sebagai pengganti `GZipStream`
`deflate` ambigu dalam praktiknyaContent encoding `deflate` pada HTTP ditentukan sebagai zlib stream (RFC 1950), tetapi beberapa klien dan server secara historis mengirim atau mengharapkan raw DEFLATE (RFC 1951) sebagai gantinya. API ini mengharapkan zlib-wrapped stream standar — output yang sama yang dihasilkan `zlib.compress()` (Python) atau `DeflateStream` (.NET) secara default. Jika ragu, gunakan `gzip`, yang tidak memiliki ambiguitas seperti ini.
Perilaku errorJika `Content-Encoding` dikirim dengan nilai yang tidak didukung, atau body rusak atau tidak valid untuk encoding yang dideklarasikan, API akan mengembalikan `400 Bad Request` dengan pesan yang menunjukkan bahwa body permintaan gagal didekompresi.
FAQ
**Apakah saya perlu mengubah sesuatu jika saya tidak ingin menggunakan kompresi?**
Tidak. Dukungan `Content-Encoding` bersifat aditif — permintaan tanpa header ini akan tetap diproses secara normal.
**Apakah ini memengaruhi respons API?**
Tidak. Fitur ini hanya berkaitan dengan body yang dikirim oleh klien (permintaan). Kompresi respons (apa yang dikembalikan oleh API) dikontrol secara terpisah melalui header `Accept-Encoding`.
**Format mana yang harus saya pilih?**
Gunakan `gzip`, kecuali ada batasan khusus dalam lingkungan Anda yang mengharuskan penggunaan format lain.
### Contoh​

Integrasi — cURLIntegrasi — Node.jsTransaksional — cURLTransaksional — Node.jsCardholder Verification — cURLCardholder Verification — Node.js```
curl -X POST https://api.id.unico.app/processes/v1 \  -H "Authorization: Bearer $TOKEN" \  -H "APIKEY: $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "subject": {      "duiType": 1,      "code": "12345678909",      "name": "Luke Skywalker",      "gender": "M",      "birthDate": "2000-05-20",      "email": "luke@example.com",      "phone": "5519725570707"    },    "useCase": "Onboarding",    "imageBase64": "/9j/4AAQSkZJR..."  }'
```

```
import fetch from 'node-fetch';const res = await fetch('https://api.id.unico.app/processes/v1', {  method: 'POST',  headers: {    'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,    'APIKEY': process.env.UNICO_API_KEY,    'Content-Type': 'application/json'  },  body: JSON.stringify({    subject: {      duiType: 1,      code: '12345678909',      name: 'Luke Skywalker',      gender: 'M',      birthDate: '2000-05-20',      email: 'luke@example.com',      phone: '5519725570707'    },    useCase: 'Onboarding',    imageBase64: capturedImage  })});const result = await res.json();
```

```
curl -X POST https://api.id.unico.app/processes/v1 \  -H "Authorization: Bearer $TOKEN" \  -H "APIKEY: $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "references": [      {        "referenceType": "REFERENCE_TYPE_PROCESS_ID",        "referenceContent": "4f00b35f-69d4-415a-a843-d975cefcb169"      }    ],    "useCase": "Transactional",    "imageBase64": "/9j/4AAQSkZJR..."  }'
```

```
import fetch from 'node-fetch';const res = await fetch('https://api.id.unico.app/processes/v1', {  method: 'POST',  headers: {    'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,    'APIKEY': process.env.UNICO_API_KEY,    'Content-Type': 'application/json'  },  body: JSON.stringify({    references: [      {        referenceType: 'REFERENCE_TYPE_PROCESS_ID',        referenceContent: '4f00b35f-69d4-415a-a843-d975cefcb169'      }    ],    useCase: 'Transactional',    imageBase64: capturedImage  })});const result = await res.json();
```

```
curl -X POST https://api.id.unico.app/processes/v1 \  -H "Authorization: Bearer $TOKEN" \  -H "APIKEY: $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "subject": {      "duiType": 1,      "code": "12345678909"    },    "card": {      "bin": "12345678",      "last4": "4321",      "name": "Luke Skywalker"    },    "referenceProcessId": "4f00b35f-69d4-415a-a843-d975cefcb169",    "useCase": "CardholderVerification"  }'
```

```
import fetch from 'node-fetch';const res = await fetch('https://api.id.unico.app/processes/v1', {  method: 'POST',  headers: {    'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,    'APIKEY': process.env.UNICO_API_KEY,    'Content-Type': 'application/json'  },  body: JSON.stringify({    subject: {      duiType: 1,      code: '12345678909'    },    card: {      bin: '12345678',      last4: '4321',      name: 'Luke Skywalker'    },    referenceProcessId: '4f00b35f-69d4-415a-a843-d975cefcb169',    useCase: 'CardholderVerification'  })});const result = await res.json();
```

### Respons​

IntegrasiTransaksionalCardholder Verification200 OKKontrak ini bersifat unik — field `idCloud.result` membawa keputusan konsolidasi dari kapabilitas yang digunakan.Unico mengonsolidasikan hasil dari kapabilitas yang dijalankan menjadi satu `idCloud.result`, siap untuk menentukan langkah berikutnya dalam alur Anda — tanpa perlu mengorkestrasi hasil individual.```
{  "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",  "status": 3,  "idCloud": {    "result": "approved"  }}
```

FieldTipeDeskripsi`id`string (UUID)Identifier proses. Gunakan dengan [Dapatkan Proses](/id/dual-api/developers/api-reference/api/get-process) untuk kueri ulang.`status`integer`1` (memproses), `3` (selesai dengan sukses), `5` (error).Possible result valuesidCloud.resultArtiTindakan yang direkomendasikanapprovedOrang nyata dan identitas tervalidasi.Lanjutkan alur.deniedIdentitas tidak tervalidasi, pemeriksaan liveness gagal, atau risiko ekstrem teridentifikasi.Akhiri alur atau alihkan ke alur alternatif.critical-riskTingkat risiko kritis teridentifikasi.Akhiri alur atau arahkan ke peninjauan manual.high-riskTingkat risiko tinggi teridentifikasi.Arahkan ke peninjauan manual atau alur alternatif.retryCapture atau skor tidak cukup untuk dievaluasi.Minta pengguna melakukan capture baru.inconclusiveBukti tidak cukup untuk sebuah keputusan.Arahkan ke peninjauan manual atau alur alternatif.Nilai yang dikembalikan bergantung pada recipe yang dikonfigurasi dalam APIKey Anda. Lihat [Alur](/id/dual-api/developers/api-reference/api/flows) untuk nilai hasil yang dapat dikembalikan oleh setiap recipe.Klien di Brasil dapat menerima respons per kapabilitasStruktur respons secara keseluruhan tetap sama — hasil tunggal adalah default-nya.Integrasi di Brasil dapat menerima hasil per kapabilitas yang terbuka. Setiap kapabilitas yang diaktifkan di APIKey menambahkan blok tersendiri ke respons — field untuk kapabilitas yang dinonaktifkan tidak disertakan.```
{  "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",  "status": 3,  "unicoId": { "result": "yes" },  "riskLevel": { "result": "inconclusive" },  "idFace": {    "personId": "a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890a1b2c3d4e5f67890",    "result": "FOUND"  },  "government": { "serpro": 87 },  "liveness": 1}
```

Field respons bergantung pada APIKey AndaContoh di atas menampilkan semua kemungkinan field kapabilitas. Respons aktual Anda hanya akan menyertakan field untuk kapabilitas yang diaktifkan dalam konfigurasi APIKey Anda — field untuk kapabilitas yang dinonaktifkan tidak disertakan sama sekali. Hubungi manajer proyek Unico Anda untuk mengaktifkan atau menyesuaikan kapabilitas.FieldTipeDeskripsi`unicoId.result`string`yes`, `no`, `inconclusive` — lihat [Verifikasi Identitas](/id/capabilities/identity-verification).`riskLevel.result`string`approved`, `reproved`, `risk-critical`, `risk-high`, `inconclusive` — lihat [nilai yang mungkin](#risklevel-values) di bawah atau [Klasifikasi Risiko Penipuan](/id/capabilities/fraud-risk-classification).`idFace.result`string`FOUND` — lihat Pengidentifikasi Wajah.`idFace.personId`stringPengidentifikasi opak stabil untuk wajah, dikembalikan bersama `idFace.result = FOUND`. Ketika tidak ada wajah yang dapat diidentifikasi dalam gambar, permintaan gagal dengan error [`20532`](#error-codes) alih-alih mengembalikan blok `idFace`.`identityFraudsters.result`string**Tidak digunakan lagi.** Gunakan `riskLevel` sebagai gantinya. Klien dengan integrasi yang sedang berjalan dapat terus menggunakannya sambil mengoordinasikan migrasi dengan tim proyek yang bertanggung jawab.`government.serpro`integerSkor kemiripan Serpro (0–100, -1, -2). Tersedia di Brasil saja. Lihat [Hasil Kemiripan Serpro](/id/capabilities/serpro-similarity-return).`liveness`integer`1` (lulus), `2` (gagal) — lihat [Deteksi Kehidupan](/id/capabilities/liveness).riskLevel.result — nilai yang mungkinNilaiMakna`approved`Ini adalah wajah pemegang ID, dan tidak ditemukan bukti terkait penipuan.`reproved`Penolakan direkomendasikan, karena beberapa indikator penipuan terdeteksi.`risk-critical`Penolakan direkomendasikan, namun keputusan akhir ada pada kebijaksanaan Anda. Risiko kritis menunjukkan bahwa kami menemukan setidaknya 2 bukti kuat adanya penipuan.`risk-high`Penolakan juga direkomendasikan, namun keputusan tetap ada pada Anda. Risiko tinggi menunjukkan bahwa kami menemukan setidaknya satu bukti kuat adanya penipuan.`inconclusive`Tidak ditemukan bukti kuat adanya penipuan. Oleh karena itu, tidak dapat disimpulkan apakah terdapat risiko yang relevan atau tidak.informasiKetika `unicoId.result = inconclusive` dan orkestrasi Skor Risiko aktif, proses mungkin mengembalikan `status: 1` (memproses). Poll [Dapatkan Proses](/id/dual-api/developers/api-reference/api/get-process) atau gunakan webhook untuk mengambil hasil akhir.Klien di Meksiko dapat menerima blok RENAPO VerificationRespons mempertahankan struktur yang sama dan menambahkan blok idGov.Integrasi di Meksiko dengan RENAPO Verification aktif menerima blok idGov tambahan berisi data yang disimpan RENAPO untuk CURP pengguna. Ini adalah jawaban terpisah dari hasil identitas.```
{  "id": "11111111-2222-3333-4444-555555555555",  "status": 3,  "idCloud": { "result": "approved" },  "idGov": {    "government_valid": true,    "curp": "PUEA880304MDFRJN04",    "government_name": "ANA PRUEBA EJEMPLO",    "date_of_birth": "1988-03-04",    "age": 38,    "gender": "F",    "deceased": false,    "is_mexican": true,    "citizenship": "MEXICO",    "state_of_birth": "Ciudad de México",    "state_iso": "MX-CMX",    "issuing_entity_code": "DF",    "municipality_registration": ""  }}
```

FieldTipeDeskripsi`idGov`objectData RENAPO untuk CURP. Tidak ada jika kapabilitas tidak diaktifkan. `{}` jika RENAPO tidak merespons. Hanya Meksiko. Lihat [RENAPO Verification](/id/capabilities/renapo-verification).200 OKKontrak ini bersifat unik — field `idCloud.result` membawa keputusan konsolidasi dari kapabilitas yang digunakan.Unico mengonsolidasikan hasil dari kapabilitas yang dijalankan menjadi satu `idCloud.result`, siap untuk menentukan langkah berikutnya dalam alur Anda — tanpa perlu mengorkestrasi hasil individual.```
{  "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",  "status": 3,  "idCloud": {    "result": "approved"  }}
```

FieldTipeDeskripsi`id`string (UUID)Identifier proses.`status`integer`3` (selesai dengan sukses), `5` (error). Untuk semua nilai yang mungkin, lihat [Dapatkan Proses](/id/dual-api/developers/api-reference/api/get-process).Possible result valuesidCloud.resultArtiTindakan yang direkomendasikanapprovedOrang nyata dan identitas tervalidasi.Lanjutkan alur.deniedIdentitas tidak tervalidasi, pemeriksaan liveness gagal, atau risiko ekstrem teridentifikasi.Akhiri alur atau alihkan ke alur alternatif.critical-riskTingkat risiko kritis teridentifikasi.Akhiri alur atau arahkan ke peninjauan manual.high-riskTingkat risiko tinggi teridentifikasi.Arahkan ke peninjauan manual atau alur alternatif.retryCapture atau skor tidak cukup untuk dievaluasi.Minta pengguna melakukan capture baru.inconclusiveBukti tidak cukup untuk sebuah keputusan.Arahkan ke peninjauan manual atau alur alternatif.Nilai yang dikembalikan bergantung pada recipe yang dikonfigurasi dalam APIKey Anda. Lihat [Alur](/id/dual-api/developers/api-reference/api/flows) untuk nilai hasil yang dapat dikembalikan oleh setiap recipe.Klien di Brasil dapat menerima respons per kapabilitasStruktur respons secara keseluruhan tetap sama — hasil tunggal adalah default-nya.Integrasi di Brasil dapat menerima hasil per kapabilitas yang terbuka. Setiap kapabilitas yang diaktifkan di APIKey menambahkan blok tersendiri ke respons — field untuk kapabilitas yang dinonaktifkan tidak disertakan.```
{  "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",  "status": 3,  "biometryToken": { "result": true },  "liveness": 1}
```

FieldTipeDeskripsi`biometryToken.result`boolean`true` jika wajah yang dikirim cocok dengan proses referensi; `false` jika tidak.`liveness`integer`1` (lulus), `2` (gagal) — lihat [Deteksi Kehidupan](/id/capabilities/liveness).200 OK```
{  "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",  "status": 3,  "cardholderVerification": {    "result": "approved"  }}
```

FieldTipeDeskripsi`id`string (UUID)Identifier proses.`status`integer`1` (memproses), `3` (selesai dengan sukses), `5` (error). Untuk semua nilai, lihat [Dapatkan Proses](/id/dual-api/developers/api-reference/api/get-process).`cardholderVerification.result`string`approved` — CPF dan kartu tersebut adalah milik orang yang sama. `unsure` — baik karena reuse gate tidak terpenuhi, atau karena verifikasi itu sendiri tidak meyakinkan. Tidak muncul selama `status` belum bernilai `3`. Lihat [Cardholder Verification](/id/capabilities/cardholder-verification).
### Kode Error​

400 Bad Request403 Forbidden409 Conflict429 Too Many Requests500 Internal Server ErrorCodeMessageDeskripsi`40221`This flow does not support reusing a prior process (referenceProcessId or bioTokenId) without an image; send an image (imageBase64, or references[0] with type IMAGE_BASE64) instead.Alur penggunaan ulang (`referenceProcessId`/`bioTokenId`, tanpa gambar) ditolak karena penggunaan ulang proses tidak diaktifkan untuk API key ini.`20900`O base64 informado não é válido.Parameter base64 tidak valid. Kemungkinan penyebab: bukan gambar atau percobaan injeksi.`20807`A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480.Resolusi gambar yang diunggah terlalu rendah.`20532`No face detected in image.Tidak ada wajah yang dapat terdeteksi dalam gambar yang dikirim.`20513`The referenced process was not found.`referenceProcessId` menunjuk ke proses yang tidak ada atau tidak lagi dapat diakses.`20512`The referenced process is not available for reuse.Proses referensi ada tetapi tidak tersedia untuk digunakan kembali.`20509`The subject.name field is invalid.`subject.name` mengandung karakter tidak valid.`20508`The subject.gender field is invalid.`subject.gender` harus `M` atau `F`.`20507`O parâmetro subject.code é inválido.CPF tidak standar atau tidak ada.`20506`O base64 informado é muito grande. O tamanho máximo suportado é até 800kb.Ukuran gambar melebihi 800 KB; kompres ke JPEG92.`20505`O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp.Format base64 tidak valid atau tidak didukung.`20065`The referenceProcessId field is invalid.`referenceProcessId` bukan UUID yang valid.`20062`The useCase field is invalid.Nilai yang tidak dikenali di field `useCase`.`20024`The referenceProcessId field is missing.Parameter `referenceProcessId` tidak diberikan dan `references` tidak dikirim sebagai alternatif. Tidak berlaku untuk Cardholder Verification — `referenceProcessId`-nya tidak pernah divalidasi sebagai wajib; reuse gate yang tidak terpenuhi menjawab `unsure` sebagai gantinya.`20533`The card field is missing.[Cardholder Verification](/id/capabilities/cardholder-verification): objek `card` tidak diberikan.`20534`The card.bin field is missing.[Cardholder Verification](/id/capabilities/cardholder-verification): `card.bin` tidak diberikan.`20535`The card.last4 field is missing.[Cardholder Verification](/id/capabilities/cardholder-verification): `card.last4` tidak diberikan.`20536`The card data is invalid.[Cardholder Verification](/id/capabilities/cardholder-verification): data kartu ditolak karena tidak valid.`20021`The subject.phone field is invalid.Format `subject.phone` tidak valid (IDD + kode area + nomor, 13 karakter).`20019`The subject.birthDate field is invalid.`subject.birthDate` di luar format ISO 8601 (`YYYY-MM-DD`).`20009`O parâmetro imagebase64 não foi informado.Parameter gambar selfie tidak ada.`20008`The subject.email field is invalid.Format email tidak valid di `subject.email`.`20006`O parâmetro subject.name não foi informado.Parameter subject.name tidak ada.`20005`O parâmetro subject.code não foi informado.Parameter subject.code tidak ada.`20004`O parâmetro subject não foi informado.Parameter subject tidak ada.`20003`The request body is missing or invalid.Payload null atau tidak valid.`20002`O parâmetro APIKey não foi informado.Parameter APIKEY tidak ada di header permintaan.`20001`O parâmetro authtoken não foi informado.Parameter token integrasi tidak ada di header permintaan.`10508`The JWT with the captured face has already been used.JWT hanya dapat digunakan sekali.`10507`The JWT with the captured face is expired.JWT kedaluwarsa; harus dikirim dalam 10 menit.`10506`The imageBase64 field is not a valid JWT from SDK.`imageBase64` bukan JWT valid yang dihasilkan oleh SDK.Bearer token atau `APIKEY` tidak ada, kedaluwarsa, atau tidak valid. Lihat [Autentikasi](/id/dual-api/developers/api-reference/authentication).CodeMessageDeskripsi`30017`User does not have permission to perform this action.JWT yang salah format atau pengguna tanpa izin untuk melakukan operasi ini.`10502`O token informado está expirado.Access-token telah kedaluwarsa.`10501`O token informado é inválido.Token autentikasi tidak valid.`10201`O AppKey informado é inválido.APIKEY tidak valid atau tidak ada.CodeMessageDeskripsi`20073`The processID already exists.`processId` yang diberikan sudah ada untuk tenant ini.Batas rate tercapai. Ketika sistem Anda menerima error HTTP 429, Anda harus menerapkan mekanisme untuk mencegah kegagalan berantai dan menghindari memperburuk pembatasan.**Praktik terbaik:**
**Periode pendinginan (backoff):** Segera hentikan atau batasi permintaan berikutnya dari sistem Anda. Jangan terus-menerus mencoba ulang permintaan yang gagal dalam loop ketat.
**Antrian & pembatasan:** Buffer atau antrikan permintaan keluar di sisi Anda untuk mengontrol aliran lalu lintas sebelum mengirimnya kembali.
**Exponential backoff dengan jitter:** Saat mencoba ulang, tingkatkan waktu tunggu secara eksponensial antar percobaan (misalnya, 1 detik, 2 detik, 4 detik, 8 detik) dan tambahkan penundaan acak kecil ("jitter") untuk mencegah efek kawanan di mana semua permintaan yang diantrikan mencoba ulang pada milidetik yang sama persis.
peringatanTerus-menerus menghubungi endpoint yang dibatasi rate tanpa melakukan backoff dapat **memperpanjang periode pembatasan** dan sangat memengaruhi throughput operasional sistem Anda. Pembatasan permintaan yang tepat di sisi Anda memastikan integrasi yang lebih lancar dan lebih tangguh.Untuk batas default, peningkatan permintaan, dan detail tambahan, lihat [Rate Limits](/id/dual-api/developers/api-reference/rate-limits).CodeMessageDeskripsi`99999`Internal failure! Try again laterKetika terjadi error internal.
### Selanjutnya​

Untuk melihat kueri hasil proses Integrasi, lihat [Dapatkan Proses](/id/dual-api/developers/api-reference/api/get-process).
Untuk melihat semua kombinasi recipe dan nilai hasil yang mungkin, lihat [Alur](/id/dual-api/developers/api-reference/api/flows).
Untuk operasi Dokumen dan Verifikasi Usia, lihat halaman masing-masing di bagian ini.
Terakhir diperbarui pada 8 Okt 2026**