Skip to main content
This section outlines SDK response codes, error handling methods, session management checks, SDK lifecycle controls, and capability retrieval. It helps ensure proper handling of responses, session states, and SDK operations during integration.
Error KeyUser-facing MessageWhen TriggeredError Code
CRYPTOGRAPHIC_ERRORA security issue occurred. Please try again.RSA handshake or payload encryption/decryption failed.400
SESSION_ERRORWe couldn’t load your session. Please try again.Session ID or token is missing, expired, or invalid.400
INVALID_REQUESTSomething’s wrong with the request. Please try again.The API received a malformed or incomplete request payload.400
INVALID_CONFIGURATIONSystem setup error. Please try again.Channel configuration is missing or misconfigured on the backend.400
TIMEOUTRequest timed out. Please try again.The backend did not respond within the expected time window.408
DB_ERRORSomething went wrong. Please try again.A database-level error occurred on the backend.500
ENGINE_ERRORSystem error. Please try again.The biometric or document processing engine encountered an error.500
INTERNAL_ERRORAn unexpected error occurred.An unhandled exception on the backend or in the SDK pipeline.500
INVALID_OPERATIONPlease scan again.Operation not permitted in the current state (e.g. invalid QR re-scan).400
INVALID_DATAPlease check your input and try again.Provided data failed validation — document number format, image quality, etc.400
SDK_INTERNAL_ERRORSDK Internal Error.init() was not called or failed before a data method was invoked.400
UNAUTHORIZED_ACCESSUnauthorized access. Please login again.Authentication failed due to invalid credentials, expired token, or missing authorization header.401
JOURNEY_ERRORUnable to complete the verification journey. Please try again.The verification journey failed due to an invalid state transition or backend journey processing issue.400

1. Error Handling

Errors can be accessed using output.errors?.first?.code, message, and details, or from output.data?["message"]. These values should be checked to identify and handle failures appropriately.
    // From errors array    
    output.errors?.first?.code    
    output.errors?.first?.message    
    output.errors?.first?.details    
         
    // Or from data    
    output.data?["message"] as? String    

2. Session Handling

Use Quepass.isSessionTimedOut() to determine whether the current session has expired. If the session is timed out, the SDK should be re-initialized before making additional requests.
    if Quepass.isSessionTimedOut() {    
        // Re-initialize SDK    
    }    

3. Close SDK

Call Quepass.closeSDKProcess() to properly close and terminate the SDK process when needed.
Quepass.closeSDKProcess()    

4. SDK Capabilities

Use Quepass.getSdkCapabilities to retrieve SDK information such as version details. The returned data should be used only if the success flag is true.
    Quepass.getSdkCapabilities { success, data in    
        if success, let info = data {    
            let version = info.version    
        }    
    }