This topic describes how to call the CheckResult operation to query the authentication results for the eKYC_PRO solution.
API description
Operation name: CheckResult
Request method: HTTPS POST
Description: When the server-side receives a callback indicating that authentication is complete, call this API to retrieve the corresponding authentication status and information. This callback is sent when the client result code is 1001 or 1002. For more information, see Native SDK client result codes and sub-codes.
- Important
The ID Verification service stores verification results for 30 days by default. Please retrieve them within this period, as they are automatically deleted afterward.
QPS limit: Each API has its own QPS limit. For more information, see QPS limits of ID Verification server-side APIs.
Endpoints:
NoteBenefits of internal network access: An internal network is a private communication network connecting Alibaba Cloud products within the same region. If your application server is deployed in the same region, use the internal endpoint to access the ID Verification service for enhanced security and stability.
Optimizing overseas access: Overseas network environments can be complex. Refer to Optimize server network latency to tune your integration and reduce network latency and request failures.
Asia Pacific SE 1 (Singapore)
Public endpoint:
cloudauth-intl.ap-southeast-1.aliyuncs.comInternal endpoint:
cloudauth-intl-vpc.ap-southeast-1.aliyuncs.com
Asia Pacific SE 5 (Jakarta)
Public endpoint:
cloudauth-intl.ap-southeast-5.aliyuncs.comInternal endpoint:
cloudauth-intl-vpc.ap-southeast-5.aliyuncs.com
China (Hong Kong)
Public endpoint:
cloudauth-intl.cn-hongkong.aliyuncs.comInternal endpoint:
cloudauth-intl-vpc.cn-hongkong.aliyuncs.com
Asia Pacific SE 3 (Kuala Lumpur)
Public endpoint:
cloudauth-intl.ap-southeast-3.aliyuncs.comInternal endpoint:
cloudauth-intl-vpc.ap-southeast-3.aliyuncs.com
Online debugging and integration
Before debugging and integration, read the Use OpenAPI document to learn how to call APIs on the OpenAPI platform and obtain the SDK.
You can test this operation in OpenAPI Explorer and generate sample SDK code.
Integration notes
TransactionId storage specifications: TransactionId is the trusted server-side identifier for an authentication record. It must be bound to your business ID and stored persistently on the server-side.
Log retention period: Authentication result logs are stored for 30 days by default and are automatically deleted after this period. You must query the results within this period and properly save the required data in compliance with regulations.
Video acquisition and retention compliance: Videos are returned only when the corresponding feature is enabled and the authentication process is successful. The download link for an evidence video is valid for 15 minutes. The original video is automatically deleted 30 minutes after the authentication is complete. If your business needs to retain videos, download them promptly and strictly comply with local privacy and data compliance requirements.
Image acquisition specifications: Authentication images are returned only when IsReturnImage is set to Y and the face verification is successful. Because Base64 data is large, you can keep this parameter at its default value N if you do not need to display or retain the images.
Distinguishing between API status and authentication result: A value of Success for the Code parameter only indicates that the API call was successful. The final authentication result must be based on the Result.Passed and Result.SubCode fields.
Troubleshooting authentication failures: If Passed is N, you must determine the cause of the failure by checking the SubCode, ExtFaceInfo, ExtIdInfo, and ExtSourceInfo (if it exists) fields.
Field parsing compatibility: The returned content, such as Optical Character Recognition (OCR) fields, the number of certificate pages, and facial attributes, varies dynamically based on the certificate type, regional service capabilities, and SDK configuration. Your client-side parsing logic must be backward-compatible to ensure normal operation when fields are missing or added.
Field distribution description
The main response structure, liveness detection results, and OCR result fields of CheckResult are consistent for both App SDK and Web SDK integrations.
Category | Field | Description |
Common output | General response, authentication conclusion, | Can be returned in both integration modes. Whether it is returned depends on the authentication flow and the InitializeV2 configuration. |
Web SDK specific |
| When a compatibility downgrade occurs during authentication, the actual downgrade policy is returned. |
App specific | None | None |
Request parameters (common)
Field | Type | Required | Description | Example value |
MerchantBizId | String | Yes | A unique business ID from the merchant, consisting of 32 letters and numbers. It must be consistent with the value used in the InitializeV2 request. | e0c34a77f5ac40a5aa5e6ed20c35**** |
TransactionId | String | Yes | The unique authentication identifier returned by a successful init API call. To prevent tampering, always retrieve this value from your server-side storage and do not trust the value sent from the client-side. | hksb7ba1b28130d24e015d6******** |
IsReturnImage | String | No | Specifies whether to return authentication image materials (including certificates):
| Y |
Return Data
Name | Type | Description | Example value | |
HTTP Status Code | Integer | The HTTP status code. | 200 | |
HTTP Body | RequestId | String | The request ID, used for troubleshooting. | 130A2C10-B9EE-4D84-88E3-5384FF039795 |
Code | String | The server-side return code. For more information, see Server-side HTTP status codes. | Success | |
Message | String | A detailed description of the return code. | success | |
Result.Passed | String | The final authentication result:
| Y | |
Result.SubCode | String | The description of the authentication result. For more information, see Result.SubCode authentication result subcode descriptions. | 200 | |
Result.ExtFaceInfo | String | Results related to face liveness verification. For more information, see Result.ExtFaceInfo. | | |
Result.ExtIdInfo | String | Certificate OCR and anti-spoofing results. For more information, see Result.ExtIdInfo. | | |
Result.ExtSourceInfo | String | Details of the authoritative data source verification. This is returned only when Authorize=T in InitializeV2 and the corresponding data source is actually called. For more information, see Result.ExtSourceInfo. | | |
Result.ExtInfo | String | Other authentication information, mainly including the actual downgrade information for mobile H5. For more information, see Result.ExtInfo. | | |
Result.ExtFaceInfo
Name | Type | Description | Example value |
facePassed | String | The overall result of face liveness verification:
| Y |
faceComparisonScore | Double | The comparison score between the live face and the certificate photo, ranging from 0 to 100. A score greater than or equal to 90 indicates a pass. | 99.99 |
faceImg | String | The live face image in Base64 format. Returned only when | Base64 format |
docVideoUrl | String | The OSS download URL for the evidence video. This may be returned only when the | https://aliyun-cloudauth.oss-aliyuncs.com/******.webm |
faceAttack | String | Indicates whether a liveness attack was detected:
| N |
faceAttributeInfo | String | Detects the facial attributes of the main face in an input image. The main face is the one that is largest, clearest, and closest to the camera. The detection results are returned as a string. You can use this string to make decisions about the content. The returned fields are defined as follows:
| |
faceAttackScore (Offline) | Double | The liveness attack risk score, ranging from 0 to 100. The risk of liveness attacks is now determined by a Large Language Model (LLM), so the concept of a risk score is no longer applicable. This field is offline. | 80 |
guardRiskScore | Double | The device risk score, ranging from 0 to 100. A higher score indicates a higher device risk. | 90 |
deviceToken | String | The DeviceToken for Face Guard. It is returned when the Face Guard module is fully integrated and can be used to query the Face Guard server-side API operations to get device risk details.
| e0c34a77f5ac40a5aa5e6ed20c35**** |
Result.ExtIdInfo
Name | Type | Description | Example value |
ocrIdPassed | String | The final result of the certificate OCR recognition stage:
| N |
ocrDocType | String | Returned only when the | CHN01001 |
ocrIdInfoData | Map<String,Object> | Detailed results for each page of the certificate. The key is the page number, and the value contains the fields for a single page. For more information, see ocrIdInfoData.{page} single-page fields. `01` and `02` indicate the front and back (or secondary page) of the certificate, respectively. | |
ocrIdEditInfo | String | The certificate OCR field information submitted by the user after editing on the OCR result page. This is returned when the client is configured to enable the OCR result editing page (ShowOcrResult). | |
ocrStandardData | String | Standardized OCR fields of the ID certificate. Note Returned only when the document type is supported and | |
ocrIdInfoData.{page} single-page fields
Name | Type | Description | Example value |
idImage | String | The certificate OCR photo in Base64 format. Returned only when | Base64 format |
ocrIdPassed | String | The OCR result for the current certificate page:
| N |
ocrIdInfo | String | The OCR field information for the current certificate page. This is empty if OCR fails. The specific fields vary depending on the certificate type. For field details, see Certificate OCR fields. | |
spoofInfo | String | The result of spoof detection, including the risk decision and risk types: Note Card spoofing detection is enabled only when IdSpoof = Y in the Initialize request. Otherwise, spoofResult sets to N, and spoofType is empty.
| |
Result.ExtSourceInfo
Field descriptions for the Indonesian data source:
Field | Type | Description |
govId | Double | The comparison score of the certificate number against the official data source. A value of |
fullName | Double | The name comparison score. A value of |
dob | Double | The date of birth comparison score. A value of |
selfiePhoto | Double | The selfie comparison score. A value greater than |
liveness | Double | The liveness risk score from the data source. A value higher than |
imgManipulationScore | Double | The image tampering risk score. A value higher than |
Result.ExtInfo
Field | Type | Description |
procedurePriority | String | The actual downgrade method for mobile H5 authentication:
|
Result.SubCode authentication result subcode descriptions
Error code | Is the authentication record billed? | Description and suggestions |
200 | Yes | Authentication passed. |
204 | Yes | [Face Comparison] The live face does not match the certificate photo. This may be because the person does not match the certificate or the quality of the live photo is low. |
205 | Yes | [Liveness Attack] A risk was detected during liveness detection. |
206 | Yes | [Liveness Attack] Limited by business policy. After safe mode is enabled, the device and environment are checked for security. If a potential risk is detected, the authentication fails. You can troubleshoot and handle this as follows:
|
212 | Yes | [Certificate Solution] A risk was detected during certificate anti-spoofing detection. High-risk operations such as screen recapture, tampering, or photocopying may have occurred. |
202 | Yes | [Authoritative Data Source] The certificate number does not exist in the authoritative source data. |
207 | Yes, authoritative source is billed additionally | [Authoritative Data Source] The authoritative source data indicates that the personal information matches, but the face does not. |
214 | Yes, authoritative source is billed additionally | [Authoritative Data Source] The authoritative source data indicates that the face matches, but the personal information does not. |
215 | Yes, authoritative source is billed additionally | [Authoritative Data Source] The authoritative source data indicates that neither the personal information nor the face matches. |
216 | Yes, authoritative source is billed additionally | [Authoritative Data Source] The authoritative source data indicates that the photo liveness is abnormal (in the Indonesian data source verification, the |
217 | Yes, authoritative source is billed additionally | [Authoritative Data Source] The authoritative source data indicates that the image quality is abnormal. |
218 | Yes, authoritative source is billed additionally | [Authoritative Data Source] The business process passed, but the parameters passed to the authoritative source were incorrect. |
209 | Yes, authoritative source is not billed | [Authoritative Data Source] The authoritative source is abnormal. |
FAQ
faceComparisonScore: What is the false acceptance rate (FAR) for the face comparison threshold, and what are the corresponding thresholds for different FARs?
The false acceptance rate (FAR) is the probability that the system incorrectly identifies a non-matching person as a matching person. A lower FAR value indicates higher security. The thresholds that correspond to each FAR value are as follows:
1% FAR | 0.1% FAR | 0.05% FAR | 0.01% FAR (Recommended) | 0.005% FAR | 0.001% FAR |
57.3 | 76.4 | 81.8 | 90.0 | 90.5 | 91.3 |