VerifEye Service API
Overview
The VerifEye Service API provides endpoints to manage verification configurations and to create and validate signed query strings.
The VerifEye Service API enables you to:
- Create, retrieve, list, update and delete verification configurations
- Configure verification settings for liveness, age, gender, and face recognition
- Create verification sessions for the Web SDK
- Create signed query strings for secure API requests
- Validate signed query strings to ensure request integrity
- Manage redirect URLs and result parameters
- Control session-level configuration overrides
- Configure webhooks to receive server-side notifications when verification sessions complete
- Retrieve full session results server-side via the Get Session Result endpoint
This API is intended for server-side use only. Using it directly from the client side would expose it to potential misuse and abuse.
Base URLs
API Endpoints
Create Signature
Creates a signed query string based on the query string provided in the request body.
Endpoint: POST /v1/signature/create
Authentication: API Key or Bearer Token
Request Body:
{
"queryString": "key1=value1&key2=value2...keyN=valueN",
"securitySettings": {
"enableNonce": true,
"expirationEnabled": true,
"expirationInSeconds": 3600
}
}
Request Parameters:
Response Example:
{
"signature": "THE_SIGNATURE",
"signedQueryString": "key1=value1&key2=value2...keyN=valueN&reExpiration=1747852345&reNonce=bf5c7f4e8a794e41a58e08dfd634f816&reSignature=THE_SIGNATURE",
"expiration": 1747852345,
"nonce": "bf5c7f4e8a794e41a58e08dfd634f816"
}
Response Fields:
Example Request:
curl -X POST "https://verifeye-service-api-eu.realeyes.ai/v1/signature/create" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE" \
-H "Content-Type: application/json" \
-d '{
"queryString": "key1=value1&key2=value2...keyN=valueN",
"securitySettings": {
"enableNonce": true,
"expirationEnabled": true,
"expirationInSeconds": 900
}
}'
Response Codes:
200- Success400- Bad Request - Invalid parameters (e.g. nonce enabled without expiration, orexpirationInSecondsoutside1..604800)401- Unauthorized - Missing or invalid authentication
Validate Signature
Validates the signature of the request using the query string and the signature inside the query string. Also checks the optional reExpiration and reNonce parameters when present.
This endpoint is read-only — calling it never consumes a nonce, so you can use it from your backend to detect a bad / expired / already-used link before redirecting the user.
Endpoint: POST /v1/signature/validate
Authentication: API Key or Bearer Token
Request Body:
{
"queryString": "key1=value1&key2=value2...keyN=valueN&reSignature=THE_SIGNATURE"
}
Request Parameters:
Response Example:
{
"result": "Valid"
}
Response Fields:
Outcome semantics:
Validation is evaluated in the order signature → expiration → nonce. The first failing check determines the result.
Example Request:
curl -X POST "https://verifeye-service-api-eu.realeyes.ai/v1/signature/validate" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE" \
-H "Content-Type: application/json" \
-d '{
"queryString": "key1=value1&key2=value2...keyN=valueN&reSignature=THE_SIGNATURE"
}'
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication
Get Verification
Returns a verification configuration by verificationId.
Endpoint: GET /v1/verification/get
Authentication: API Key or Bearer Token
Query Parameters:
Response Example:
{
"verification": {
"created": "2025-11-07T00:00:00Z",
"lastModified": "2025-11-07T00:00:00Z",
"verificationId": "39e00c96-6431-4b2e-8707-2fb80e561fbf",
"name": "Test Verification",
"verificationConfig": {
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "DuplicateVerification",
"collectionId": "my-collection"
},
"gender": {
"type": "CalculationOnly"
}
},
"redirectConfig": {
"passedUrl": "https://example.com?result=passed",
"failedUrl": "https://example.com?result=failed"
},
"resultParameterConfig": {
"includeSignature": true,
"includeSessionId": true,
"includeFaceId": true,
"includeAge": true,
"includeGender": true,
"includeVerificationResult": true,
"includeCustomInputParameters": true,
"includeLivenessCheckResult": true,
"includeAgeVerificationResult": true,
"includeGenderVerificationResult": false,
"includeFaceRecognitionResult": true,
"includeCorrelationId": true,
"includeTotalFaceCount": true,
"includeFailedReason": true
},
"securityConfig": {
"forceSignedInput": true
},
"sessionOverrideConfig": {
"allowVerifierOverrides": true,
"allowResultParameterOverrides": false,
"allowRedirectOverrides": false
},
"webhookConfig": {
"eventCallbackUrl": "https://your-server.example.com/webhook"
}
}
}
}
Response Fields:
Example Request:
curl -X GET "https://verifeye-service-api-eu.realeyes.ai/v1/verification/get?verificationId=39e00c96-6431-4b2e-8707-2fb80e561fbf" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE"
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication404- Not Found - Verification configuration not found
Get All Verifications
Returns all verification configurations for the account.
Endpoint: GET /v1/verification/get-all
Authentication: API Key or Bearer Token
Response Example:
{
"verifications": [
{
"verificationId": "39e00c96-6431-4b2e-8707-2fb80e561fbf",
"name": "Test Verification",
"created": "2026-02-01T00:00:00Z",
"lastModified": "2026-02-01T00:00:00Z"
}
]
}
Response Fields:
Example Request:
curl -X GET "https://verifeye-service-api-eu.realeyes.ai/v1/verification/get-all" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE"
Response Codes:
200- Success401- Unauthorized - Missing or invalid authentication
Create Verification
Create a new verification configuration. If you require idempotent behavior — where the configuration is created when it does not yet exist or updated when it does — use
IMPORTANT
A verification is supposed to be a reusable configuration that can be used across multiple verification sessions and with the same face collection. This follows a one-time setup concept: create it once and reuse it many times. For more details, see One-time setup: Create once, reuse many times.
Endpoint: POST /v1/verification/create
Authentication: API Key or Bearer Token
Request Body:
{
"name": "Test Verification",
"verificationConfig": {
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "DuplicateVerification",
"collectionId": "my-collection"
},
"gender": {
"type": "CalculationOnly"
}
},
"redirectConfig": {
"passedUrl": "https://example.com?result=passed",
"failedUrl": "https://example.com?result=failed"
},
"resultParameterConfig": {
"includeSignature": true,
"includeSessionId": true,
"includeFaceId": true,
"includeAge": true,
"includeGender": true,
"includeVerificationResult": true,
"includeCustomInputParameters": true,
"includeLivenessCheckResult": true,
"includeAgeVerificationResult": true,
"includeGenderVerificationResult": false,
"includeFaceRecognitionResult": true,
"includeCorrelationId": true,
"includeTotalFaceCount": true,
"includeFailedReason": true
},
"securityConfig": {
"forceSignedInput": true
},
"sessionOverrideConfig": {
"allowVerifierOverrides": true,
"allowResultParameterOverrides": false,
"allowRedirectOverrides": false
},
"webhookConfig": {
"eventCallbackUrl": "https://your-server.example.com/webhook"
}
}
}
Request Parameters:
Response Example:
{
"verificationId": "39e00c96-6431-4b2e-8707-2fb80e561fbf"
}
Response Fields:
Example Request:
curl -X POST "https://verifeye-service-api-eu.realeyes.ai/v1/verification/create" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE" \
-H "Content-Type: application/json" \
-d '{
"name": "Test Verification",
"verificationConfig": {
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "DuplicateVerification",
"collectionId": "my-collection"
},
"gender": {
"type": "CalculationOnly"
}
},
"redirectConfig": {
"passedUrl": "https://example.com?result=passed",
"failedUrl": "https://example.com?result=failed"
},
"resultParameterConfig": {
"includeSignature": true,
"includeSessionId": true,
"includeFaceId": true,
"includeAge": true,
"includeGender": true,
"includeVerificationResult": true,
"includeCustomInputParameters": true,
"includeLivenessCheckResult": true,
"includeAgeVerificationResult": true,
"includeGenderVerificationResult": false,
"includeFaceRecognitionResult": true,
"includeCorrelationId": true,
"includeTotalFaceCount": true,
"includeFailedReason": true
},
"securityConfig": {
"forceSignedInput": true
},
"sessionOverrideConfig": {
"allowVerifierOverrides": true,
"allowResultParameterOverrides": false,
"allowRedirectOverrides": false
}
}
}'
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication409- Conflict - A verification configuration with the same name already exists
Create or Update Verification
Create a new verification configuration, or update the existing one if a verification with the same name already exists.
IMPORTANT
A verification is supposed to be a reusable configuration that can be used across multiple verification sessions and with the same face collection. This follows a one-time setup concept: create it once and reuse it many times. For more details, see One-time setup: Create once, reuse many times.
Changing the face collection
When this call updates an existing verification, changing faceRecognition.collectionId only detaches the previous collection — it is not deleted. All faces already indexed remain stored in the old collection, and new face data is routed into the new collectionId going forward. If you no longer need the old collection, delete it explicitly via the Face Recognition API.
Endpoint: POST /v1/verification/create-or-update
Authentication: API Key or Bearer Token
Request Body:
{
"name": "Test Verification",
"verificationConfig": {
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "DuplicateVerification",
"collectionId": "my-collection"
},
"gender": {
"type": "CalculationOnly"
}
},
"redirectConfig": {
"passedUrl": "https://example.com?result=passed",
"failedUrl": "https://example.com?result=failed"
},
"resultParameterConfig": {
"includeSignature": true,
"includeSessionId": true,
"includeFaceId": true,
"includeAge": true,
"includeGender": true,
"includeVerificationResult": true,
"includeCustomInputParameters": true,
"includeLivenessCheckResult": true,
"includeAgeVerificationResult": true,
"includeGenderVerificationResult": false,
"includeFaceRecognitionResult": true,
"includeCorrelationId":true,
"includeTotalFaceCount":true,
"includeFailedReason":true
},
"securityConfig": {
"forceSignedInput": true
},
"sessionOverrideConfig": {
"allowVerifierOverrides": true,
"allowResultParameterOverrides": false,
"allowRedirectOverrides": false
},
"webhookConfig": {
"eventCallbackUrl": "https://your-server.example.com/webhook"
}
}
}
Request Parameters:
Response Example:
{
"verificationId": "39e00c96-6431-4b2e-8707-2fb80e561fbf",
"wasCreated": true
}
Response Fields:
Example Request:
curl -X POST "https://verifeye-service-api-eu.realeyes.ai/v1/verification/create-or-update" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE" \
-H "Content-Type: application/json" \
-d '{
"name": "Test Verification",
"verificationConfig": {
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "DuplicateVerification",
"collectionId": "my-collection"
},
"gender": {
"type": "CalculationOnly"
}
},
"redirectConfig": {
"passedUrl": "https://example.com?result=passed",
"failedUrl": "https://example.com?result=failed"
},
"resultParameterConfig": {
"includeSignature": true,
"includeSessionId": true,
"includeFaceId": true,
"includeAge": true,
"includeGender": true,
"includeVerificationResult": true,
"includeCustomInputParameters": true,
"includeLivenessCheckResult": true,
"includeAgeVerificationResult": true,
"includeGenderVerificationResult": false,
"includeFaceRecognitionResult": true,
"includeCorrelationId":true,
"includeTotalFaceCount":true,
"includeFailedReason":true
},
"securityConfig": {
"forceSignedInput": true
},
"sessionOverrideConfig": {
"allowVerifierOverrides": true,
"allowResultParameterOverrides": false,
"allowRedirectOverrides": false
}
}
}'
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication
Update Verification
Update a verification configuration.
Changing the face collection
Changing faceRecognition.collectionId only detaches the previous collection from this verification — it is not deleted. All faces already indexed remain stored in the old collection, and new face data is routed into the new collectionId going forward. If you no longer need the old collection, delete it explicitly via the Face Recognition API.
Endpoint: PUT /v1/verification/update
Authentication: API Key or Bearer Token
Request Body:
{
"name":"Test Verification",
"verificationConfig":{
"verifierConfigs":{
"liveness":{
"type":"Verification",
"challengeType": "Balanced"
},
"age":{
"type":"CalculationOnly"
},
"faceRecognition":{
"type":"Disabled"
},
"gender":{
"type":"CalculationOnly"
}
},
"redirectConfig":{
"passedUrl":"https://example.com?result=passed",
"failedUrl":"https://example.com?result=failed"
},
"resultParameterConfig":{
"includeSignature":true,
"includeSessionId":true,
"includeFaceId":true,
"includeAge":true,
"includeGender":true,
"includeVerificationResult":true,
"includeCustomInputParameters":true,
"includeLivenessCheckResult":true,
"includeAgeVerificationResult":true,
"includeGenderVerificationResult":false,
"includeFaceRecognitionResult":true,
"includeCorrelationId":true,
"includeTotalFaceCount":true,
"includeFailedReason":true
},
"securityConfig":{
"forceSignedInput":true
},
"sessionOverrideConfig":{
"allowVerifierOverrides":true,
"allowResultParameterOverrides":false,
"allowRedirectOverrides":false
},
"webhookConfig":{
"eventCallbackUrl":"https://your-server.example.com/webhook"
}
},
"verificationId":"39e00c96-6431-4b2e-8707-2fb80e561fbf"
}
Request Parameters:
Response Example:
{
"verificationId": "39e00c96-6431-4b2e-8707-2fb80e561fbf"
}
Response Fields:
Example Request:
curl -X PUT "https://verifeye-service-api-eu.realeyes.ai/v1/verification/update" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE" \
-H "Content-Type: application/json" \
-d '{
"name": "Test Verification",
"verificationConfig": {
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "Disabled"
},
"gender": {
"type": "CalculationOnly"
}
},
"redirectConfig": {
"passedUrl": "https://example.com?result=passed",
"failedUrl": "https://example.com?result=failed"
},
"resultParameterConfig": {
"includeSignature": true,
"includeSessionId": true,
"includeFaceId": true,
"includeAge": true,
"includeGender": true,
"includeVerificationResult": true,
"includeCustomInputParameters": true,
"includeLivenessCheckResult": true,
"includeAgeVerificationResult": true,
"includeGenderVerificationResult": false,
"includeFaceRecognitionResult": true,
"includeCorrelationId": true,
"includeTotalFaceCount": true,
"includeFailedReason": true
},
"securityConfig": {
"forceSignedInput": true
},
"sessionOverrideConfig": {
"allowVerifierOverrides": true,
"allowResultParameterOverrides": false,
"allowRedirectOverrides": false
},
"webhookConfig": {
"eventCallbackUrl": "https://your-server.example.com/webhook"
}
},
"verificationId": "39e00c96-6431-4b2e-8707-2fb80e561fbf"
}'
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication404- Not Found - Verification configuration not found409- Conflict - A verification configuration with the same name already exists
Delete Verification
Delete a verification configuration.
Endpoint: DELETE /v1/verification/delete
Authentication: API Key or Bearer Token
Query Parameters:
Example Request:
curl -X DELETE "https://verifeye-service-api-eu.realeyes.ai/v1/verification/delete?verificationId=39e00c96-6431-4b2e-8707-2fb80e561fbf" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE"
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication404- Not Found - Verification configuration not found
Create Session
Creates a verification session and returns a short-lived session token. This is the server-side call your backend makes to start a verification that runs in the browser via the Web SDK: pass the returned verificationSessionId and sessionToken to the SDK's VerifyVerifier component as its sessionId and accessToken.
Unlike a reusable
This endpoint is intended for server-side use only — it requires your API key. The returned sessionToken is a short-lived JWT that is safe to hand to the browser; never expose your API key to the client.
Endpoint: POST /v1/verification/create-session
Authentication: API Key or Bearer Token
Request Body:
{
"name": "default",
"externalId": "your-correlation-id",
"verifierConfigs": {
"liveness": {
"type": "Verification",
"challengeType": "Balanced"
},
"age": {
"type": "CalculationOnly"
},
"gender": {
"type": "CalculationOnly"
},
"faceRecognition": {
"type": "DuplicateVerification",
"collectionId": "my-collection"
},
"commonSettings": {
"failOnMultipleFacesDetected": true
}
},
"webhookConfig": {
"eventCallbackUrl": "https://your-server.example.com/webhook"
}
}
Request Parameters:
Response Example:
{
"verificationSessionId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"sessionToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Response Fields:
Example Request:
curl -X POST "https://verifeye-service-api-eu.realeyes.ai/v1/verification/create-session" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE" \
-H "Content-Type: application/json" \
-d '{
"verifierConfigs": {
"liveness": { "type": "Verification", "challengeType": "Balanced" },
"age": { "type": "CalculationOnly" },
"gender": { "type": "CalculationOnly" }
}
}'
Response Codes:
200- Success400- Bad Request - Invalid parameters401- Unauthorized - Missing or invalid authentication
Get Session Result
Returns all available verification results for a given verification session, regardless of the result parameter configuration. The session must belong to the authenticated account and must have been created within the last 7 days.
This endpoint is intended for server-side use only. It allows you to retrieve the raw verification results of any session created under your account without being constrained by what the verification configuration was set up to expose.
Endpoint: GET /v1/verification/get-session-result
Authentication: API Key or Bearer Token
Query Parameters:
Response Example:
{
"verificationSessionId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"verificationResult": "Pass",
"verificationFailedReasons": ["noFace"],
"livenessVerificationResult": "Pass",
"ageVerificationResult": "Pass",
"estimatedAge": 30.5,
"genderVerificationResult": "Pass",
"estimatedGender": "Male",
"faceRecognitionResult": "Pass",
"faceId": "face-uuid-here",
"correlationId": "corr-uuid-here",
"totalFaceCount": 1,
"customInputParameters": {
"userId": "user123",
"campaignId": "camp456"
}
}
Response Fields:
Example Request:
curl -X GET "https://verifeye-service-api-eu.realeyes.ai/v1/verification/get-session-result?verificationSessionId=a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "Authorization: ApiKey API-KEY-FROM-DEV-CONSOLE"
Response Codes:
200- Success400- Bad Request - Invalid parameters404- Not Found - Session does not exist, does not belong to the authenticated account or is older than 7 days
Health Check
Check the API health status.
Endpoint: GET /v1/healthz
Authentication: None required
Response Example:
2026-02-08T11:34:54.3015450Z
Response Fields:
Example Request:
curl -X GET "https://verifeye-service-api-eu.realeyes.ai/v1/healthz"
Response Codes:
200- API is healthy
Common Response Codes
Swagger Documentation
Interactive API documentation is available via Swagger UI:
- EU: https://verifeye-service-api-eu.realeyes.ai/swagger/
- US: https://verifeye-service-api-us.realeyes.ai/swagger/
Last updated: 2026-06-23