---
title: Buat Proses
description: Buat proses verifikasi. Mengembalikan URL journey dan token SDK yang mengarahkan pengguna ke pengalaman pengambilan yang di-host Unico.
canonical: https://developer.unico.io/id/dual-api/developers/api-reference/web-sdk/post-process
locale: id
generated_by: markdown-export
---

- [/id/](/id/)
- [Referensi API](/id/dual-api/developers/api-reference/)
- [Web & Native](/id/dual-api/developers/api-reference/web-sdk/)
- Create Process

**Di halaman ini# Buat Proses

Ini adalah titik masuk setiap integrasi Web & SDK. Back-end Anda memanggilnya untuk membuat proses; front-end Anda menggunakan token yang dikembalikan untuk merender iFrame, mengarahkan pengguna, atau menginisialisasi SDK native.
Untuk alur integrasi lengkap, lihat [Ringkasan Web & SDK](/id/dual-api/developers/api-reference/web-sdk/).
### Endpoint​

LingkunganURL**Production**`POST https://api.idcloud.unico.app/client/v1/process`**Sandbox**`POST https://api.idcloud.uat.unico.app/client/v1/process`
### Permintaan​

Headers
HeaderNilai`Authorization``Bearer <access_token>` (lihat [Autentikasi](/id/dual-api/developers/api-reference/authentication))`Content-Type``application/json`
Parameter body
FieldTipeWajibDeskripsi`callbackUri`stringyaURL tempat pengguna diarahkan setelah journey selesai. Gunakan `/` untuk alur SDK native di mana callback ditangani di dalam aplikasi.`flow`stringyaIdentifier flow — menentukan kapabilitas mana yang dijalankan. Contoh: `idunicodocs`, `idunicosign`, `idchecktrust`, `idtoken`, `idsmart`. Lihat [Alur yang tersedia](/id/dual-api/capabilities/available-flows).`purpose`stringyaTujuan bisnis. Nilai yang diterima: `creditprocess`, `biometryonboarding`, `carpurchase`, `ageverification`.`person.duiType`enumtidakTipe dokumen. Nilai yang diterima: `DUI_TYPE_AR_PASSPORT`, `DUI_TYPE_AR_DNI`, `DUI_TYPE_AR_LNC`, `DUI_TYPE_AT_STNR`, `DUI_TYPE_BE_NN`, `DUI_TYPE_BR_CPF`, `DUI_TYPE_BR_PASSPORT`, `DUI_TYPE_BR_CNPJ`, `DUI_TYPE_CA_SIN`, `DUI_TYPE_CH_AHV`, `DUI_TYPE_CL_RUN`, `DUI_TYPE_CL_PASSPORT`, `DUI_TYPE_CL_LICENCIA_CONDUCIR`, `DUI_TYPE_CO_NIT`, `DUI_TYPE_CO_PASSPORT`, `DUI_TYPE_CO_LICENCIA_CONDUCCION`, `DUI_TYPE_CO_CC`, `DUI_TYPE_DE_IDNR`, `DUI_TYPE_DK_CPR`, `DUI_TYPE_EC_NI`, `DUI_TYPE_ES_NIE`, `DUI_TYPE_ES_DNI`, `DUI_TYPE_FI_HETU`, `DUI_TYPE_FR_SPI`, `DUI_TYPE_GB_NINO`, `DUI_TYPE_GT_CUI`, `DUI_TYPE_ID_NIK`, `DUI_TYPE_IE_PPSN`, `DUI_TYPE_IT_CF`, `DUI_TYPE_LU_MATRICULE`, `DUI_TYPE_MX_CURP`, `DUI_TYPE_MX_RFC_PERSONA_FISICA`, `DUI_TYPE_MX_LICENCIA_CONDUCIR`, `DUI_TYPE_NG_NIN`, `DUI_TYPE_NG_BVN`, `DUI_TYPE_NG_BVN_TOKEN`, `DUI_TYPE_NG_NIN_TOKEN`, `DUI_TYPE_NL_BSN`, `DUI_TYPE_NO_FNR`, `DUI_TYPE_PE_RUC`, `DUI_TYPE_PE_DNI`, `DUI_TYPE_PE_PASSPORT`, `DUI_TYPE_PL_PESEL`, `DUI_TYPE_PT_NIF`, `DUI_TYPE_SE_PNR`, `DUI_TYPE_SE_SAMORDNINGSNUMMER`, `DUI_TYPE_TR_TCKN`, `DUI_TYPE_US_SSN`, `DUI_TYPE_US_PASSPORT`, `DUI_TYPE_US_DRIVER_LICENSE`, `DUI_TYPE_US_PASSPORT_CARD`, `DUI_TYPE_US_POLYCARBONATE_PASSPORT`, `DUI_TYPE_US_ID_CARD`, `DUI_TYPE_UY_CI`, `DUI_TYPE_ZZ_EMAIL`, `DUI_TYPE_ZZ_PHONE_NUMBER`.`person.duiValue`stringtidakNomor dokumen, tanpa format.`person.friendlyName`stringtidakNama tampilan pengguna yang ditampilkan di UI journey. Maksimum 50 karakter.`person.phone`stringtidakNomor telepon dalam format DDI + DDD + nomor, tanpa pemisah. Diperlukan saat mengirim notifikasi melalui SMS atau WhatsApp.`person.email`stringtidakAlamat email. Diperlukan untuk flow dengan Tanda Tangan Elektronik.`person.notifications`arraytidakSaluran notifikasi untuk mengirim link journey. Setiap item memiliki `notificationChannel`: `NOTIFICATION_CHANNEL_WHATSAPP`, `NOTIFICATION_CHANNEL_SMS`, atau `NOTIFICATION_CHANNEL_EMAIL`.`bioTokenId`string (UUID)kondisional**Tidak digunakan lagi.** Gunakan `references` sebagai gantinya. ID proses biometrik referensi. Diperlukan untuk alur Validasi 1:1 (`idtoken`, `idtokentrust`, `idtokensign`) dan Revalidasi Cerdas (`idsmart`).`references`arraykondisionalInput referensi untuk alur Validasi 1:1 dan Revalidasi Cerdas, menggantikan `bioTokenId`. Setiap item berisi `referenceType` (`REFERENCE_TYPE_IMAGE_BASE64` atau `REFERENCE_TYPE_PROCESS_ID`) dan `referenceContent` (gambar yang di-encode base64 atau UUID proses).`useCase`stringkondisionalSkenario Revalidasi Cerdas. Diperlukan untuk `idsmart`. Contoh: `USE_CASE_LOGIN`, `USE_CASE_IDENTITY_REVALIDATION_7_DAYS`, `USE_CASE_FIN_TRANSACTIONS`.`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.`companyBranchId`string (UUID)tidakID cabang. Diperlukan hanya jika service account memiliki lebih dari satu cabang yang terkait.`expiresIn`stringtidakJendela validitas proses sejak pembuatan. Format: `"3600s"`. Default-nya 7 hari jika dihilangkan.`flow_config`objecttidakOverride konfigurasi per flow.`flow_config.biometry_capture.enabled_back_camera`booleantidakGunakan kamera belakang perangkat. Tidak kompatibel dengan alur pengambilan dokumen atau Tanda Tangan Elektronik.`contextualization`objecttidakKonteks transaksi yang ditampilkan kepada pengguna selama journey untuk menjelaskan pengambilan.`contextualization.company_name`stringtidakNama perusahaan yang ditampilkan selama journey. Maksimum 20 karakter.`contextualization.currency`stringtidakKode mata uang yang ditampilkan kepada pengguna. Nilai yang diterima: `BRL`, `MXN`, `USD`.`contextualization.price`numbertidakJumlah transaksi yang ditampilkan kepada pengguna.`contextualization.locale`objecttidakTeks yang dilokalisasi ditampilkan selama journey. Kunci: `ptBr`, `enUs`, `esMx`.`contextualization.locale.{ptBr|enUs|esMx}.reason`stringtidakAlasan singkat untuk pengambilan, ditampilkan selama journey. Maksimum 50 karakter.`contextualization.locale.{ptBr|enUs|esMx}.title`stringtidakJudul pemberitahuan pelanggan yang ditampilkan selama journey. Maksimum 100 karakter. Harus disediakan bersama dengan `text`. Tag HTML dihapus.`contextualization.locale.{ptBr|enUs|esMx}.text`stringtidakIsi pemberitahuan pelanggan yang ditampilkan selama journey. Maksimum 210 karakter. Harus disediakan bersama dengan `title`. Tag HTML dihapus.
### Contoh​

cURLNode.js```
curl -X POST https://api.idcloud.unico.app/client/v1/process \  -H "Authorization: Bearer $TOKEN" \  -H "Content-Type: application/json" \  -d '{    "callbackUri": "https://app.client.com/callback",    "flow": "idunicodocs",    "purpose": "biometryonboarding",    "person": {      "duiType": "DUI_TYPE_BR_CPF",      "duiValue": "12345678909",      "friendlyName": "Luke Skywalker",      "phone": "5511912345678",      "email": "luke@example.com"    }  }'
```

```
import fetch from 'node-fetch';const res = await fetch('https://api.idcloud.unico.app/client/v1/process', {  method: 'POST',  headers: {    'Authorization': `Bearer ${process.env.UNICO_ACCESS_TOKEN}`,    'Content-Type': 'application/json'  },  body: JSON.stringify({    callbackUri: 'https://app.client.com/callback',    flow: 'idunicodocs',    purpose: 'biometryonboarding',    person: {      duiType: 'DUI_TYPE_BR_CPF',      duiValue: '12345678909',      friendlyName: 'Luke Skywalker',      phone: '5511912345678',      email: 'luke@example.com'    }  })});const { process: proc } = await res.json();// proc.userRedirectUrl, proc.token, proc.webAppToken
```

### Respons​

200 OK
```
{  "process": {    "id": "53060f52-f146-4c12-a234-5bb5031f6f5b",    "state": "PROCESS_STATE_CREATED",    "flow": "idunicosign",    "purpose": "biometryonboarding",    "callbackUri": "https://app.client.com/callback",    "clientReference": "your-internal-id-123",    "companyBranchId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "userRedirectUrl": "https://cadastro.unico.app/process/53060f52-f146-4c12-a234-5bb5031f6f5b",    "token": "eyJhbGciOiJSUzI1NiIs...",    "webAppToken": "eyJhbGciOiJSUzI1NiIs...",    "createdAt": "2023-10-09T09:15:25.417105Z",    "expiresAt": "2023-10-09T16:15:25.417105Z",    "capacities": [],    "authenticationInfo": {},    "person": {      "duiType": "DUI_TYPE_BR_CPF",      "duiValue": "12345678909",      "friendlyName": "Luke Skywalker",      "phone": "5511912345678",      "email": "luke@example.com",      "notifications": []    },    "companyData": {      "branchId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",      "countryCode": "BR"    }  }}
```

FieldTipeDeskripsi`process.id`string (UUID)Identifier proses. Gunakan untuk mengambil hasil melalui [Dapatkan Proses](/id/dual-api/developers/api-reference/web-sdk/get-process).`process.state`enum`PROCESS_STATE_CREATED` — proses dibuat, journey belum dimulai. `PROCESS_STATE_FAILED` — pembuatan proses gagal.`process.flow`stringIdentifier flow yang dikirim saat pembuatan.`process.purpose`stringTujuan bisnis yang dikirim saat pembuatan.`process.callbackUri`stringURI callback yang dikirim saat pembuatan.`process.clientReference`stringIdentifier internal Anda yang dikirim saat pembuatan. Hanya muncul jika diberikan dalam permintaan.`process.companyBranchId`string (UUID)ID cabang. Hanya muncul jika diberikan dalam permintaan.`process.userRedirectUrl`stringURL untuk mengarahkan pengguna (integrasi Web Redirect dan iFrame). Jangan modifikasi URL ini.`process.token`stringJWT untuk menginisialisasi **iFrame Web SDK**.`process.webAppToken`stringJWT untuk menginisialisasi **SDK native** (Android, iOS, Flutter).`process.createdAt`string (date-time)Timestamp ketika proses dibuat.`process.expiresAt`string (date-time)Timestamp setelah proses kedaluwarsa dan tidak dapat lagi diselesaikan.`process.capacities`arrayKapabilitas yang dikonfigurasi untuk proses ini.`process.authenticationInfo`objectInformasi autentikasi untuk proses (kosong saat pembuatan).`process.person`objectEcho dari objek `person` yang dikirim saat pembuatan.`process.companyData.branchId`string (UUID)ID cabang yang terkait dengan proses.`process.companyData.countryCode`stringKode negara yang terkait dengan cabang (misalnya, `BR`, `MX`).
### Kode Error​

400 Bad Request401 Unauthorized429 Too Many Requests500 Internal Server ErrorCodeMessageDeskripsi`3`invalid flowKetika flow yang ditentukan tidak ada.`3`invalid person: friendly name exceeds 50 characters.Ketika friendly name melebihi 50 karakter.`3`invalid purposeKetika purpose yang diberikan tidak valid.`3`invalid callbackUri: unable to parse callbackUri: parse "": empty url, invalid callbackUri: url:Ketika callbackUri yang diberikan tidak valid.`3`invalid person: email required for notification channel NOTIFICATION_CHANNEL_EMAIL, invalid email address for notification channel NOTIFICATION_CHANNEL_EMAILKetika email yang diberikan tidak valid dan notifikasi email dikonfigurasi.`3`invalid person: phone number required for notification channel NOTIFICATION_CHANNEL_WHATSAPP, phone number does not contain 13 chars for notification channel NOTIFICATION_CHANNEL_WHATSAPPKetika nomor telepon yang diberikan tidak valid dan notifikasi SMS atau WhatsApp dikonfigurasi.`3`idnsv2/GetPublicID request error: rpc error: code = InvalidArgument desc = invalid dui valueKetika identifier yang diberikan (duiValue) tidak valid.`3`invalid expiresIn argumentKetika nilai `expiresIn` tidak valid.`3`invalid company_name argument in process contextualization, max length is 20Ketika `contextualization.company_name` melebihi 20 karakter.`3`title and text must be provided together in process contextsKetika hanya salah satu dari `title` atau `text` yang disediakan dalam sebuah locale.`3`invalid title argument in process contexts, max length is 100Ketika `title` dalam sebuah locale melebihi 100 karakter.`3`invalid text argument in process contexts, max length is 210Ketika `text` dalam sebuah locale melebihi 210 karakter.`3`invalid reason argument in process contexts, max length is 50Ketika `reason` dalam sebuah locale melebihi 50 karakter.`9`XX ID Apikeys are not setKetika API Key tidak dikonfigurasi dengan benar.Bearer token tidak ada, kedaluwarsa, atau tidak valid. Lihat [Autentikasi](/id/dual-api/developers/api-reference/authentication).MessageDeskripsiJwt header is an invalid JSONKetika access token yang digunakan mengandung karakter yang salah.Jwt is expiredKetika access token yang digunakan telah kedaluwarsa.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​

Setelah pengguna menyelesaikan journey, panggil [Dapatkan Proses](/id/dual-api/developers/api-reference/web-sdk/get-process) untuk mengambil hasilnya, atau tunggu [webhook](/id/developers/webhooks-and-events).
Untuk melihat semua kombinasi recipe dan nilai hasil yang mungkin, lihat [Alur](/id/dual-api/developers/api-reference/web-sdk/flows).
Terakhir diperbarui pada 8 Okt 2026**