Mengambil proses yang sudah ada berdasarkan identifier-nya. Berdasarkan kontrak API, hasilnya sudah dikembalikan secara sinkron saat pembuatan proses — gunakan endpoint ini untuk kueri ulang, audit, dan dukungan.
Sebelum mengambil proses, tinjau konfigurasi webhook dan strategi fallback kami — klik di sini.
Endpoint
| Lingkungan | URL |
|---|---|
| Produksi | GET https://api.idcloud.unico.app/client/v1/process/{processId} |
| Sandbox | GET https://api.idcloud.uat.unico.app/client/v1/process/{processId} |
Permintaan
| Header | Nilai |
|---|---|
Authorization | Bearer <access_token> |
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
processId | string (UUID) | ya | Identifier proses yang dikembalikan oleh Buat Proses. |
Contoh
- cURL
- Node.js
curl -X GET https://api.idcloud.unico.app/client/v1/process/$PROCESS_ID \
-H "Authorization: Bearer $TOKEN"
import fetch from 'node-fetch';
const res = await fetch(
`https://api.idcloud.unico.app/client/v1/process/${processId}`,
{ headers: { Authorization: `Bearer ${accessToken}` } }
);
const { process: proc } = await res.json();
Respons
{
"process": {
"id": "226fd950-4b80-4da6-a476-ba9d397ddc91",
"flow": "id_r2",
"callbackUri": "/",
"userRedirectUrl": "https://cadastro.uat.unico.app/flow?collect-data=true&dynamic-wrapper=true&id=226fd950-4b80-4da6-a476-ba9d397ddc91",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_APPROVED",
"createdAt": "2026-08-06T01:42:21.693615Z",
"finishedAt": "2026-08-06T01:43:03.080508Z",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "40*******50",
"friendlyName": "teste",
"email": "",
"phone": "5511999999999",
"notifications": [
{ "notificationChannel": "NOTIFICATION_CHANNEL_WHATSAPP" }
],
"phoneCountryCodeAlpha3": ""
},
"purpose": "personAuthentication",
"services": [],
"authenticationInfo": { "authenticationId": "55cba227-9828-49df-a16f-bcdaa7bdaa4d" },
"capacities": ["PROCESS_CAPACITY_IDCLOUDONE"],
"expiresAt": "2026-08-13T01:42:21.536500Z",
"token": "",
"companyData": { "branchId": "", "countryCode": "BRA" },
"simulated": false
}
}
| Field | Arti |
|---|---|
id | UUID proses; kunci yang digunakan untuk mengueri dan melacak flow. |
flow | Jenis perjalanan yang dijalankan (misalnya id_r2, idlivetrust_r2, idtrust_r2, ...). |
callbackUri | Callback URI tempat aplikasi klien diarahkan pada akhir flow. |
userRedirectUrl | URL lengkap dari halaman CbU yang dibuka pengguna untuk menjalankan perjalanan (membawa id dan flag perilaku). |
state | State siklus hidup proses. Nilai PROCESS_STATE_* (misalnya CREATED, FAILED, FINISHED, AWAITING_FOR_DOCUMENT, UNSPECIFIED). |
result | Verdict akhir dari evaluasi. Nilai PROCESS_RESULT_* (misalnya APPROVED, AUTHENTICATED, NOT_APPROVED, ...). Hanya konklusif saat state = PROCESS_STATE_FINISHED. |
createdAt | Timestamp pembuatan proses (UTC). |
finishedAt | Timestamp penyelesaian proses (UTC). |
person | Sub-objek dengan data orang yang diverifikasi. |
purpose | Tujuan proses (misalnya personAuthentication, registrasi orang). |
services | Daftar layanan tambahan yang terlampir pada proses; kosong jika tidak ada. |
authenticationInfo.authenticationId | ID dari event autentikasi identitas yang dihasilkan oleh flow. |
capacities | Kapabilitas/produk yang digunakan. Nilai PROCESS_CAPACITY_* (misalnya IDCLOUDONE). |
expiresAt | Timestamp kedaluwarsa proses/link (UTC). |
token | Token sesi/akses yang terkait dengan proses (dapat kosong). |
companyData | Sub-objek dengan data perusahaan/tenant yang memiliki proses. |
simulated | Boolean; apakah ini adalah proses simulasi/sandbox (true) atau proses sungguhan (false). |
| Field | Arti |
|---|---|
duiType | Tipe dokumen identifikasi unik. Nilai DUI_TYPE_* (misalnya BR_CPF). |
duiValue | Nilai dokumen (misalnya nomor CPF). |
friendlyName | Nama panggilan/nickname untuk orang tersebut (teks bebas, tidak divalidasi). |
email | Email orang tersebut; dapat kosong. |
phone | Nomor telepon dalam format E.164 (kode negara + kode area + nomor). |
notifications | Daftar kanal notifikasi. Setiap item membawa notificationChannel dengan nilai NOTIFICATION_CHANNEL_* (misalnya WHATSAPP, SMS, EMAIL). |
phoneCountryCodeAlpha3 | Kode negara ISO alpha-3 dari nomor telepon (misalnya BRA); dapat kosong. |
| Field | Arti |
|---|---|
branchId | Identifier cabang tenant; kosong jika tidak disegmentasi berdasarkan cabang. |
countryCode | Negara perusahaan dalam ISO alpha-3 (misalnya BRA). |
Tipe dokumen yang menggunakan skema terpadu — unified_schema pada referensi field — dilaporkan sebagai tipe huruf besar yang diidentifikasi selama pengambilan gambar: IDCARD, DRIVERLICENSE, PASSPORT, atau VOTERID.
Paspor A.S. mempertahankan variannya masing-masing dan tidak digabungkan menjadi PASSPORT, sehingga nilai seperti POLYCARBONATEPASSPORT, PASSPORTCARD, dan PAPERPASSPORT juga dikembalikan.
Misalnya, unico.moja.dictionary.ar.generic.v1.IdCard dan unico.moja.dictionary.us.generic.v1.PolycarbonatePassport dilaporkan sebagai IDCARD dan POLYCARBONATEPASSPORT.
process.services[].documents[].doc.code melaporkan tipe dokumen sebagai kode singkat huruf besar. unico.moja.dictionary.br.cnh.v2.Cnh menjadi CNH.
Kode tersebut tidak membawa negara maupun versi skema; versinya dikembalikan secara terpisah di doc.version.
Tipe dokumen yang menggunakan skema field sendiri — tercantum di bawah specific_document_schemas pada referensi field — ditunjukkan pada tabel di bawah ini. Gunakan tipe dictionary untuk mencari setiap skema pada file tersebut.
| Negara | doc.code | Tipe dictionary | Dokumen |
|---|---|---|---|
| BR | RG | unico.moja.dictionary.br.rg.v2.Rg | RG |
| BR | CNH | unico.moja.dictionary.br.cnh.v2.Cnh | CNH (surat izin mengemudi) |
| BR | CIN | unico.moja.dictionary.br.cin.v1.Cin | CIN |
| BR | PASSAPORTE | unico.moja.dictionary.br.passaporte.v1.Passaporte | Paspor |
| MX | INE | unico.moja.dictionary.mx.ine.v1.Ine | Kredensial pemilih INE |
| MX | LPC | unico.moja.dictionary.mx.lpc.v1.Lpc | Licencia para conducir (surat izin mengemudi) |
| MX | PASAPORTE | unico.moja.dictionary.mx.pasaporte.v1.Pasaporte | Paspor |
| — | UNKNOWN | unico.moja.dictionary.other.unknown.v1.Unknown | Tipe tidak dapat diidentifikasi — doc.data kosong |
PASSAPORTE dan PASAPORTE adalah dokumen yang berbedaPaspor Brasil adalah PASSAPORTE (S ganda) dan paspor Meksiko adalah PASAPORTE (S tunggal), masing-masing mencerminkan ejaan dictionary-nya sendiri. Ini bukan kesalahan penulisan — jangan menganggap kedua nilai tersebut setara.
Tidak ada ekstraksi OCR yang dilakukan dan tidak ada field yang dilaporkan di doc.data saat doc.code adalah UNKNOWN.
Klien di Brasil dapat menerima payload proses lengkapStruktur respons secara keseluruhan tetap sama — hasil tunggal adalah default.

