POST/api/v1/zoloz/realid/checkresult
The ZOLOZ Real ID checkresult API retrieves the identity proofing process status and results, including document verification, face verification, and risk control outcomes. This API is idempotent.
Structure
Request parameters
|
Field name |
Data type |
Max Length |
Default Value |
Description |
|
bizId |
String |
32 |
- |
Required. Unique business ID for tracing. For example, a sequence ID from the merchant's database. Note: The ZOLOZ server does not enforce uniqueness. For better tracking, ensure your server guarantees unique business IDs. |
|
transactionId |
String |
64 |
- |
Required. The unique transaction ID that is returned in the response of the initialize API. |
|
isReturnImage |
String |
1 |
N |
Optional. Specifies whether to return image data in the response. Valid values:
|
|
extraImageControlList |
List<String> |
[] |
Optional. Additional document images to return when isReturnImage is "Y". Valid values:
Note: Whether additional images are returned depends on whether these images have been successfully captured, which is determined by the following parameters in the initialize API:
For example, when the SDK type is Native SDK, the servicelevel is REALID0002, and the pages are 1 and 2, the system will capture and return the front image of the document taken under flash illumination (DOC_FRONT_FLASH). |
|
|
returnFiveCategorySpoofResult |
String |
1 |
N |
Optional. Specifies whether to return document spoofing check results in 5 categories. Valid values include:
|
Response parameters
|
Field name |
Data type |
Description |
|
result |
Required. API request result containing status and error codes. |
|
|
ekycResult |
String |
Optional. Identity proofing process status. Available only whenresult.resultSatus is
|
|
extBasicInfo |
ExtBasicInfo |
Optional. Basic real-name information. Available only when result.resultStatus is |
|
extFaceInfo |
ExtFaceInfo |
Detailed eKYC application face information. Only available when result.resultStatus is Optional. Face verification details. Available only when result.resultStatus is |
|
extIdInfo |
ExtIdInfo |
Optional. Document verification details. Available only when result.resultStatus is |
|
extRiskInfo |
ExtRiskInfo |
Optional. Risk control details. Available only when result.resultStatus is |
|
extCustomInfo |
ExtCustomInfo |
Optional. Customization details. Available only when result.resultStatus is |
Result
Result process logic
Handle different request results as follows:
-
If the value of the result.resultStatus is
S, the ZOLOZ Real ID checkresult API is invoked successfully, and results about document verification, face verification, and risk control processing are returned. -
If the value of the result.resultStatus is
F, the ZOLOZ Real ID checkresult API call failed. Check the error code and message for details.
Common error codes
All common error codes are listed in Error handling.
API-specific error codes
Error codes specific to the Real ID checkresult API:
|
resultCode |
resultSatus |
Description |
|
SUCCESS |
S |
The API call is successful. |
|
INVALID_ARGUMENT |
F |
Input parameters are invalid. Check the result message or related log for details. |
|
SYSTEM_ERROR |
F |
Other internal errors. Check the result message or related log for details. |
Examples
Request example
Sample request from the merchant server:
{
"bizId": "2017839040588699",
"transactionId": "G000000005FID20200304000000000001570702",
"isReturnImage": "Y",
"extraImageControlList": [
"FACE_EYE_CLOSE",
"DOC_FRONT_ANGLE"
],
"returnFiveCategorySpoofResult": "Y"
}
Response example
Sample response from the ZOLOZ server:
{
"result": {
"resultCode": "SUCCESS",
"resultMessage": "Success",
"resultStatus": "S"
},
"ekycResult": "Pending",
"extBasicInfo": {
"certType": "08530000001",
"certNo": "A12345678",
"certName": "xxxxxx"
},
"extFaceInfo": {
"ekycResultFace": "Success",
"faceScore": 88,
"faceImg": "/9j/4AA..[omitted]..PxA=",
"extraImages": {
"FACE_EYE_CLOSE": "/9j/4AA..[omitted]..PxA="
},
"faceQuality": 97.61517973846627,
"faceLivenessResult": "Success",
"estimatedAge": 34,
"faceAttribute": {
"occlusionMouthResult": "false",
"occlusionForeheadResult": "false",
"occlusionResult": "false",
"occlusionChinResult": "false",
"occlusionEyesResult": "false",
"occlusionNoseResult": "false",
"occlusionCheekResult": "false",
"maskResult": "false",
"glassesResult": "true",
"hatResult": "false"
},
"deeperFaceResult":"Success",
"deeperFaceResultDescription":"",
"deviceRisk":{
"riskLevel": 0
}
},
"extIdInfo": {
"ekycResultDoc": "Pending",
"docEdition": 1,
"frontPageImg": "/9j/4AA..[omitted]..PxA=",
"backPageImg": "/9j/4AA..[omitted]..PxA=",
"extraImages": {
"DOC_FRONT_ANGLE": "/9j/4AA..[omitted]..PxA=",
"CROPPED_FRONT": "/9j/4AA..[omitted]..PxA=",
"CROPPED_BACK": "/9j/4AA..[omitted]..PxA="
},
"ocrResult": {
...
},
"ocrResultDetail": {
"MRZ_ID_NUMBER": {
"name": "ID_NUMBER",
"source": "MRZ",
"value": "xxxx"
},
"VISUAL_ID_NUMBER": {
"name": "ID_NUMBER",
"source": "VISUAL",
"value": "xxxx"
}
},
"spoofResult": {
"TAMPER_CHECK": "Y",
"MATERIAL_CHECK": "Y",
"SCREEN_RECAPTURE_CHECK": "Y",
"INFORMATION_CHECK": "Y",
"SECURITY_FEATURE_CHECK": "Y"
},
"extraSpoofResultDetails": [
{
"name": "landmarkCheck",
"result": "Y",
"spoofType": "SECURITY_FEATURE_CHECK",
"components": [
{
"name": "kadPengenalan",
"subResult": "Y"
},
{
"name": "mykadLogo",
"subResult": "Y"
},
{
"name": "flagLogo",
"subResult": "Y"
},
{
"name": "mscLogo",
"subResult": "Y"
},
{
"name": "ghostFace",
"subResult": "Y"
},
{
"name": "hibiscusLogo",
"subResult": "Y"
},
{
"name": "coatOfArm",
"subResult": "Y"
},
{
"name": "twinTower",
"subResult": "Y"
}
]
},
{
"name": "hologramCheck",
"result": "Y",
"spoofType": "SECURITY_FEATURE_CHECK",
"components": [
{
"name": "hologram",
"subResult": "Y"
}
]
},
{
"name": "pageInfoCheck",
"result": "Y",
"spoofType": "INFORMATION_CHECK",
"components": [
{
"name": "id",
"subResult": "Y"
},
{
"name": "symbol",
"subResult": "Y"
},
{
"name": "name",
"subResult": "Y"
}
]
}
{
"result": "N",
"components": [
{
"subResult": "N",
"name": "ID_NUMBER"
}
],
"spoofType": "INFORMATION_CHECK",
"name": "commonConsistencyCheck"
},
{
"result": "N",
"components": [
{
"subResult": "N",
"name": "NAME"
},
{
"subResult": "Y",
"name": "SEX"
}
],
"spoofType": "INFORMATION_CHECK",
"name": "mrzVisualConsistencyCheck"
}
],
"securityFeaturesResult": {
"LASER_IMAGE_1_SCORE":95,
"LASER_IMAGE_1_THRESHOLD":90,
"LASER_IMAGE_1_PASSED":"True",
"HOLOGRAM_SCORE":95,
"HOLOGRAM_THRESHOLD":90,
"HOLOGRAM_PASSED":"True",
"STEREO_LASER_PORTRAIT_SCORE":95,
"STEREO_LASER_PORTRAIT_THRESHOLD":90,
"STEREO_LASER_PORTRAIT_PASSED":"True",
"LASER_IMAGE_2_SCORE":95,
"LASER_IMAGE_2_THRESHOLD":90,
"LASER_IMAGE_2_PASSED":"True",
"OVERALL_SCORE":95,
"OVERALL_THRESHOLD":90,
"OVERALL_PASSED":"True"
},
"docErrorDetails": "BLUR",
"docErrorDescription": "xxx"
},
"extRiskInfo": {
"ekycResultRisk": "Pending",
"strategyPassResult": "ID_NETWORK_HIGH_RISK",
"idNetworkDetails": "[{\"ekyc_id\":\"\",\"mobile\":\"\",\"reason_code\":[\"SIMILAR_FACE\"],\"type\":\"Fake ID\",\"user_id\":\"idn-z8Cuj\"}]"
"deeperRiskResult":"Success",
"deeperRiskResultDescription":"",
"advancedIdnDetail": {
"itemId": "AIN20240823437824356351",
"riskDetails": [
{
"riskData": [
"AIN20240823437671943639"
],
"subType": "SamePersonDifferentFace",
"type": "IDFAKE"
},
{
"riskData": [
"AIN20240823437672383752",
"AIN20240822429059966837"
],
"subType": "SamePersonDifferentIdNumber",
"type": "IDFAKE"
}
]
}
},
"blackListDetails":[
{
"listId": "10064",
"itemId": "95c0e4e55d5cd5485edaa573d15e82**",
"itemType": "FACE",
"similarScore": 99.99999999999999,
"transactionId": "G000000001FRL202410100000000109481109**"
},
{
"listId": "10066",
"itemId": "20015",
"itemType": "CERT",
"similarScore": 100
}
]
},
"extCustomInfo": {"h5Degraded":"Y"}
}
The "securityFeaturesResult" field is deprecated. Hong Kong Document SecurityFeature Upgrade Notification - May 31, 2024 . This field remains in the response for API compatibility and is shown in the examples for reference only. Do not consume it.
More information
ExtBasicInfo
Fields in ExtBasicInfo data model:
|
Field name |
Data type |
Description |
|
certType |
String |
ID type. Specifies the type of the identity document. Required if the document verification process runs successfully. |
|
certNo |
String |
ID number. Specifies the ID number that is recognized from the identity document. Required if the document verification process runs successfully. |
|
certName |
String |
ID name. Specifies the name that is recognized from the identity document. Required if the document verification process runs successfully. |
ExtFaceInfo
Fields in the ExtFaceInfo data model:
|
Field name |
Data type |
Description |
|
ekycResultFace |
String |
Face verification result. Possible values:
Required if the face verification processruns successfully. |
|
faceScore |
Integer |
Score comparing the live face (selfie) against the document photo. Range: 0-100. Note:The faceScore field is returned only if the face image is collected successfully. |
|
faceImg |
String |
The face selfie image, which is encoded in base64. This field is specified only when the value of the isReturnImage field in the request is set to |
|
extraImages |
Map<String,String> |
Contain the extra face images specified in request.extraImageControlList. Key is the value specified in request.extraImageControlList. Value is the image content encoded in base64. If the requested image is not found, the value will be "". |
|
faceQuality |
Double |
Quality score of the face selfie image. Range: 0-100. Returned if face verification runs successfully. |
|
faceQualityPassed |
Boolean |
Required. The total quality result of the face image. Face quality detection supports multiple algorithms for detection, including face quality score, mask detection, and occlusion detection. Face quality score (i.e. whether the face is clear, complete etc) is detected by default, and more algorithms can be enabled according to business needs.
|
|
faceLivenessResult |
String |
Face liveness check result. Returns |
|
estimatedAge |
Integer |
Estimated age based on the face selfie image. Notes:
|
|
faceAttribute |
Face attribute detection result. faceAttribute. Note: This field is returned only when the faceAttributeCheck parameter is passed in and |
|
|
actionCheckList |
List<String> |
Optional. Detected facial actions list. |
|
deeperFaceResult |
String |
Optional. Specifies the deeper face detection result. It is returned when
|
|
deeperFaceResultDescription |
String |
Optional. Detailed description of the deeper face detection result when |
|
deviceRisk |
DeviceRisk |
Optional. Returned device risk information. This field is only returned when you purchase Deeper product and the |
faceAttribute
|
Field name |
Data type |
Description |
|
occlusionMouthResult |
String |
Mouth occlusion detection result.
|
|
occlusionForeheadResult |
String |
Forehead occlusion detection result.
|
|
occlusionResult |
String |
Overall occlusion detection result.
|
|
occlusionChinResult |
String |
Specifies chin occlusion detection result.
|
|
occlusionEyesResult |
String |
Specifies eyes occlusion detection result.
|
|
occlusionNoseResult |
String |
Specifies nose occlusion detection result.
|
|
occlusionCheekResult |
String |
Specifies cheek occlusion detection result.
|
|
maskResult |
String |
Specifies mask detection result.
|
|
glassesResult |
String |
Specifies glasses detection result.
|
|
hatResult |
String |
Specifies hat detection result.
|
DeviceRisk
|
Field name |
Data type |
Description |
|
riskLevel |
Integer |
Optional. Risk levels and corresponding recommendations:
|
ExtIdInfo
Fields in the ExtIdInfo data model:
|
Field name |
Data type |
Description |
|
ekycResultDoc |
String |
Specifies the result of the document verification process. Possible values and their meanings are as below:
Required if the document verification process runs successfully. |
|
docEdition |
Integer |
Specifies the edition of the identity document.
|
|
frontPageImg |
String |
The frontside image of the identity document. The image must be encoded in base64. This field is specified only when the value of the isReturnImage field in the request is set to |
|
backPageImg |
String |
The backside image of the identity document (if any). The image must be encoded in base64. This field is specified only when the value of the isReturnImage field in the request is set to |
|
extraImages |
Map<String,String> |
Contain extra doc images specified in request.extraImageControlList and request.cropImage parameter. Key is the value specified in request.extraImageControlList if request.extraImageControlList is not blank. Possible Key values if request.cropImage is not blank:
Value is the image content encoded in base64. If the requested image is not found, the value will be "". |
|
ocrResult |
Map |
The OCR result, which contains information about the identity. Required if the document verification process runs successfully. Depending on the type of the identity document, different sets of identity information are recognized. For more information, see Supported document types and OCR result fields. |
|
ocrResultDetail |
Map<String, OcrResultDetail> |
OCR result details. This field is returned only when |
|
spoofResult |
Map |
Optional. The spoofing check result, which contains information about the check results in terms of tampering, authenticity of the document material, and screen recapture. For more information, see spoofResult. |
|
extraSpoofResultDetails |
List<ExtraSpoofResultDetail> |
Optional. Extra document spoof detection result details. For more details, see extraSpoofResultDetails. |
|
securityFeaturesResult |
Map |
Deprecated. See Hong Kong Document SecurityFeature Upgrade Notification - May 31, 2024. |
|
docErrorDetails |
String |
Optional. Specifies the error details of the document verification process. Possible values and their meanings are as below:
|
|
docErrorDescription |
String |
Optional. Specifies doc verification failure reason. |
spoofResult
The following table shows the detailed information that is included in a spoofing check result.
|
Field name |
Data type |
Description |
|
TAMPER_CHECK |
String |
Required. Tampering check result. Returns |
|
MATERIAL_CHECK |
String |
Required. Material authenticity check result. Returns |
|
SCREEN_RECAPTURE_CHECK |
String |
Required. Screen recapture check result. Returns |
|
SECURITY_FEATURE_CHECK |
String |
(Optional) Currently only support HKIDs (both the old and new versions) and MyKad. Indicate whether the identity passed security feature check. Returned only if the "returnFiveCategorySpoofResult" parameter is set to " Possible values include:
|
extraSpoofResultDetails
The following table shows the data structure of an element of the spoofResultDetails array.
|
Field name |
Data type |
Description |
|
name |
String |
Required. Indicate the name of the detailed document spoof check. For example, "landmarkCheckResult", "hologramCheckResult" |
|
result |
String |
Required. Indicate the result of the detailed document spoof check. Possible values include:
|
|
spoofType |
String |
Required. Indicate the detailed document spoofing check category. Possible values include:
|
|
components |
Array |
Required. Contain check result of each components. It will always be returned. If there is only one component check specified, the array will return one element. |
|
components.name |
String |
Required. Component name. Possible values are listed in the spoofing check details. |
|
components.subResult |
String |
Required. Indicates the result of the component.
|
securityFeaturesResult
This field is deprecated, please refer to Hong Kong Document SecurityFeature Upgrade Notification - May 31, 2024 for more information.
ExtRiskInfo
The following table shows the fields that can be specified in the ExtRiskInfo data model.
|
Field name |
Data type |
Description |
|
ekycResultRisk |
String |
Risk control result. Possible values:
|
|
strategyPassResult |
String |
Risk check result. Returned if risk control runs successfully. Possible values:
|
|
idNetworkDetails |
String |
Optional. Specifies the detailed information about the ID Network output, this field is a JSON string that comes from the JSON serialization result of the IdNetworkDetails structure, please refer to IdNetworkDetails. Note: This field is specified only when the strategyPassResult field returns as |
|
otherRiskReasonDetails |
String |
Optional. Detailed outputs of risk engines other than ID Network. For example, for blacklist hits: { "BLACKLIST_HIGH_RISK": { "CERT": [ {"listId":"xx","transactionId":"xx","itemId":xx,"similarScore":xx} ], "FACE":[ {"listId":"xx","transactionId":"xx","itemId":"xx","similarScore":xx} ] } } |
|
deeperRiskResult |
String |
Optional. Specifies the deeper risk detection result. It is returned when
|
|
deeperRiskResultDescription |
String |
Optional. Specifies the detail descriptions of the deeper risk detection result when |
|
advancedIdnDetail |
AdvancedIdnDetail |
Optional. Detailed information output by IDN, see AdvancedIdnDetail for details. Note: This parameter is only returned when the IDN feature is purchased and the |
|
blackListDetails |
List<BlackListDetail> |
Optional. Detailed information output by the blacklist, see BlackListDetail Note: This parameter is only returned when the blacklist feature is purchased and the |
IdNetworkDetails
|
Field name |
Data type |
Description |
|
ekyc_id |
String |
Optional. Deprecated field. Specifies eKYC ID. |
|
mobile |
String |
Optional. Deprecated field. Specifies mobile phone number. |
|
reason_code |
Array |
Optional. Specifies causes of risk:
|
|
type |
String |
Optional. Specifies the type of risks triggered:
|
|
score |
String |
Optional. Reserved field. When the value of Note: Please don't rely on this field. |
|
user_id |
String |
Optional. Merchant user ID, or other identifiers that can be used to identify a specific user. |
Note: The IDN embedded in RealID is a streamlined version of IDN that contains only some of IDN, and thus is called IDN Lite.
-
Full IDN functions: IDN API Documentation.
-
Differences between IDN Lite and IDN: IDN Lite vs IDN: What are the differences?
Introduction to risk types and reason codes
IdNetwork supports 2 types of major risk detection:
-
Fake ID (tampering with document information)
-
Duplicated ID (multiple documents for the same person)
The risk types and reason codes details are shown in the table below:
|
Risk type |
Reason code |
Description |
|
Fake ID |
SIMILAR_FACE |
Same face, different ID numbers (same ID type). |
|
SAME_CERT_NO |
Same ID number (same ID type), different faces. |
|
|
Duplicated ID |
SIMILAR_FACE |
Same face, different ID types. |
AdvancedIdnDetail
|
Field name |
Data type |
Description |
|
itemId |
String |
Optional. The record ID added to the ID Network database. Please keep this record ID for subsequent risk queries. |
|
riskDetails |
List<RiskDetail> |
Optional. Current risks faced by the merchant. RiskDetail. |
RiskDetail
|
Field name |
Data type |
Description |
Example |
|
type |
String |
Returned risk type. For more details, see Risk introduction. |
"IDFAKE" |
|
subType |
String |
Returned sub-risk type. For more details, see Risk introduction. |
"SameFaceDifferentIdNumber" |
|
riskData |
List<String> |
Returned risk data with an itemId array. |
["AIN20220727890199220364"] |
|
riskDataDetails |
List<RiskDataDetail> |
Risk data details, see RiskDataDetail. |
[ { "itemId": "AIN20220727890199220364", "sourceProductType": "RealID", "sourceTransactionId": "G000000000FIA2026020200000012515624****" } ] |
RiskDataDetail
|
Field name |
Data type |
Description |
Example |
|
itemId |
String |
Risk temId. |
"AIN20220727890199220364" |
|
sourceProductType |
String |
Source transactionId that triggered the IDN risk. |
"RealID" |
|
sourceTransactionId |
String |
Original transactionId associated with the risk itemId. |
"G000000000FIA2026020200000012515624****" |
BlackListDetail
|
Field name |
Data type |
Description |
Example |
|
listId |
String |
Target blacklist ID. |
"10064" |
|
itemId |
String |
Blacklist record ID. |
"95c0e4e55d5cd5485edaa573d15e82**" |
|
itemType |
String |
Type of blacklist record, including three types:
|
"FACE" |
|
similarScore |
String |
Similarity score, the higher the score, the greater the similarity. |
99.99999999999999 |
|
transactionId |
String |
Source of the blacklist record, which is the information entered by the customer through the eKYC transactionId. |
"G000000001FRL202410100000000109481109**" |
ExtCustomInfo
|
Field name |
Data type |
Description |
|
h5Degraded |
String |
Whether degraded mode is enabled. Valid values:
Note: This field is returned only when the |
Version
|
Date |
Change log |
|
Sep 20, 2024 |
A new parameter, blackListDetails, is added in ExtRiskInfo. |
|
August 1, 2024 |
Deeper related interface information changes. |
|
28 March, 2024 |
New output parameter faceAttribute is added. |
|
30 November, 2023 |
IdNetworkDetailsand Introduction to risk types and reason codes are added |
|
22 May, 2022 |
New input parameters of extraImageControlList, returnFiveCategorySpoofResult and new output parameters of extraImages, extraSpoofResultDetails are added. |
|
23 October, 2020 |
OCR result keys for China identity card are added. |
|
8 September, 2020 |
Two more types of identity documents are supported: Malaysia MyKad and Macau identity card. |
|
30 July, 2020 |
|
|
21 May, 2020 |
|
|
27 December, 2019 |
The letter case convention of the parameter name is updated. |
|
06 December, 2019 |
Released. |