ID Check
Verify ID
Verify ID document
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"
],
"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
Body
application/json
The session ID obtained from the /liveness/session endpoint
Response
Document verification completed
Show child attributes
Show child attributes
Overall decision
Available options:
Fake, Suspicious, Real Risk score where higher values indicate higher risk
Required range:
0 <= x <= 1See Risk Flags 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
⌘I
Verify ID document
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"
],
"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"
}