Decrypt a ZelfProof
With this endpoint you can decrypt the content stored in the Zero Knowledge Face Proof provided by Zelf.
Last updated
With this endpoint you can decrypt the content stored in the Zero Knowledge Face Proof provided by Zelf.
Last updated
https://api.zelf.world/api/zelf-proof/decrypt
Endpoint: /api/zelf-proof/decrypt
Method: POST
Content-Type: application/json
Request Body
The request body should be a JSON object containing the following fields:
faceBase64: string
(Required) - Base64 encoded face image data that will be compared against the ZelfProof.
livenessLevel: string
(Optional) - Specifies the tolerance for face liveness checks. E.g., "REGULAR"
.
os: string
(Optional) - The operating system from where the request originates, e.g., "DESKTOP"
.
password: string
(Optional) - A password if required to decrypt the ZelfProof.
zelfProof: string
(Required) - The ZelfProof in base64 format that needs to be verified and decrypted.
verifierKey: string
(Optional) - An authentication key required for decrypting the ZelfProof if specified.
200 OK: The request was successful, and the decrypted data from the ZelfProof is returned in JSON format.
400 Bad Request: There was an error with the request. Possible error codes include:
401 Unauthorized: The API Key is not present in the X-api-key
header.
403 Forbidden: The API Key is incorrect or there is an issue with licensing. Possible error codes include:
ERR_API_KEY_NOT_VALID
: The provided API Key is not valid.
ERR_LICENSE_EXPIRED
: The Zelf SDK license has expired.
ERR_CANNOT_CONNECT_TO_TIME_SERVER
: Cannot connect to the time server to verify license expiry.
ERR_CANNOT_CONNECT_TO_HOME_SERVER
: Cannot connect to the home server to verify license expiry.
ERR_NUMBER_OF_AVAILABLE_INSTANCES_EXCEEDED
: The number of available instances for this license has been exceeded.
413 Payload Too Large: The request sent is too large. Reduce the size of the image or data.
422 Unprocessable Entity: The request is invalid due to a specific error related to its content.
Here are some specific error codes that might be returned during verification:
ERR_INVALID_IMAGE: Invalid base64 string for the face image.
ERR_NO_FACE_DETECTED: No face detected in the image.
ERR_MULTIPLE_FACES_DETECTED: Multiple faces detected in the image.
ERR_INVALID_ZELFPROOF_BYTES: The provided hash bytes could not be interpreted as a valid base64 string.
ERR_PARSE_FAILED: The hash could not be interpreted as a valid hash.
ERR_PASSWORD_REQUIRED: A password is required to decrypt the hash but was not provided.
ERR_INVALID_PASSWORD: The provided password is invalid.
ERR_LIVENESS_FAILED: The user's face image in face_base_64
is determined to not be live and require_live_face
was set to true during hash creation.
ERR_VERIFICATION_FAILED: Decryption failed due to the face_base_64
not matching the face used to create the hash.
Additional Liveness Error Codes:
If the face_base_64
is determined to be not suitable for liveness, the following error codes may be returned:
ERR_LIVENESS_FACE_ANGLE_TOO_LARGE: The face angle is too large (the user is not facing the camera).
ERR_LIVENESS_FACE_IS_OCCLUDED: The face is occluded (e.g., by a mask).
ERR_LIVENESS_FACE_CLOSE_TO_BORDER: The face is too close to the border of the image.
ERR_LIVENESS_FACE_TOO_SMALL: The face is too small in the image.
ERR_LIVENESS_EYES_CLOSED: The eyes are closed in the image.