Biometric & Demographic Verification
This API allows partners to perform both biometric and demographic verification in a single request. By submitting user information and a captured selfie, the API validates identity through facial analysis, liveness detection, and demographic cross-checks against trusted data sources. This combined flow enables efficient, high-assurance verification while minimizing user friction. The following section outlines the required request parameters for initiating this verification process.
Parameters
Main Parameters
partnerTrxId*
string
Generate a unique transaction ID in UUID format and include it in the request to link your transaction with the VIDA transaction.
Generated random UUID by the partner.
Example:
1000073-c00f-4008-8005-d2ec4d9be956
transactionType*
string
Type of the transaction
In the biometric and demographic verification below transaction type is applicable:
FULL_FRAUD_ASSESSMENT
govId*
string
The user's government ID number (NIK number)
NIK - Nomor Induk Kependudukan), consisting of a 16-digit number: 3451222123456716
govIdType
string
The type of IDCard Document.
Supported values: "KTP"
fullName*
string
Users Full Name which should same with registered ID
User full name as per KTP.
Example: Johnny Rudiantara Sembiring
dob*
string
User's Date of Birth
Date of Birth in yyyy-mm-dd format
Example: 1989-01-01
mobile*
string
The user's verified mobile number with the country code, provided in E.164 format without spaces or special characters.
If the mobile number isn’t available, a verified email address can be passed, however, one of the two is mandatory.
Example: +6281293671234
string
The user's valid email address
Example: user@gmail.com
consent*
object
A user’s consented timestamp value where they agreed to consent sharing data with VIDA
"consent": {
"consentedAt": "1614089870",
"consentGiven": true
}
selfiePhoto*
base64-encoded string
A plain base64-encoded string of the user's selfie for facial recognition and face-match checks, adhering to specified image standards.
Example: "/9j/4AAQSkZJRgABAQAAJAAkAAD/4QhcR..."
idCardPhoto
base64-encoded string
A plain base64-encoded string of the user ID card Photo (i.e. KTP)
Example: "/9j/4AAQSkZJRgABAQAAJAAkAAD/4QhcR..."
*required parameter
Extended Demographic Parameters
Extended demographic parameters refer to additional identity-related fields that go beyond the standard personal information typically used in identity verification. Including extended parameters can enhance the accuracy of verification, support higher assurance levels, or fulfill regulatory and business requirements for more detailed profiling.
pob
string
User's Place of Birth
Jakarta
motherMaidenName
string
The user's mother’s maiden name as per IDCard.
Siti Elizabeth
maritalStatus
string
The user's marital status as per IDCard.
Belum Kawin
familyCardNo
string
The user's family card number (if idCardType is KTP)
3451222123456716
address
string
The user's residential address as per KTP (Alamat).
Jl. Pasti Cepat A7/66
village
string
The user's residential village as per KTP (Kelurahan/Desa).
Pegadungan
villageCode
string (4 digit)
The user's residential village code (Kelurahan/Desa).
1001
district
string
The user's residential district as per KTP (Kecamatan).
Kalideres
districtCode
string (2 digit)
The user's residential district code (Kecamatan).
10
city
string
The user's city of residence as per KTP (Kabupaten/Kota)
Jakarta Barat
cityCode
string (2 digit)
The user's city code of residence (Kabupaten/Kota)
13
province
string
The user's province of residence as per KTP (Provinsi).
DKI Jakarta
provinceCode
string (2 digit)
The user's province code of residence (Provinsi).
23
Alternative: Multistage Full Verification with VIDA
VIDA supports Biometric and Demographic Verification executed separately.
This flow is suitable for use case where:
Partners who requires demographic check first, before collecting user selfie photo
Partner do intermediary check in between Demographic check and Biometric checks. For example: Credit scoring check
Such flow enable a more flexible verification flow where the client needs to handle both stages separately but link them through a shared transaction reference called groupId

During the Step 1: Demographic-only Verification, partners should send a unique
groupIdthat can be used to track related transactions and pair it with biometric verification for later.The same
groupIdshould be sent during the Step 2: Biometric-only Verification to allow for NIK linking between two separate checks.In step 2, VIDA will check the Step 1's Demographic verification result based on groupId, which will determine the certificate issuance status
groupIdwill expire within 1 day, and will be valid for up to 3 times of Biometric Verification retries
Each step will return a response
transactionIdthat are unique for either callsA
registrationIdis returned upon successful Step 2. This unique ID signifies the user, which can be used for digital signature for VIDA DirectSign API.
Sample Request
Sample Response
HTTP Status Code: 200
Sample Response Value Explanation
full_name
Degree of match between the provided full name and stored data.
selfiePhoto
The degree of match between the selfie provided and the stored biometric data. (Score threshold: 0 to 1)
liveness
Score indicating the likelihood that the selfie represents a live person. (Score: 0 to 1)
imgManipulationScore
Score that indicate the probability of image manipulation in the selfie. (Score: 0 to 1)
dob
Score that indicate the probability of date of birth data validation. (Score: 0 to 1)
fraudAssessment
Indicates the current state of the fraud assessment process.
Status: SUBMITTED — The assessment has been submitted and is pending review. At this stage, the data will be processed through post-correction.
Status: COMPLETED — The review process is finished, and the result is either approved or rejected:
Approved: The data has been successfully corrected and validated.
Rejected: The data was found to be incorrect or spoofed, and has been rejected.
authenticationLevel
Assurance level of the authentication process. authenticationLevel field should not be used programmatically to determine a successful transaction. Instead, customer should define successful transaction based on Status Check API, score & fraudAssessment status
certificate
Details regarding the certificate's trustworthiness for digital signatures. certificate field should not be used programmatically to determine a successful transaction. Instead, customer should define successful transaction based on Status Check API, score & fraudAssessment statu
1. Accept Responses
HTTP Status Code: 200
Status : SUCCESS
Main Required Parameters
With All Extended Demographic Parameters
2. Reject Responses
2.1 Below threshold
Case when selfie photo or demographic check result is below the VIDA assurance threshold.
HTTP Status Code: 200
Status : Success
SelfiePhoto Score
Demographic Score
Demographic & SelfiePhoto Score
2.2 Liveness and Image Manipulation not passed
HTTP Status Code: 200
Status : Success
JSON Response
2.3 Image quality not passed (single detail)
HTTP Status Code: 200
Status : SUCCESS
Face Too Small
Face Occluded
Multiple Faces Detected
Image is Blurry
Underexposure
Overexposure
Unnatural Color
2.4 Image quality not passed (multiple details)
HTTP Status Code: 200
Status : Success
Blur and Overexposure
Blur and Underexposure
Blur and Unnatural Color
Unnatural Color and Overexposure
3. Error Responses
These errors occur when one or more mandatory fields are not provided in the request. The response includes details of the missing parameter in the detail field.
HTTP Status Code: 400
Status : ERROR
Missing (fullName)
Missing (selfiePhoto)
Missing (DOB and fullName)
4. Response when the API submitted in Manual Review
Response returned when the API submission enters the manual review stage.
HTTP Status Code: 440
Status: SUBMITTED
Last updated
