Ambil proses yang sudah ada berdasarkan identifier-nya. Sesuai kontrak API, hasil sudah dikembalikan secara sinkron saat proses dibuat — 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 |
|---|---|
| Production | 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 Create Process. |
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; identifier yang digunakan untuk mencari dan melacak flow. |
flow | Jenis journey yang dijalankan (misalnya id_r2, idlivetrust_r2, idtrust_r2, ...). |
callbackUri | URI callback tempat aplikasi klien diarahkan ulang pada akhir flow. |
userRedirectUrl | URL lengkap halaman CbU yang dibuka pengguna untuk menjalankan journey (membawa id dan flag perilaku). |
state | Status siklus hidup proses. Nilai PROCESS_STATE_* (misalnya CREATED, FAILED, FINISHED, AWAITING_FOR_DOCUMENT, UNSPECIFIED). |
result | Keputusan akhir dari evaluasi. Nilai PROCESS_RESULT_* (misalnya APPROVED, AUTHENTICATED, NOT_APPROVED, ...). Hanya bersifat final ketika 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 terkait dengan proses; kosong jika tidak ada. |
authenticationInfo.authenticationId | ID 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 pemilik proses. |
simulated | Boolean; menunjukkan apakah proses ini bersifat simulasi/sandbox (true) atau nyata (false). |
| Field | Arti |
|---|---|
duiType | Jenis dokumen identifikasi unik. Nilai DUI_TYPE_* (misalnya BR_CPF). |
duiValue | Nilai dokumen (misalnya nomor CPF). |
friendlyName | Nama ramah/panggilan 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 saluran 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). |
process.services[].documents[].doc.code melaporkan tipe dokumen sebagai kode singkat dalam huruf kapital. unico.moja.dictionary.br.cnh.v2.Cnh menjadi CNH.
Kode ini tidak memuat negara maupun versi skema; versinya dikembalikan secara terpisah pada doc.version.
Tipe dokumen yang menggunakan skema terpadu — unified_schema dalam referensi field — dilaporkan sebagai tipe yang teridentifikasi saat pengambilan, dalam huruf kapital: IDCARD, DRIVERLICENSE, PASSPORT, atau VOTERID.
Paspor Amerika Serikat mempertahankan variannya alih-alih digabungkan menjadi PASSPORT, sehingga nilai seperti POLYCARBONATEPASSPORT, PASSPORTCARD, dan PAPERPASSPORT juga dikembalikan.
Sebagai contoh, unico.moja.dictionary.ar.generic.v1.IdCard dan unico.moja.dictionary.us.generic.v1.PolycarbonatePassport dilaporkan sebagai IDCARD dan POLYCARBONATEPASSPORT.
Tipe dokumen yang menggunakan skema field-nya sendiri — terdaftar di bawah specific_document_schemas dalam referensi field — ditampilkan 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 (dua S) dan paspor Meksiko adalah PASAPORTE (satu S), masing-masing mengikuti ejaan pada dictionary-nya sendiri. Ini bukan salah ketik — jangan perlakukan kedua nilai tersebut sebagai setara.
Tidak ada ekstraksi OCR yang dilakukan dan tidak ada field yang dilaporkan pada doc.data ketika doc.code bernilai UNKNOWN.
Klien di Brasil dapat menerima payload proses lengkapStruktur respons secara keseluruhan tetap sama — hasil tunggal adalah default-nya.

