Buat Proses Dokumen
Endpoint ini menangani dua alur dokumen yang berbagi path yang sama tetapi berbeda dalam parameter body:
- Pengambilan baru — mengirimkan gambar dokumen dalam base64 untuk diproses (field
document.filesdiperlukan). - Penggunaan ulang — melewati pengambilan gambar dengan merujuk dokumen yang sebelumnya diambil (field
document.documentIddiperlukan).
Alur yang aktif ditentukan oleh apakah document.documentId diberikan dalam body permintaan.
Sebelum membuat proses dokumen, gunakan Dapatkan Dokumen yang Dapat Digunakan Ulang untuk memeriksa apakah pengguna sudah memiliki dokumen yang tersedia untuk digunakan ulang.
Untuk alur integrasi lengkap, lihat Ikhtisar API.
Endpoint
| Lingkungan | URL |
|---|---|
| Produksi | POST https://api.id.unico.app/processes/v1 |
| Sandbox | POST https://api.id.uat.unico.app/processes/v1 |
Permintaan
Headers
| Header | Nilai |
|---|---|
Authorization | Bearer <access_token> (lihat Autentikasi) |
APIKEY | Kunci API yang telah ditetapkan dengan Document Capture and Reuse diaktifkan. |
Content-Type | application/json |
Parameter body
- Pengambilan baru
- Penggunaan ulang
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
subject.duiType | string | ya | Tipe pengidentifikasi. Nilai yang mungkin: DUI_TYPE_BR_CPF, DUI_TYPE_MX_CURP, DUI_TYPE_US_SSN, DUI_TYPE_NG_NIN, DUI_TYPE_AR_DNI, DUI_TYPE_ID_NIK. |
subject.code | string | ya | Nilai pengidentifikasi pengguna sesuai yang didefinisikan oleh subject.duiType. Tanpa titik atau tanda hubung. |
subject.name | string | tidak | Nama lengkap. |
subject.gender | string | tidak | M atau F. |
subject.birthDate | string (ISO 8601) | tidak | Tanggal lahir (YYYY-MM-DD). |
subject.email | string | tidak | Alamat email. |
subject.phone | string | tidak | Nomor telepon E.164. |
document.purpose | string | ya | Tujuan bisnis. Nilai: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. |
document.authProcessId | string | ya | ID proses biometrik yang terhubung ke pengambilan dokumen ini. |
document.files | array | ya | Gambar dokumen dalam base64 (depan dan/atau belakang). |
document.files[].data | string | ya | Gambar dokumen dalam base64 (PNG, JPEG, atau WebP, maks 800 KB). |
subsidiaryId | string | tidak | ID cabang — hanya diperlukan jika terdapat beberapa cabang. |
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
subject.duiType | string | ya | Tipe pengidentifikasi. Nilai yang mungkin: DUI_TYPE_BR_CPF, DUI_TYPE_MX_CURP, DUI_TYPE_US_SSN, DUI_TYPE_NG_NIN, DUI_TYPE_AR_DNI, DUI_TYPE_ID_NIK. |
subject.code | string | ya | Nilai pengidentifikasi pengguna sesuai yang didefinisikan oleh subject.duiType. Tanpa titik atau tanda hubung. |
subject.name | string | tidak | Nama lengkap. |
subject.gender | string | tidak | M atau F. |
subject.birthDate | string (ISO 8601) | tidak | Tanggal lahir (YYYY-MM-DD). |
subject.email | string | tidak | Alamat email. |
subject.phone | string | tidak | Nomor telepon E.164. |
document.purpose | string | ya | Tujuan bisnis. Nilai: creditprocess, carpurchase, paybypaycheck, onboarding, fgts. |
document.authProcessId | string | ya | ID proses biometrik yang terhubung ke dokumen ini. |
document.documentId | string | ya | ID dokumen yang sebelumnya diambil (diperoleh dari Dapatkan Dokumen yang Dapat Digunakan Ulang). Ketika diberikan, document.files dapat dihilangkan. |
subsidiaryId | string | tidak | ID cabang — hanya diperlukan jika terdapat beberapa cabang. |
Contoh
- Pengambilan baru — cURL
- Pengambilan baru — Node.js
- Penggunaan ulang — cURL
- Penggunaan ulang — 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": "DUI_TYPE_BR_CPF",
"code": "12345678909",
"name": "Luke Skywalker"
},
"document": {
"purpose": "onboarding",
"authProcessId": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"files": [
{ "data": "/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: 'DUI_TYPE_BR_CPF',
code: '12345678909',
name: 'Luke Skywalker'
},
document: {
purpose: 'onboarding',
authProcessId: '80371b2a-3ac7-432e-866d-57fe37896ac6',
files: [{ data: documentImageBase64 }]
}
})
});
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": "DUI_TYPE_BR_CPF",
"code": "12345678909"
},
"document": {
"purpose": "onboarding",
"authProcessId": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"documentId": "doc-abc-123"
}
}'
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: 'DUI_TYPE_BR_CPF',
code: '12345678909'
},
document: {
purpose: 'onboarding',
authProcessId: '80371b2a-3ac7-432e-866d-57fe37896ac6',
documentId: 'doc-abc-123'
}
})
});
const result = await res.json();
Respons
200 OK
{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"document": {
"id": "doc-abc-123",
"type": "unico.moja.dictionary.br.cnh.v2.Cnh",
"cpfMatch": true,
"faceMatch": true,
"content": {
"numero": "12345678",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "2000-05-20T00:00:00Z",
"categoria": "B",
"dataExpiracao": "2030-05-20T00:00:00Z"
},
"fileUrls": [
"https://storage.unico.app/documents/doc-abc-123/front.jpg"
]
}
}
| Field | Tipe | Deskripsi |
|---|---|---|
id | string (UUID) | Pengidentifikasi proses. |
status | integer | 3 (selesai dengan sukses), 5 (selesai dengan kegagalan). |
document.id | string | Pengidentifikasi dokumen yang diambil. Gunakan nilai ini dalam permintaan document.documentId di masa mendatang untuk penggunaan ulang. |
document.type | string | Tipe dokumen yang diidentifikasi. Nilai yang mungkin: unico.moja.dictionary.br.rg.v2.Rg, unico.moja.dictionary.br.cnh.v2.Cnh, unico.moja.dictionary.br.cin.v1.Cin, unico.moja.dictionary.br.passaporte.v1.Passaporte. |
document.cpfMatch | boolean | true jika pengidentifikasi yang diekstrak dari dokumen cocok dengan subject.code. |
document.faceMatch | boolean | true jika wajah pada dokumen cocok dengan foto selfie biometrik dari document.authProcessId. |
document.content | object | Field yang diekstrak melalui OCR. Struktur bervariasi berdasarkan tipe dokumen — lihat di bawah. |
document.fileUrls | array | URL sementara (validitas 10 menit) untuk mengunduh gambar dokumen. |
400 Bad Request
Payload tidak sesuai format, gambar tidak valid, atau field yang diperlukan tidak ada. Lihat Kode Error di bawah.
403 Forbidden
Bearer token atau APIKEY tidak ada, kedaluwarsa, atau tidak valid. Lihat Autentikasi.
409 Conflict
processId yang diberikan sudah ada untuk tenant ini. Lihat Kode Error di bawah.
Kode Error
- 400 Bad Request
- 403 Forbidden
- 409 Conflict
- 500 Internal Server Error
| Kode | Pesan | Deskripsi |
|---|---|---|
99989 | The document is invalid. | Objek document memiliki struktur tidak valid. |
99988 | The document is empty. | Objek document tidak ada dalam body permintaan. |
20900 | O base64 informado não é válido. | Parameter base64 tidak valid. Kemungkinan penyebab: bukan gambar atau merupakan 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. |
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. | Nilai pengidentifikasi 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. |
20068 | The document.documentId or document.files parameter must be present. | document.documentId maupun document.files tidak disediakan. |
20067 | The document.purpose parameter is invalid. | Nilai tidak dikenal di document.purpose. |
20066 | The document.authProcessId parameter is invalid. | Nilai tidak valid di document.authProcessId. |
20062 | The useCase field is invalid. | Nilai tidak dikenal di field useCase. |
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 berada di luar format ISO 8601 (YYYY-MM-DD). |
20009 | O parâmetro imagebase64 não foi informado. | Parameter gambar dokumen tidak ada. |
20008 | The subject.email field is invalid. | Format email tidak valid di subject.email. |
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 dari header permintaan. |
20001 | O parâmetro authtoken não foi informado. | Parameter token integrasi tidak ada dari 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. |
| Kode | Pesan | Deskripsi |
|---|---|---|
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. |
| Kode | Pesan | Deskripsi |
|---|---|---|
20073 | The processID already exists. | processId yang diberikan sudah ada untuk tenant ini. |
| Kode | Pesan | Deskripsi |
|---|---|---|
99999 | Internal failure! Try again later | Ketika terjadi error internal. |
Langkah selanjutnya
- Untuk memeriksa apakah dokumen sudah tersedia sebelum panggilan ini, lihat Dapatkan Dokumen yang Dapat Digunakan Ulang.
- Untuk pembuatan proses biometrik (diperlukan untuk
document.authProcessId), lihat Buat Proses.