Overview
This guide catalogs all error pages that can appear during the Liveform mobile verification journey. Each table aligns the developer-facing code and route with the exact message your users see so support teams, operators, and developers can speak with one voice.All error pages fall into one of four rendering paths:
/error-page/:errorType/error-page/token-*/face-retry/:faceErrorCode- Next.js
Error Boundary
Error code category system
Error code format:CATEGORY-5DIGITS (e.g., NF-10000)
| Category | Prefix | Full name | Number range | Meaning |
|---|---|---|---|---|
| General | Developer code | Legacy | — | Defined per error type by its developer code |
| Not Found | NF | Not Found | 10000s | Direct access to undefined routes |
| Quality Score | QS | Quality Score | 10000–30000 | Error cases triggered during IP lookups |
| Queueing Error | QE | Queueing Error | 20000s | Engine queue overload errors |
| Parameter Validation | PV | Parameter Validation | 40000s | Missing query-string parameters / invalid values / option conflicts |
| Server Error | SE | Server Error | 50000s | API call failures or server errors |
| Runtime | RT | Runtime Error | 60000s | Front-end runtime errors (React ErrorBoundary, try/catch exceptions) |
General error pages (/error-page/:errorType)
🔒 Authentication & authorization errors
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Page not found | page-not-found | /error-page/page-not-found | ”The page could not be found” | Appears when a user types a non-existent URL or opens an outdated bookmark. |
| Service blocked | service-blocked | /error-page/service-blocked | ”Submissions are temporarily paused” | Shown when an operator temporarily halts submissions but users keep visiting the link. |
| Invalid path | bad-path | /error-page/bad-path | ”Invalid URL path” | Triggered if someone edits the shared link or navigates to a non-whitelisted route. |
| Refresh detected | refresh | /error-page/refresh | ”Refresh detected” | Displayed when the user refreshes or clicks back/forward mid-flow and the session resets. |
| Unsupported browser | invalid-browser | /error-page/invalid-browser | ”Unsupported browser” | Appears on legacy browsers or environments without WebAssembly support; users must switch to a modern browser. |
| Hash validation failure | hash_problem | /error-page/hash_problem | ”Hash validation issue” | Shown if multiple tabs or skipped steps break the data integrity; the flow must restart. |
| Encrypted only | encrypted_only | /error-page/encrypted_only | ”Unencrypted access” | Appears when accessing a project with option_encryptedOnly=true using an unencrypted query string, or when query parameters other than pid, lang, and encrypted are included. |
📅 Project status errors
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Project closed | project-closed | /error-page/project-closed | ”This project is closed and access is restricted” | Users reopening a finished campaign see that no further submissions are allowed. |
| Period expired | period | /error-page/period | ”Project submission window expired” | Triggered when someone visits after the allowed submission window has ended. |
| Submission count limit | submission-number-limit | /error-page/submission-number-limit | ”You submitted more than 15 times” | Trial projects stop additional attempts once the 15 submission cap is exceeded. |
📤 Submission status errors
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Already approved | already_approved | /error-page/already_approved | ”This device has already been verified” | A device/browser that already completed verification is blocked until the waiting period ends. |
| Already rejected | already_rejected | /error-page/already_rejected | ”This submission was already rejected” | The user tries again before the rejection cooldown expires and is told to wait. |
| Pending review | already_pending | /error-page/already_pending | ”Your submission is under review” | A new submission is attempted while the previous one is still under review. |
| Processed (approved) | processed_submission-approved | /error-page/processed_submission-approved | ”This submission was already processed (approved)“ | Reopening an approved result simply reminds the user no further action is needed. |
| Processed (rejected) | processed_submission-rejected | /error-page/processed_submission-rejected | ”Verification was rejected” | Reopening a rejected result shows the remaining wait time before a retry. |
| IP already approved | ip_already_approved | /error-page/ip_already_approved | ”This IP address has already been approved” | Another user on the same network tries to redo a verification that already succeeded. |
| IP already rejected | ip_already_rejected | /error-page/ip_already_rejected | ”This IP address has already been rejected” | The same network repeatedly fails or is still within a rejection cooldown; users must switch networks. |
📧 Email-related errors
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Email already rejected | email_already_rejected | /error-page/email_already_rejected | ”Verification rejected / This email was already rejected” | Reusing an email that is still within a rejection waiting period shows the remaining cooldown. |
🛡️ Security & fraud detection
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Suspected forgery | suspected-forgery | /error-page/suspected-forgery | ”Suspected forgery detected” | Triggered when the captured ID looks blurry, manipulated, or otherwise inauthentic; the user must reshoot. |
| File upload not allowed | not-allow-file-upload | /error-page/not-allow-file-upload | ”File upload is not allowed” | Secure browsers, private mode, or denied camera/file permissions prevent uploads; users must enable access or switch devices. |
| Duplicate face detected | face_validation_error | /error-page/face_validation_error | ”Duplicate face detected” | The system detects the same face from a previous submission and instructs the user to contact support. |
| Abnormal action | abnormal_action | /error-page/abnormal_action | ”Abnormal behavior detected” | Uploading screenshots, over-edited images, or identical selfies triggers this message and forces a proper retry. |
🌍 IP risk errors
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Risky category | ipRisk_failCategory | /error-page/ipRisk_failCategory | ”IP risk category failed” | Connections from VPNs, Tor, or data centers are blocked until users switch networks. |
| Distance check failed | distanceChecks_ipGeo | /error-page/distanceChecks_ipGeo | ”IP distance check failed” | When GPS and IP geolocation are far apart (e.g., local GPS but overseas VPN) the user must disable the VPN. |
| Blacklisted country | blackliskCountries | /error-page/blackliskCountries | ”Blacklisted country” | Access from restricted countries is denied with guidance that the service is unavailable there. |
| Risk duration lock | ipRisk_durationHours | /error-page/ipRisk_durationHours | ”IP risk duration limit” | Repeated risky attempts lock the IP for a set duration; users can only retry after the timer ends. |
⏱️ Rate limit & lockout
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Rate limit exceeded | rate_limit_exceeded | /error-page/rate_limit_exceeded | ”Request limit exceeded” | Too many refreshes or submissions in a short period trigger a temporary pause. |
| Account locked | locked_out | /error-page/locked_out | ”Account locked” | Numerous failures or suspicious activity lock the account until the displayed timer expires. |
| Traffic overload | traffic_overload | /error-page/traffic_overload | ”Traffic overload” | Submission status polling exceeds 32 attempts, indicating server overload; users are asked to try again later. |
📍 NF — Not Found
Error codes for when a route cannot be found.| Error code | URL | User message | Occurrence |
|---|---|---|---|
NF-10000 | /error-page/not-found | ”Page not found” The page you requested does not exist. Please check the URL and try again. | Accessing a route not defined in the router. Both Mobile and PC wildcard (*) routes redirect here. |
NF-10001 | /error-page/invalid-path | ”Invalid access path” You accessed an unauthorized path. Please try again with the correct URL. | The URL path exists but is not in the allowed initial path list (VALID_INITIAL_PATH). |
⚠️ QS — Quality Score
Error codes triggered during IP lookups.| Error code | URL | User message | Occurrence |
|---|---|---|---|
QS-10000 | /error-page/abnormal_verification_denied | ”Abnormal verification denied” Rapid risky attempts lowered the trust score. You must wait for the displayed timer to expire. | The IP checker issues a 48-hour wait due to repeated risky behavior. |
QS-20000 | /error-page/abnormal_rejected | ”Abnormal rejection” Severe anomalies triggered an immediate rejection. Security issues must be resolved before retrying. | The IP checker detects a fraud score of 90 or above. |
QS-30000 | /error-page/ipqs_system_error | ”IPQS system error” The IP lookup failed due to a system error. Please try again later. | A client or server error occurs in the IP checker. |
📦 QE — Queueing Error
Error codes for engine queue overload situations.| Error code | URL | User message | Occurrence |
|---|---|---|---|
QE-20000 | /error-page/queueing-timeout | ”Queue overload” We couldn’t process your submission due to unusually high traffic and an overloaded queue. Please try again in a moment. | The engine processing queue is overloaded and the server cannot handle the current user’s data. |
🔧 PV — Parameter Validation
Error codes for missing query-string parameters, invalid values, or option conflicts.| Error code | URL | User message | Occurrence |
|---|---|---|---|
PV-40000 | /error-page/missing-pid | ”Required parameter is missing” The project ID (pid) is not included in the URL. Please access again via the correct link. | The pid parameter is missing from the URL query string. pid is required for all requests. |
PV-40001 | /error-page/invalid-action | ”Invalid request” The action parameter value is invalid or required parameters are missing. | The action parameter is not addveri, or action=addveri is set without pid or sid. |
PV-40002 | /error-page/invalid-distance-option | ”Option configuration is invalid” The distance check option value is invalid. Please check the settings and try again. | distanceCheckSource is provided but distanceMaxDistanceKm is not a valid number. |
PV-40003 | /error-page/invalid-iprisk-option | ”Option configuration is invalid” The IP risk option value is invalid. Please check the settings and try again. | ipRiskCategory is provided but ipRiskDurationHours is not a valid number. |
PV-40004 | /error-page/conflicting-projection | ”Parameter configuration conflict” projectionName and projectionId cannot be used at the same time. Please configure only one of them. | Both projectionName and projectionId are specified simultaneously. Only one is allowed. |
PV-40010 | /error-page/blacklisted-country | ”Service is unavailable in this country” Identity verification service is not available in the selected country. | The country specified in selectedIssuingCountry is on the service blacklist. |
PV-40011 | /error-page/blacklisted-allowed-country | ”Allowed country configuration is invalid” The allowed country list includes a country with restricted service. Please check the settings and try again. | The allowedCountries list contains one or more blacklisted countries. |
PV-40012 | /error-page/conflicting-universal-idtype | ”ID type option configuration conflict” Universal mode and specific ID type selection (selectedIdType) cannot be used together. Please check the settings and try again. | option_universal=true is set alongside selectedIdType, which are mutually exclusive. |
PV-40013 | /error-page/missing-issuing-country | ”Issuing country information is missing” To specify an ID type, the issuing country must also be configured. Please check the settings and try again. | selectedIdType is provided without the required selectedIssuingCountry. |
PV-40014 | /error-page/conflicting-knowledge-idtype | ”Authentication method configuration conflict” In knowledge-based authentication mode, the ID type cannot be specified separately. Please check the settings and try again. | authType=knowledge is set alongside selectedIdType, which are not compatible. |
PV-40015 | /error-page/missing-faceauth-pid | ”Authentication information is missing” Required parameters (pid or sid) for face authentication are missing. Please access again via the correct link. | Entering faceAuth flow without pid or sid. |
PV-40016 | /error-page/conflicting-knowledge-skip | ”Validation option configuration conflict” Skipping knowledge validation and disabling face comparison cannot be used together. Please check the settings and try again. | knowledgeField=skip is set alongside option_validationFaceCompare=false. |
PV-40017 | /error-page/conflicting-knowledge-field | ”Knowledge validation field configuration conflict” The skip option in knowledgeField cannot be used with other fields. Please set skip as a standalone option. | knowledgeField includes both skip and other field options. skip must be used alone. |
🖥️ SE — Server Error
Error codes for API call failures or server errors.| Error code | URL | User message | Occurrence |
|---|---|---|---|
SE-50000 | /error-page/project-load-error | ”Unable to load project information” An error occurred while fetching project settings from the server. Please try again later. | The projectOptions API call fails during initial app entry. |
SE-50001 | /error-page/token-check-error | ”An error occurred while verifying the token” A problem occurred while communicating with the server. Please try again later. | An exception occurs during the checkingToken API call. |
SE-50002 | /error-page/validation-api-error | ”Validation service error” A server error occurred during address validation. Please try again later. | The address validation API (/live/internal/validation) returns an error response. |
SE-50010 | /error-page/faceauth-preload-error | ”Face authentication initialization failed” A server error occurred while preparing face authentication. Please try again later. | The first API query for pre-loading faceAuth data fails. |
SE-50011 | /error-page/faceauth-preload-error-2 | ”Face authentication initialization failed” A server error occurred while loading additional face authentication data. Please try again later. | The second API query for pre-loading faceAuth data fails. |
SE-50012 | /error-page/faceauth-submission-error | ”Failed to verify face authentication status” An error occurred while checking the authentication submission status. Please try again later. | The checkSubmission API responds but result is falsy. |
SE-50013 | /error-page/faceauth-token-error | ”Face authentication token processing failed” An error occurred while registering the authentication token. Please try again later. | An exception occurs during the insertToken API call in faceAuth. |
SE-50014 | /error-page/faceauth-project-error | ”Unable to load face authentication project information” An error occurred while fetching project data from the server. Please try again later. | The API call to retrieve faceAuth project data fails. |
SE-50015 | /error-page/validation-code-error | ”Validation failed” An error code was returned from address validation. Please check your information and try again. | The address validation API response contains an errorCode field. The API responded but validation itself failed. |
⚡ RT — Runtime Error
Error codes for front-end runtime errors.| Error code | URL | User message | Occurrence |
|---|---|---|---|
RT-60000 | /error-page/runtime-error | ”An error occurred” An unexpected error occurred. Please refresh the page or start over. | React ErrorBoundary fires on /qr, /knowledge-qr, or /face-auth-qr routes. |
RT-60001 | /error-page/token-runtime-error | ”An error occurred during token processing” An unexpected error occurred. Please refresh the page or start over. | An exception is caught in the try/catch block inside the useTokenCheck hook. |
🔵 Token error pages (/error-page/token-*)
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Token missing | token-missing | /error-page/token-missing | ”Token ID is not active” / “Try again on another mobile device” | Copying a link without its token parameter or opening an incomplete URL triggers this page. |
| Token expired | token-expired | /error-page/token-expired | ”Token expired” / “Try again on another mobile device” | Very old or reused links surface this message; users need a fresh token. |
| Token already approved | token-approved | /error-page/token-approved | ”Token already approved” | A token that already completed verification is reopened, so duplicates are blocked. |
| Token pending | token-pending | /error-page/token-pending | ”Token under review” | The same token is accessed while its submission is still under review; users must wait. |
| Token rejected | token-rejected | /error-page/token-rejected | ”Token rejected” | The token previously failed verification and requires contacting an operator before retrying. |
🔄 Face retry (/face-retry/:faceErrorCode)
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Dynamic face reshoot | face-retry/:faceErrorCode | /face-retry/:faceErrorCode | Localized per error code / Button: “Retake” | Poor lighting, misaligned faces, or other capture issues prompt a reshoot; certain codes (e.g., invalid_submission_status) hide the reshoot button entirely. |
❌ Runtime errors (Error Boundary)
| Type | Developer code | URL | User message | Occurrence |
|---|---|---|---|---|
| Runtime error | Next.js Error Boundary | — | Default: “Your request failed”, “KYC verification was rejected” Special: “Unsupported browser” (WebAssembly error), “This browser does not support storage functionality” | Network drops, force refreshes, or storage-disabled environments (private mode) can crash the app; users should tap “Retry” or switch to a modern browser/standard mode. |
Use these tables to align support scripts, monitoring alerts, and QA scenarios so every stakeholder is describing the same screen with the same vocabulary.