Struktur respons secara keseluruhan tetap sama — hasil tunggal adalah default-nya.
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": "idchecktrust",
"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": "smart_revalidation",
"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_INCONCLUSIVE",
"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 | URL callback yang dikonfigurasi untuk event proses. |
process.userRedirectUrl | string | URL untuk mengarahkan pengguna setelah journey selesai. |
process.state | enum | Status proses saat ini. Lihat nilai di bawah. |
process.result | enum | Hasil verifikasi. Muncul hanya ketika state = PROCESS_STATE_FINISHED. |
process.createdAt | string (datetime) | Timestamp ISO 8601 ketika proses dibuat. |
process.finishedAt | string (datetime) | Timestamp ISO 8601 ketika proses selesai. Muncul hanya ketika state = PROCESS_STATE_FINISHED. |
process.expiresAt | string (datetime) | Timestamp ISO 8601 ketika proses kedaluwarsa. |
process.purpose | string | Tujuan proses seperti yang dikonfigurasi dalam flow. |
process.clientReference | string | Referensi sisi klien opsional 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 diberikan saat pembuatan. |
process.person.notifications | array | Saluran notifikasi yang dikonfigurasi untuk journey (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 | Info proses referensi — muncul hanya dalam alur Validasi 1:1 dan Revalidasi Cerdas. |
process.services | array | Envelope yang ditandatangani, dokumen yang ditangkap, dan output layanan lainnya. Lihat di bawah. |
| Nilai | Arti |
|---|---|
PROCESS_STATE_CREATED | Proses dibuat; pengguna belum menyelesaikan journey. |
AWAITING_FOR_DOCUMENT | Proses dibuat tanpa dokumen identifikasi; menunggu untuk diatur melalui Set Process Document. Hanya muncul ketika Custom Flow mengizinkan dokumen opsional. |
PROCESS_STATE_FINISHED | Journey 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 diketahui dalam API saat ini.
| Nilai | 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 journey selesai. |
PROCESS_RESULT_UNSPECIFIED | Proses belum selesai. |
Semua field selalu dikembalikan terlepas dari flow. Field untuk kapabilitas yang tidak digunakan dalam flow mengembalikan *_UNSPECIFIED.
Nilai singkat (misalnya livenessResult = LIVE, authenticationResult = INCONCLUSIVE) dipetakan langsung ke nilai enum lengkap yang didokumentasikan di sini (LIVENESS_RESULT_LIVE, AUTHENTICATION_RESULT_INCONCLUSIVE, dll.) — prefiks dihilangkan untuk singkatnya.
| Field | Kapabilitas | Nilai yang mungkin |
|---|---|---|
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 sampai +100. Muncul ketika authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE dan Skor Risiko diaktifkan. |
serproResult.score | Hasil Kemiripan Serpro | 0–100 (kemiripan); -1 (tidak ada wajah yang terdaftar 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, dll.). Ini mencerminkan respons API yang sebenarnya — kedua konvensi disengaja dan bukan merupakan kesalahan dokumentasi.
| Field | Tipe | Deskripsi |
|---|---|---|
envelopeId | string (UUID) | Identifier envelope yang ditandatangani. |
documentIds | array of strings | ID dokumen yang ditangkap dalam layanan ini. |
consent_granted | boolean | Apakah pengguna memberikan persetujuan berbagi data. |
documents | array | Dokumen yang ditangkap dengan 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 di 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 yang telah ditandatangani untuk mengunduh PDF dokumen (berlaku selama 5 menit — ambil ulang untuk memperbarui). |
documents[].doc.version | integer | Versi skema OCR. |
documents[].doc.code | string | Kode tipe dokumen singkat (misalnya CNH). Lihat Tipe dokumen dan field OCR untuk semua nilai dan cara kode tersebut diturunkan. |
documents[].doc.data | object | Field OCR yang diekstrak. Konten bervariasi berdasarkan tipe dokumen — lihat referensi field lengkap untuk katalog lengkapnya. Nama field dalam doc.data (misalnya nomeCivil, dataNascimento) dikembalikan dalam bahasa Portugis — ini adalah nilai aktual 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 | Deskripsi |
|---|---|---|
3 | process id is invalid | Ketika process ID tidak valid. |
| Code | Message | Deskripsi |
|---|---|---|
| — | Jwt header is an invalid JSON | Ketika access token yang digunakan mengandung karakter yang salah. |
| — | Jwt is expired | Ketika access token yang digunakan telah kedaluwarsa. |
| Code | Message | Deskripsi |
|---|---|---|
5 | error getting process: rpc error: code = NotFound desc = process not found | Ketika process ID tidak ditemukan. |
Rate limit reached. When your system receives an HTTP 429 error, you must implement mechanisms to prevent cascading failures and avoid worsening the restriction.
Best practices:
- Cool-down period (backoff): Immediately halt or throttle subsequent requests from your system. Do not continuously retry failed requests in a tight loop.
- Queueing & throttling: Buffer or queue outgoing requests on your end to control the traffic flow before re-sending them.
- Exponential backoff with jitter: When retrying, increase the waiting time exponentially between attempts (e.g., 1 s, 2 s, 4 s, 8 s) and add a small random delay ("jitter") to prevent a herd effect where all queued requests retry at the exact same millisecond.
Continuously hitting a rate-limited endpoint without backing off can prolong the restriction period and severely impact your system's operational throughput. Properly throttling requests on your side ensures a smoother, more resilient integration.
For default limits, increase requests and additional details, see Rate Limits.
| Code | Message | Deskripsi |
|---|---|---|
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 disarankan adalah berlangganan webhook dan hanya memanggil endpoint ini sebagai fallback. Lihat Webhook dan Event.
Selanjutnya
- Untuk selfie yang ditangkap, lihat Get Selfie.
- Untuk bundel audit bukti, lihat Get Evidence Set.