Verify ID
curl --request POST \
--url https://api.sandbox.verisoul.ai/liveness/verify-id \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"session_id": "00022d22-0592-4c83-8f55-0ec8f277c668"
}
'import requests
url = "https://api.sandbox.verisoul.ai/liveness/verify-id"
payload = { "session_id": "00022d22-0592-4c83-8f55-0ec8f277c668" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({session_id: '00022d22-0592-4c83-8f55-0ec8f277c668'})
};
fetch('https://api.sandbox.verisoul.ai/liveness/verify-id', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.verisoul.ai/liveness/verify-id",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'session_id' => '00022d22-0592-4c83-8f55-0ec8f277c668'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.verisoul.ai/liveness/verify-id"
payload := strings.NewReader("{\n \"session_id\": \"00022d22-0592-4c83-8f55-0ec8f277c668\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.verisoul.ai/liveness/verify-id")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"session_id\": \"00022d22-0592-4c83-8f55-0ec8f277c668\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.verisoul.ai/liveness/verify-id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"session_id\": \"00022d22-0592-4c83-8f55-0ec8f277c668\"\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"project_id": "00000000-0000-0000-0000-000000000001",
"session_id": "00022d22-0592-4c83-8f55-0ec8f277c668",
"account_id": "john-doe-1",
"referring_session_id": "623d80c5-5266-4787-a5b8-7cd578379de4",
"request_id": "d4b414e2-5c18-4e8e-9426-a3b83564d6f1",
"timestamp": "2025-05-04T22:11:51.645Z"
},
"decision": "Fake",
"risk_score": 1,
"risk_flags": [
"repeat_face",
"repeat_id"
],
"lists": [],
"rules": [],
"document_signals": {
"id_age": 25,
"face_age_estimate": "over21",
"id_face_match_score": 0.9,
"id_barcode_status": "barcode_requested_but_not_found",
"id_face_status": "likely_original_face",
"id_text_status": "likely_original_text",
"is_id_digital_spoof": "likely_physical_id",
"is_full_id_captured": "full_id_detected",
"id_validity": "likely_authentic_id"
},
"document_data": {
"template_info": {
"document_country_code": "US",
"document_state": "Texas",
"template_type": "driver_license"
},
"user_data": {
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "02/26/1997",
"date_of_expiration": "02/26/2034",
"date_of_issue": "03/19/2025",
"id_number": "1234567890",
"id_number2": "0987654321",
"address": {
"city": "Austin",
"country": "US",
"postal_code": "78701",
"state": "TX",
"street": "123 Main St"
}
}
},
"device_network_signals": {
"device_risk": 0.2429,
"proxy": 0,
"vpn": 0,
"datacenter": 0,
"tor": 0,
"spoofed_ip": 0,
"recent_fraud_ip": 0,
"device_network_mismatch": 0.0001,
"location_spoofing": 0.0001
},
"referring_session_signals": {
"impossible_travel": 0,
"ip_mismatch": 0,
"user_agent_mismatch": 0,
"device_timezone_mismatch": 0.2501,
"ip_timezone_mismatch": 0.0001
},
"photo_urls": {
"face": "https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/face.jpg",
"id_scan_back": "https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/id_scan_back.jpg",
"id_scan_front": "https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/id_scan_front.jpg"
},
"video_urls": [
"https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/session_video_1716500000000.webm?X-Goog-Signature=...",
"https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/session_video_1716500042000.webm?X-Goog-Signature=..."
],
"session_data": {
"true_country_code": "US",
"network": {
"ip_address": "107.209.253.92",
"service_provider": "AT&T Internet",
"connection_type": "isp"
},
"location": {
"continent": "NA",
"country_code": "US",
"state": "Texas",
"city": "Austin",
"zip_code": "78758",
"timezone": "America/Chicago",
"latitude": 30.3773,
"longitude": -97.71
},
"browser": {
"type": "Chrome",
"version": "135.0.0.0",
"language": "en-US",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36",
"timezone": "America/Chicago"
},
"device": {
"category": "desktop",
"type": "Mac",
"os": "macOS 10.15.7",
"cpu_cores": 16,
"memory": 8,
"gpu": "ANGLE (Apple, ANGLE Metal Renderer: Apple M4 Max, Unspecified Version)"
}
},
"matches": {
"num_accounts_linked": 1,
"accounts_linked": [
{
"account_id": "john-doe-2",
"match_types": [
"face",
"ip_address",
"document_number",
"document_name"
]
}
]
}
}{
"request_id": "8e3c7dd6-73e3-4e46-bbd2-a10c322f59d5",
"success": false,
"error": "session_not_found"
}Authorizations
API key authentication
Query Parameters
Set to true to omit personally identifiable data from the response: document_data, photo_urls, and video_urls are not returned. Every other field is unchanged. Any other value, or leaving it out, returns the full response. Applies to this response only; webhooks are not affected.
Body
The session ID obtained from the /liveness/session endpoint
Response
Document verification completed
Show child attributes
Show child attributes
Overall decision
Fake, Suspicious, Real Risk score where higher values indicate higher risk
0 <= x <= 1See Risk Flags for more information.
Names of the lists the enrolled account is currently a member of. Membership is evaluated fresh on every call, so list changes are reflected immediately. Empty array for sessions not yet linked to an account. See Rules, Lists, and Verifications for more information.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Signed URL to the session video
Show child attributes
Show child attributes
Show child attributes
Show child attributes
curl --request POST \
--url https://api.sandbox.verisoul.ai/liveness/verify-id \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"session_id": "00022d22-0592-4c83-8f55-0ec8f277c668"
}
'import requests
url = "https://api.sandbox.verisoul.ai/liveness/verify-id"
payload = { "session_id": "00022d22-0592-4c83-8f55-0ec8f277c668" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({session_id: '00022d22-0592-4c83-8f55-0ec8f277c668'})
};
fetch('https://api.sandbox.verisoul.ai/liveness/verify-id', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.verisoul.ai/liveness/verify-id",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'session_id' => '00022d22-0592-4c83-8f55-0ec8f277c668'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.verisoul.ai/liveness/verify-id"
payload := strings.NewReader("{\n \"session_id\": \"00022d22-0592-4c83-8f55-0ec8f277c668\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.verisoul.ai/liveness/verify-id")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"session_id\": \"00022d22-0592-4c83-8f55-0ec8f277c668\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.verisoul.ai/liveness/verify-id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"session_id\": \"00022d22-0592-4c83-8f55-0ec8f277c668\"\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"project_id": "00000000-0000-0000-0000-000000000001",
"session_id": "00022d22-0592-4c83-8f55-0ec8f277c668",
"account_id": "john-doe-1",
"referring_session_id": "623d80c5-5266-4787-a5b8-7cd578379de4",
"request_id": "d4b414e2-5c18-4e8e-9426-a3b83564d6f1",
"timestamp": "2025-05-04T22:11:51.645Z"
},
"decision": "Fake",
"risk_score": 1,
"risk_flags": [
"repeat_face",
"repeat_id"
],
"lists": [],
"rules": [],
"document_signals": {
"id_age": 25,
"face_age_estimate": "over21",
"id_face_match_score": 0.9,
"id_barcode_status": "barcode_requested_but_not_found",
"id_face_status": "likely_original_face",
"id_text_status": "likely_original_text",
"is_id_digital_spoof": "likely_physical_id",
"is_full_id_captured": "full_id_detected",
"id_validity": "likely_authentic_id"
},
"document_data": {
"template_info": {
"document_country_code": "US",
"document_state": "Texas",
"template_type": "driver_license"
},
"user_data": {
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "02/26/1997",
"date_of_expiration": "02/26/2034",
"date_of_issue": "03/19/2025",
"id_number": "1234567890",
"id_number2": "0987654321",
"address": {
"city": "Austin",
"country": "US",
"postal_code": "78701",
"state": "TX",
"street": "123 Main St"
}
}
},
"device_network_signals": {
"device_risk": 0.2429,
"proxy": 0,
"vpn": 0,
"datacenter": 0,
"tor": 0,
"spoofed_ip": 0,
"recent_fraud_ip": 0,
"device_network_mismatch": 0.0001,
"location_spoofing": 0.0001
},
"referring_session_signals": {
"impossible_travel": 0,
"ip_mismatch": 0,
"user_agent_mismatch": 0,
"device_timezone_mismatch": 0.2501,
"ip_timezone_mismatch": 0.0001
},
"photo_urls": {
"face": "https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/face.jpg",
"id_scan_back": "https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/id_scan_back.jpg",
"id_scan_front": "https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/id_scan_front.jpg"
},
"video_urls": [
"https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/session_video_1716500000000.webm?X-Goog-Signature=...",
"https://storage.googleapis.com/facematch-sandbox/00022d22-0592-4c83-8f55-0ec8f277c668/session_video_1716500042000.webm?X-Goog-Signature=..."
],
"session_data": {
"true_country_code": "US",
"network": {
"ip_address": "107.209.253.92",
"service_provider": "AT&T Internet",
"connection_type": "isp"
},
"location": {
"continent": "NA",
"country_code": "US",
"state": "Texas",
"city": "Austin",
"zip_code": "78758",
"timezone": "America/Chicago",
"latitude": 30.3773,
"longitude": -97.71
},
"browser": {
"type": "Chrome",
"version": "135.0.0.0",
"language": "en-US",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36",
"timezone": "America/Chicago"
},
"device": {
"category": "desktop",
"type": "Mac",
"os": "macOS 10.15.7",
"cpu_cores": 16,
"memory": 8,
"gpu": "ANGLE (Apple, ANGLE Metal Renderer: Apple M4 Max, Unspecified Version)"
}
},
"matches": {
"num_accounts_linked": 1,
"accounts_linked": [
{
"account_id": "john-doe-2",
"match_types": [
"face",
"ip_address",
"document_number",
"document_name"
]
}
]
}
}{
"request_id": "8e3c7dd6-73e3-4e46-bbd2-a10c322f59d5",
"success": false,
"error": "session_not_found"
}