Struktur respons secara keseluruhan tetap sama — hasil tunggal adalah default.
Integrasi di Brasil dapat menerima objek proses lengkap di bawah ini, dengan hasil per-kapabilitas di authenticationInfo.
{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"flow": "iddocs_r2",
"callbackUri": "https://example.com/callback",
"userRedirectUrl": "https://example.com/redirect",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"createdAt": "2024-01-01T10:00:00Z",
"finishedAt": "2024-01-01T10:15:00Z",
"expiresAt": "2024-01-08T10:00:00Z",
"purpose": "VERIFICATION",
"clientReference": "client-ref-abc",
"useCase": "USE_CASE_LOGIN",
"capacities": ["liveness", "face_match"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"notifications": [
{
"notificationChannel": "email"
}
]
},
"authenticationInfo": {
"authenticationId": "auth-123",
"livenessResult": "LIVENESS_RESULT_LIVE",
"authenticationResult": "AUTHENTICATION_RESULT_INCONCLUSIVE",
"identityFraudstersResult": "TRUST_RESULT_UNSPECIFIED",
"bioTokenEngineResult": "BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED",
"smartRevalidationResult": "SMART_REVALIDATION_RESULT_UNSPECIFIED",
"idAgeResult": "ID_AGE_RESULT_UNSPECIFIED",
"scoreEngineResult": {
"scoreEnabled": "SCORE_ENABLED_TRUE",
"score": 85.5
}
},
"companyData": {
"branchId": "branch-123",
"countryCode": "BR"
},
"bioTokenData": {
"referenceProcessId": "ref-proc-123",
"authenticationId": "auth-ref-123"
},
"services": [
{
"envelopeId": "4d4f3d90-04a3-4259-b63b-930ab10d2e47",
"documentIds": ["doc-abc-123"],
"consent_granted": true,
"documents": [
{
"doc_id": "doc-abc-123",
"typified": true,
"cpf_match": true,
"face_match": true,
"validate_doc": true,
"reused_doc": false,
"signed_url": "https://example.com/doc?token=xyz",
"doc": {
"version": 1,
"code": "CNH",
"data": {
"numero": "044589731564",
"cpfNumero": "12345678909",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "1990-05-12T00:00:00Z",
"dataExpiracao": "2027-12-07T00:00:00Z",
"categoria": "B"
}
}
}
]
}
]
}
}
| Field | Tipe | Deskripsi |
|---|---|---|
process.id | string (UUID) | Identifier proses. |
process.flow | string | Identifier flow yang dikirim saat pembuatan. |
process.callbackUri | string | Callback URL yang dikonfigurasi untuk event proses. |
process.userRedirectUrl | string | URL untuk mengarahkan pengguna setelah perjalanan selesai. |
process.state | enum | State proses saat ini. Lihat nilai di bawah. |
process.result | enum | Hasil verifikasi. Hanya ada saat state = PROCESS_STATE_FINISHED. |
process.createdAt | string (datetime) | Timestamp ISO 8601 saat proses dibuat. |
process.finishedAt | string (datetime) | Timestamp ISO 8601 saat proses selesai. Hanya ada saat state = PROCESS_STATE_FINISHED. |
process.expiresAt | string (datetime) | Timestamp ISO 8601 saat proses kedaluwarsa. |
process.purpose | string | Tujuan proses sebagaimana dikonfigurasi dalam flow. |
process.clientReference | string | Referensi opsional sisi klien untuk pengindeksan di portal. |
process.useCase | string | Identifier skenario yang terkait dengan flow. |
process.capacities | array of strings | Daftar kapabilitas yang diaktifkan dalam proses ini. |
process.token | string | JWT yang ditandatangani untuk integrasi SDK. |
process.person | object | Identifikasi yang disediakan saat pembuatan. |
process.person.notifications | array | Kanal notifikasi yang dikonfigurasi untuk perjalanan (misalnya email). |
process.authenticationInfo | object | Hasil per-kapabilitas. Lihat di bawah. |
process.companyData | object | Konteks perusahaan dan cabang. |
process.companyData.branchId | string | Identifier cabang. |
process.companyData.countryCode | string | Kode negara ISO 3166-1 alpha-2. |
process.bioTokenData | object | Informasi proses referensi — hanya ada pada alur Validasi 1:1 dan Revalidasi Cerdas. |
process.services | array | Envelope yang ditandatangani, dokumen yang diambil, dan output layanan lainnya. Lihat di bawah. |
| Value | Arti |
|---|---|
PROCESS_STATE_CREATED | Proses dibuat; pengguna belum menyelesaikan perjalanan. |
AWAITING_FOR_DOCUMENT | Proses dibuat tanpa dokumen identifikasi. Hanya ada saat Custom Flow mengizinkan dokumen opsional. Kirim dokumen dengan Tetapkan Dokumen Proses. |
PROCESS_STATE_FINISHED | Perjalanan selesai. Periksa result dan authenticationInfo. |
PROCESS_STATE_FAILED | Error pemrosesan. |
AWAITING_FOR_DOCUMENT tidak mengikuti konvensi prefiks PROCESS_STATE_* yang digunakan oleh state lainnya. Ini adalah inkonsistensi penamaan yang sudah diketahui pada API saat ini.
| Value | Arti |
|---|---|
PROCESS_RESULT_OK | Semua kapabilitas mengembalikan hasil positif. |
PROCESS_RESULT_INVALID_IDENTITY | Setidaknya satu kapabilitas mengembalikan hasil negatif definitif (misalnya liveness gagal, identitas tidak cocok). |
PROCESS_RESULT_ERROR | Error selama pemrosesan hasil. |
PROCESS_RESULT_EXPIRED | Proses kedaluwarsa sebelum perjalanan selesai. |
PROCESS_RESULT_UNSPECIFIED | Proses belum selesai. |
Semua field selalu dikembalikan terlepas dari flow-nya. Field untuk kapabilitas yang tidak digunakan dalam flow mengembalikan *_UNSPECIFIED.
Nilai singkat (misalnya livenessResult = LIVE, authenticationResult = INCONCLUSIVE) mengacu langsung ke nilai enum lengkap yang didokumentasikan di sini (LIVENESS_RESULT_LIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, dst.) — prefiksnya dihilangkan demi keringkasan.
| Field | Kapabilitas | Nilai yang memungkinkan |
|---|---|---|
authenticationId | — | Identifier unik untuk percobaan autentikasi ini. |
livenessResult | Deteksi Kehidupan | LIVENESS_RESULT_LIVE, LIVENESS_RESULT_NOT_LIVE, LIVENESS_RESULT_UNSPECIFIED |
authenticationResult | Verifikasi Identitas | AUTHENTICATION_RESULT_POSITIVE, AUTHENTICATION_RESULT_NEGATIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, AUTHENTICATION_RESULT_UNSPECIFIED |
identityFraudstersResult | Klasifikasi Risiko Penipuan | TRUST_RESULT_YES, TRUST_RESULT_INCONCLUSIVE, TRUST_RESULT_UNSPECIFIED |
bioTokenEngineResult | Validasi 1:1 | BIO_TOKEN_ENGINE_RESULT_POSITIVE, BIO_TOKEN_ENGINE_RESULT_NEGATIVE, BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED |
smartRevalidationResult | Revalidasi Cerdas | SMART_REVALIDATION_RESULT_POSITIVE, SMART_REVALIDATION_RESULT_NEGATIVE, SMART_REVALIDATION_RESULT_UNSPECIFIED |
idAgeResult | Verifikasi Usia | ID_AGE_RESULT_POSITIVE, ID_AGE_RESULT_NEGATIVE, ID_AGE_RESULT_INCONCLUSIVE, ID_AGE_RESULT_UNSPECIFIED |
scoreEngineResult.scoreEnabled | Skor Risiko | SCORE_ENABLED_TRUE, SCORE_ENABLED_FALSE, SCORE_ENABLED_UNSPECIFIED |
scoreEngineResult.score | Skor Risiko | Angka dari -100 hingga +100. Ada saat authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE dan Skor Risiko diaktifkan. |
serproResult.score | Kemiripan Serpro | 0–100 (kemiripan); -1 (tidak ada wajah tersimpan untuk CPF ini); -2 (error integrasi). |
servicesArray services menggunakan camelCase untuk field tingkat envelope (envelopeId, documentIds) dan snake_case untuk field tingkat dokumen (doc_id, consent_granted, face_match, dst.). Ini mencerminkan respons API yang sebenarnya — kedua konvensi tersebut disengaja dan bukan kesalahan dokumentasi.
| Field | Tipe | Deskripsi |
|---|---|---|
envelopeId | string (UUID) | Identifier envelope yang ditandatangani. |
documentIds | array of strings | ID dokumen yang diambil dalam layanan ini. |
consent_granted | boolean | Apakah pengguna memberikan consent untuk berbagi data. |
documents | array | Dokumen yang diambil beserta data OCR dan hasil validasi. |
documents[].doc_id | string | Identifier dokumen. |
documents[].typified | boolean | Apakah tipe dokumen berhasil diidentifikasi. |
documents[].cpf_match | boolean | Apakah CPF pada dokumen cocok dengan CPF yang diberikan (khusus Brasil). |
documents[].face_match | boolean | Apakah selfie cocok dengan foto pada dokumen. |
documents[].validate_doc | boolean | Apakah dokumen lolos validasi keaslian. |
documents[].reused_doc | boolean | Apakah dokumen ini digunakan kembali dari proses sebelumnya. |
documents[].signed_url | string | URL pre-signed untuk mengunduh PDF dokumen (berlaku selama 5 menit — ambil ulang untuk memperbarui). |
documents[].doc.version | integer | Versi skema OCR. |
documents[].doc.code | string | Kode singkat tipe dokumen (misalnya CNH). Lihat Tipe dokumen dan field OCR untuk semua nilai dan cara kode tersebut diperoleh. |
documents[].doc.data | object | Field OCR yang diekstrak. Isinya bervariasi berdasarkan tipe dokumen — lihat referensi field lengkap untuk katalog lengkapnya. Nama field di dalam doc.data (misalnya nomeCivil, dataNascimento) dikembalikan dalam bahasa Portugis — ini adalah nilai sebenarnya yang dihasilkan oleh mesin OCR. |
Kode Error
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| Code | Message | Description |
|---|---|---|
3 | process id is invalid | Ketika ID proses tidak valid. |
| Code | Message | Description |
|---|---|---|
| — | Jwt header is an invalid JSON | Ketika access token yang digunakan mengandung karakter yang salah. |
| — | Jwt is expired | Ketika access token yang digunakan sudah kedaluwarsa. |
| Code | Message | Description |
|---|---|---|
5 | error getting process: rpc error: code = NotFound desc = process not found | Ketika ID proses tidak ditemukan. |
Batas rate tercapai. Ketika sistem Anda menerima error HTTP 429, Anda harus mengimplementasikan mekanisme untuk mencegah kegagalan berantai dan menghindari memperburuk pembatasan.
Praktik terbaik:
- Periode pendinginan (backoff): Segera hentikan atau kurangi permintaan berikutnya dari sistem Anda. Jangan terus-menerus mencoba ulang permintaan yang gagal dalam loop yang ketat.
- Antrean & pembatasan (Queueing & throttling): Buffer atau antrean permintaan keluar dari 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 s, 2 s, 4 s, 8 s) dan tambahkan penundaan acak kecil ("jitter") untuk mencegah efek kawanan di mana semua permintaan yang diantrean mencoba ulang pada milidetik yang sama persis.
Terus-menerus mengirim permintaan ke endpoint yang dibatasi rate tanpa menerapkan backoff dapat memperpanjang periode pembatasan dan sangat memengaruhi throughput operasional sistem Anda. Membatasi permintaan dengan benar dari sisi Anda memastikan integrasi yang lebih lancar dan lebih tangguh.
Untuk batas default, peningkatan permintaan, dan detail tambahan, lihat Batas Rate.
| Code | Message | Description |
|---|---|---|
99999 | Internal failure! Try again later | Ketika terjadi error internal. |
Polling vs webhook
Anda dapat melakukan polling pada endpoint ini untuk memeriksa progres, tetapi pola yang direkomendasikan adalah berlangganan webhook dan hanya memanggil endpoint ini sebagai fallback. Lihat Webhook dan Event.
Selanjutnya
- Untuk selfie yang diambil, lihat Dapatkan Selfie.
- Untuk paket audit bukti, lihat Dapatkan Evidence Set.