VideoVerify - Initialize API
Important Notice:
- All request and response parameters are strictly subject to the official API documentation.
- The API response may contain fields not defined in the documentation. These fields are for internal debugging purposes only and are not guaranteed to be stable or compatible. Do not rely on these fields in production environments. ZOLOZ reserves the right to modify or remove these fields at any time without prior notice.
Overview
- API URL:
/api/v1/zoloz/videoverify/initialize - API Description: Used to initialize a VideoVerify transaction. Upon successful invocation, the system returns a unique
transactionIdand theclientCfgrequired for the client to start the SDK.
Note: This API is not idempotent. Each new business process must use a new bizId to call the Initialize API. Do not reuse the same bizId.
Request Parameters
Field Name | Data Type | Max Length | Mandatory | Default Value | Description | Example Value |
bizId | String | 32 | true | - | A unique business ID on the merchant side for tracking purposes. It is recommended to map it to a business order, application ID, or serial number. Note: ZOLOZ does not validate the uniqueness of this value; the merchant side must ensure its uniqueness. | "VV2026060500000001" |
metaInfo | String | 512 | true | - | The meta information about the SDK and the user's device. In native app mode, this value is returned by the ZOLOZ SDK. Please pass it directly without any modification. | "{\"apdidToken\":\"xxx\",\"appName\":\"com.example.app\",\"appVersion\":\"1.0.0\",\"bioMetaInfo\":\"3.46.0:0,2\",\"deviceModel\":\"iPhone13,3\",\"deviceType\":\"ios\",\"osVersion\":\"iOS 26.1\"}" |
userId | String | 64 | Conditional | - | Merchant-side user identifier. Required when checkFaceConsistency is omitted or N. When checkFaceConsistency=Y, provide exactly one of userId and faceContent. For the userId option, use an existing enrolled reference under the same merchant, for example from Connect enrollment. An arbitrary new userId cannot be used as a reference.The system will use this reference face for face consistency verification. When face consistency is not enabled, userId is still required and is used only as a user identifier. | "enrolled_user_001" |
sceneCode | String | 64 | false | null | A business scenario code used to distinguish data performance across different scenarios, e.g., | "changePassword" |
productConfig | ProductConfig | - | false | null | Fine-grained configuration parameters for the VideoVerify product. For configurable items, see ProductConfig. | { "riskMode": "STANDARD", "deeperMode": "STANDARD" } |
checkFaceConsistency | String | 1 | false | N | Enables face consistency verification. Y: enabled; N: disabled. When Y, provide exactly one of userId and faceContent. This is a top-level field, alongside productConfig. The merchant must have this capability enabled. | "Y" |
faceContent | FaceContent | - | Conditional | null | Merchant-provided reference image. Required when checkFaceConsistency=Y and userId is not supplied. Do not provide userId together with this object. See FaceContent below. | {"content":"BASE64_IMAGE_DATA","sourceOfFace2":"SELFIE"} |
ProductConfig
Field Name | Data Type | Max Length | Mandatory | Default Value | Description | Example Value |
riskMode | String | 10 | false | STANDARD | The multi-dimensional risk control cooldown rule verification in VideoVerify, used to intercept suspicious transactions. Supported values:
| "STANDARD" |
deeperMode | String | 10 | false | CLOSED | Specifies the Deeper level for AIGC attack detection. For a detailed description of the Deeper detection function, refer to the What is the Deeper. The following values are supported:
Note: Please make sure to purchase the Deeper product before enabling this feature. | "CLOSED" |
FaceContent
Field Name | Data Type | Max Length | Mandatory | Default Value | Description | Example Value |
content | String | - | true | - | Standard Base64-encoded image data without a data URI prefix. Supports JPG/JPEG, PNG and BMP. The decoded reference image must not exceed 5 MB; the combined decoded reference and SDK Pano images must also not exceed 5 MB. | "BASE64_IMAGE_DATA" |
rect | String | - | false | null | Optional face rectangle in pixels: left,top,width,height. Use comma-separated integers; left/top must be non-negative, width/height positive, and the rectangle must be within the uploaded image. If omitted, face detection is used. Do not pass left,top,right,bottom coordinates directly. | "100,80,200,200" |
sourceOfFace2 | String | - | false | SELFIE behavior | Reference source: SELFIE for a selfie/face photograph; the corresponding supported document docType for a document face; 00000001007 for a face from an otherwise unsupported document. Omitted or blank values are processed as SELFIE. | "SELFIE" |
The faceContent object is flat: {content, rect, sourceOfFace2}; do not wrap it in face2. For a document image, set sourceOfFace2 to its docType; an optional rect must locate the face in that uploaded image.
When checkFaceConsistency=Y, supplying both or neither of userId and faceContent returns INVALID_ARGUMENT. If no enrolled reference is found for userId, initialization returns INVALID_ARGUMENT. Calling Connect/FaceCapture without creating an enrolled reference is insufficient.
checkFaceConsistency, userId and faceContent are top-level fields; deeperMode remains inside productConfig. With checkFaceConsistency omitted or N, userId is still required and faceContent alone does not enable verification. No sampling-rate parameter is accepted.
Response Parameters
Field Name | Data Type | Description | Example Value |
result | Required. The result of the API request, including the operation status, result code, and message. | { "resultStatus": "S", "resultCode": "SUCCESS", "resultMessage": "Success" } | |
transactionId | String | Optional. The unique transaction ID generated by the ZOLOZ server for this process. Note: The system will only return the
| "G006600016CN2019011400000000957252****" |
clientCfg | String | Optional. The client configuration information, including parameters about the SDK connection and behavior. Returned only when the | "..." |
Result
API-Common Result Codes
For the full list of common error codes, see the Common error codes section in the Error handling topic.
API-Specific Result Codes
The following table lists result codes specific to the VideoVerify Initialize API.
resultCode | resultStatus | Description |
SUCCESS | S | The API call is successful. |
HIGH_RISK | F | High risks are detected. The user account is strategically cooled down by the risk engine. |
DEVICE_NOT_SUPPORT | F | The current device type is not supported. |
OS_NOT_SUPPORT | F | The current operating system is not supported. |
SDKVERSION_NOT_SUPPORT | F | The current SDK version is not supported. |
INVALID_ARGUMENT | F | Input parameters are invalid. For more information about which parameter is invalid, check the result message. |
SYSTEM_ERROR | F | Internal system error. For details, please check the returned |
UNABLE_GET_IMAGE | F | The supplied faceContent image is empty, damaged or unsupported. Invalid Base64, oversized reference images and invalid rectangles return INVALID_ARGUMENT. |
Sample
Request Sample
{
"bizId": "VV2026060500000001",
"metaInfo": "{\"apdidToken\":\"xxx\",\"appName\":\"com.example.app\",\"appVersion\":\"1.0.0\",\"bioMetaInfo\":\"3.46.0:0,2\",\"deviceModel\":\"iPhone13,3\",\"deviceType\":\"ios\",\"osVersion\":\"iOS 26.1\"}",
"userId": "hash_user_001",
"sceneCode": "loanGuarantee",
"productConfig": {
"riskMode": "STANDARD",
"deeperMode": "STANDARD"
}
}Response Sample
{
"result": {
"resultStatus": "S",
"resultCode": "SUCCESS",
"resultMessage": "Success"
},
"transactionId": "G006600016CN2019011400000000957252****",
"clientCfg": "..."
}Request Sample: Merchant-provided reference image
Use a new bizId and actual SDK metaInfo/Base64 image data. Do not supply userId. rect is optional.
{
"bizId": "VV2026101600000002",
"metaInfo": "<SDK metaInfo>",
"checkFaceConsistency": "Y",
"faceContent": {
"content": "BASE64_IMAGE_DATA",
"sourceOfFace2": "SELFIE"
},
"productConfig": {
"riskMode": "STANDARD",
"deeperMode": "STANDARD"
}
}