New ID_Check v2.6.0 — Device verification now extends through ID and selfie capture: values are compared against entry to catch device swaps, plus new Sensor verification against camera-path injection. See what's new →
New ID_Check v2.6.0 — Device verification now extends through ID and selfie capture: values are compared against entry to catch device swaps, plus new Sensor verification against camera-path injection. See what's new →
FaceAuth further verifies identity by comparing the selfie of a user approved in the ID Check process with the selfie captured during FaceAuth. This page covers the two delivery methods (URL / API), the Face Auth URL QueryString structure, and the request parameter definitions.
Related reading
Creating a FaceAuth project in the dashboard and configuring policy (thresholds, liveness, occlusion) and token expiration → FACE AUTH Guide
Add-on fundamentals shared by every add-on (API key issuance, request quotas, HTTP response status codes) → Add-on Getting Started
FaceAuth can be delivered in two ways. We recommend the Face Auth URL method, which removes the need to build your own camera UI and supports Active Liveness.
A. Face Auth URL (Recommended)
Selfie capture happens on an ARGOS-hosted page (similar to Liveform). No client-side camera implementation is required, and the project policy can enable Liveness (Passive/Active) and occlusion (mask/helmet) controls.
B. POST /faceauth API
Your app implements the camera UI and posts the captured faceImage file to the API. Active Liveness is not supported — only face similarity is compared.
If spoofing via replayed screens or printed photos is a concern, use the URL method. The POST API method judges a single submitted image on similarity alone and cannot verify that the user is physically present. The URL method lets you set a Liveness threshold in the project policy to block screen-replay and still-photo attacks.
For dashboard policy setup (thresholds, liveness, occlusion) and end-to-end use cases for both methods, see the FACE AUTH guide. The remainder of this page covers parameters and the auth flow for Method A (Face Auth URL). For Method B (POST API), see the POST/Faceauth page.
FaceAuth is a sub-project of ID check, and administrators can create as many projects as they want. To deliver additional authentication via the FaceAuth URL method, use the Face Auth URL within the Add-on project.
To reference a submission_Id that has been approved through ID document or Knowledge-based where a selfie image exists, it must be added to the URL through the encrypted query parameter, and for security purposes, it must always be used in an encrypted state.
Encryption must use the API key within the FaceAuth project and uses AES-256.
For detailed methods, please refer to Query String Encryption.
The plaintext you encrypt is JSON — not a query string.Encrypting a string built by joining key=value pairs with & (for example sid=...&authUserId=...) leaves sid unreadable and verification never starts. Serialize a JSON object (JSON.stringify) and encrypt that string, then pass the result as encrypted.In this case the screen shows “Page not found” rather than an error-code page, which makes the cause hard to identify. For the diagnostic order, see Face Auth URL Validation and Error Handling.
Face Auth does not run without a query string.A URL carrying only pid will not start verification — the sid to reference must be encrypted and passed inside encrypted. If it is missing, the user is redirected to the PV-40015 error page.
The encrypted value must be URL-encoded.AES-256 output (Base64) contains +, /, and =. Appending it to the URL without encoding makes + decode as a space, so decryption itself fails and sid cannot be read. Apply encodeURIComponent (or your language’s URL-encoding function).
Full Node.js example
const crypto = require('crypto');function encrypt(data, apiKey) { const hashedKey = crypto.createHash('sha256').update(apiKey).digest(); const cipher = crypto.createCipheriv('aes-256-ecb', hashedKey, null); return cipher.update(data, 'utf8', 'base64') + cipher.final('base64');}// Step 1: the plaintext is a serialized JSON objectconst queryData = JSON.stringify({ sid: 'submission_12345', authUserId: 'user123',});// Step 2: encrypt with the FaceAuth project API key, then URL-encodeconst encrypted = encrypt(queryData, FACEAUTH_API_KEY);const faceAuthUrl = `https://form.argosidentity.com/face-auth?pid=${FACEAUTH_PROJECT_ID}` + `&encrypted=${encodeURIComponent(encrypted)}`;
pid and lang are not subject to encryption — append them as plaintext outside encrypted.
User Id that the administrator will assign to the user (this could be the user Id in the administrator’s service or the same userId used in ID document or Knowledge-based)
Token that the administrator will add to the URL for security purposes. Note!: This token operates separately from the pre-registered token in private mode.
How FaceAuth token works
The token is designed to assign a unique URL to each user when they authenticate through FaceAuth.
To apply a token, you must enable the token expiration condition setting option in the FaceAuth project, and it works as follows:
Count-based expiration: When the token is used once, the Token ID is immediately expired.
Time-based expiration: When the time has elapsed from the point when the token was used once, the Token ID is expired.
This token operates separately from the main project’s private mode token or pre-registered token.
For example, you can specify an arbitrary tokenId set by the administrator in the token, and even if you reuse the token used in the main project, it works because it is viewed separately.
For a guide on enabling the token expiration condition setting option in the FaceAuth project, please refer to FACE AUTH guide — Token Expiration Condition Settings.
Display language of the Face Auth screen. Use a lowercase ISO 639-1 code (for example, en, ko). Not subject to encryption — append it as plaintext outside encrypted (for example, ?pid={faceAuth_projectId}&encrypted={encrypted}&lang=en). When omitted, mobile follows the device language and PC follows the browser language. For the list of supported languages, see Supported Languages.
For approved cases where no selfie image exists, the portrait image from the ID document will be used instead.
Face Auth URL Validation and Error Handling
A stage-by-stage reference for the error codes raised by QueryString validation failures, pre-load failures, and authentication failures — and the messages users actually see.