Document Verification V2
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form trustFlowId=0 \
--form 'trustValidationId={your_trust_validation_id}' \
--form imageFrontSide='@example-file' \
--form imageBackSide='@example-file'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2"
files = {
"imageFrontSide": ("example-file", open("example-file", "rb")),
"imageBackSide": ("example-file", open("example-file", "rb"))
}
payload = {
"trustFlowId": "0",
"trustValidationId": "{your_trust_validation_id}"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('trustFlowId', '0');
form.append('trustValidationId', '{your_trust_validation_id}');
form.append('imageFrontSide', '@/path/to/front.jpg');
form.append('imageBackSide', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2', 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://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Document verification processed successfully",
"data": {
"verificationStatuses": [
{
"verificationType": "DocumentTypeCheck",
"verificationStatus": "Passed"
},
{
"verificationType": "DocumentSecurityCheck",
"verificationStatus": "Passed"
},
{
"verificationType": "DocumentExpirationCheck",
"verificationStatus": "Not Performed"
},
{
"verificationType": "DocumentQualityCheck",
"verificationStatus": "Passed"
},
{
"verificationType": "DocumentTextExtraction",
"verificationStatus": "Passed"
}
],
"extractedData": {
"images": [
{
"imageTypeName": "Portrait",
"imageType": "Portrait",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Portrait-sample.jpeg"
},
{
"imageTypeName": "Barcode",
"imageType": "Barcode",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Barcode-sample-1.jpeg"
},
{
"imageTypeName": "Barcode",
"imageType": "Barcode",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Barcode-sample-2.jpeg"
},
{
"imageTypeName": "Document Front Side",
"imageType": "DocumentFrontSide",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Document-front-side-sample.jpeg"
},
{
"imageTypeName": "Document Back Side",
"imageType": "DocumentBackSide",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Document-back-side-sample.jpeg"
},
{
"imageTypeName": "Ghost Portrait",
"imageType": "GhostPortrait",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Ghost-portrait-sample.jpeg"
}
],
"textFields": [
{
"fieldName": "Full Name",
"fieldType": "FullName",
"value": "JANE ALEX SAMPLE",
"source": "BARCODE"
},
{
"fieldName": "Full Name",
"fieldType": "FullName",
"value": "JANE ALEX SAMPLE",
"source": "VISUAL"
},
{
"fieldName": "Surname",
"fieldType": "Surname",
"value": "SAMPLE",
"source": "BARCODE"
},
{
"fieldName": "Surname",
"fieldType": "Surname",
"value": "SAMPLE",
"source": "VISUAL"
},
{
"fieldName": "Surname (English (Philippines))",
"fieldType": "SurnameEnglishPhilippines",
"value": "SAMPLE",
"source": "BARCODE"
},
{
"fieldName": "Surname (English (Philippines))",
"fieldType": "SurnameEnglishPhilippines",
"value": "SAMPLE",
"source": "VISUAL"
},
{
"fieldName": "Given Names",
"fieldType": "GivenNames",
"value": "JANE",
"source": "BARCODE"
},
{
"fieldName": "Given Names",
"fieldType": "GivenNames",
"value": "JANE",
"source": "VISUAL"
},
{
"fieldName": "Given Names (English (Philippines))",
"fieldType": "GivenNamesEnglishPhilippines",
"value": "JANE",
"source": "BARCODE"
},
{
"fieldName": "Given Names (English (Philippines))",
"fieldType": "GivenNamesEnglishPhilippines",
"value": "JANE",
"source": "VISUAL"
},
{
"fieldName": "Date of Birth",
"fieldType": "DateOfBirth",
"value": "1990-01-15",
"source": "BARCODE"
},
{
"fieldName": "Date of Birth",
"fieldType": "DateOfBirth",
"value": "1990-01-15",
"source": "VISUAL"
},
{
"fieldName": "Document Number",
"fieldType": "DocumentNumber",
"value": "1234567890123456",
"source": "BARCODE"
},
{
"fieldName": "Document Number",
"fieldType": "DocumentNumber",
"value": "1234567890123456",
"source": "VISUAL"
},
{
"fieldName": "Issuing State Name",
"fieldType": "IssuingStateName",
"value": "Philippines"
},
{
"fieldName": "Date of Issue",
"fieldType": "DateOfIssue",
"value": "2023-08-29",
"source": "BARCODE"
},
{
"fieldName": "Date of Issue",
"fieldType": "DateOfIssue",
"value": "2023-08-29",
"source": "VISUAL"
},
{
"fieldName": "Sex",
"fieldType": "Sex",
"value": "Female",
"source": "BARCODE"
},
{
"fieldName": "Sex",
"fieldType": "Sex",
"value": "F",
"source": "VISUAL"
},
{
"fieldName": "Age",
"fieldType": "Age",
"value": "36",
"source": "BARCODE"
},
{
"fieldName": "Age",
"fieldType": "Age",
"value": "36",
"source": "VISUAL"
},
{
"fieldName": "Address (English (Philippines))",
"fieldType": "AddressEnglishPhilippines",
"value": "123 SAMPLE STREET, SAMPLE BARANGAY, SAMPLE CITY, NCR"
},
{
"fieldName": "Issuing State Code",
"fieldType": "IssuingStateCode",
"value": "PHL"
},
{
"fieldName": "Authority",
"fieldType": "Authority",
"value": "PSA"
},
{
"fieldName": "Middle Name",
"fieldType": "MiddleName",
"value": "ALEX",
"source": "BARCODE"
},
{
"fieldName": "Middle Name",
"fieldType": "MiddleName",
"value": "ALEX",
"source": "VISUAL"
},
{
"fieldName": "Place of Birth",
"fieldType": "PlaceOfBirth",
"value": "Sample City, Sample Province",
"source": "BARCODE"
},
{
"fieldName": "Place of Birth",
"fieldType": "PlaceOfBirth",
"value": "SAMPLE CITY, SAMPLE PROVINCE",
"source": "VISUAL"
},
{
"fieldName": "Age at Issue",
"fieldType": "AgeAtIssue",
"value": "33",
"source": "BARCODE"
},
{
"fieldName": "Age at Issue",
"fieldType": "AgeAtIssue",
"value": "33",
"source": "VISUAL"
},
{
"fieldName": "Years Since Issue",
"fieldType": "YearsSinceIssue",
"value": "2",
"source": "BARCODE"
},
{
"fieldName": "Years Since Issue",
"fieldType": "YearsSinceIssue",
"value": "2",
"source": "VISUAL"
},
{
"fieldName": "Middle Name (English (Philippines))",
"fieldType": "MiddleNameEnglishPhilippines",
"value": "ALEX",
"source": "BARCODE"
},
{
"fieldName": "Middle Name (English (Philippines))",
"fieldType": "MiddleNameEnglishPhilippines",
"value": "ALEX",
"source": "VISUAL"
},
{
"fieldName": "Marital Status",
"fieldType": "MaritalStatus",
"value": "SINGLE"
},
{
"fieldName": "Blood Group",
"fieldType": "BloodGroup",
"value": "O+"
},
{
"fieldName": "Other",
"fieldType": "Other",
"value": "SAMPLECODE01"
}
],
"dateFormat": "yyyy-MM-dd",
"barcodeData": {
"textFields": [
{
"barcodeData": "U0FNUExFQkFSQ09ERTE=",
"barcodeType": 1
},
{
"barcodeData": "eyJzYW1wbGUiOiJ0cnVlIn0=",
"barcodeType": 14
}
]
}
},
"documentType": {
"documentName": "Philippines - Id Card (2020) Side B",
"country": "Philippines",
"documentYear": "2020",
"documentType": "identity_card",
"filteredCountry": null,
"filteredDocumentTypes": null,
"documentTypeMatchesFilter": null
},
"imageQuality": [
{
"imageQualityCheckType": "ImageFocus",
"result": "Passed"
},
{
"imageQualityCheckType": "ImageGlares",
"result": "Failed"
},
{
"imageQualityCheckType": "Potraits",
"result": "Passed"
},
{
"imageQualityCheckType": "Bounds",
"result": "Passed"
},
{
"imageQualityCheckType": "Perspective",
"result": "Passed"
},
{
"imageQualityCheckType": "ImageResolution",
"result": "Passed"
},
{
"imageQualityCheckType": "ImageColorness",
"result": "Passed"
}
],
"securityChecks": [
{
"securityCheckType": "DocumentImagePatterns",
"result": "Passed"
},
{
"securityCheckType": "PhotoForgery",
"result": "Passed"
},
{
"securityCheckType": "HumanFacePhoto",
"result": "Passed"
},
{
"securityCheckType": "LivenessCheck",
"result": "Passed"
},
{
"securityCheckType": "BlackAndWhiteCopyCheck",
"result": "Passed"
},
{
"securityCheckType": "Occlusion",
"result": "Passed"
}
],
"timeToVerify": 2315
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"trustFlowId": 0,
"trustValidationId": "00000000-0000-4000-8000-000000000001",
"verificationType": "document_verification_v2",
"metadata": null,
"createdAt": "2026-08-05 13:24:13+0000"
}Compliance
Document Verification V2
Verify identity documents with OCR extraction, cropped images, and security checks.
POST
/
api
/
v3
/
verifications
/
document-verification-v2
Document Verification V2
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form trustFlowId=0 \
--form 'trustValidationId={your_trust_validation_id}' \
--form imageFrontSide='@example-file' \
--form imageBackSide='@example-file'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2"
files = {
"imageFrontSide": ("example-file", open("example-file", "rb")),
"imageBackSide": ("example-file", open("example-file", "rb"))
}
payload = {
"trustFlowId": "0",
"trustValidationId": "{your_trust_validation_id}"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('trustFlowId', '0');
form.append('trustValidationId', '{your_trust_validation_id}');
form.append('imageFrontSide', '@/path/to/front.jpg');
form.append('imageBackSide', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2', 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://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/document-verification-v2")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustFlowId\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"trustValidationId\"\r\n\r\n{your_trust_validation_id}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageFrontSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n@/path/to/front.jpg\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"imageBackSide\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Document verification processed successfully",
"data": {
"verificationStatuses": [
{
"verificationType": "DocumentTypeCheck",
"verificationStatus": "Passed"
},
{
"verificationType": "DocumentSecurityCheck",
"verificationStatus": "Passed"
},
{
"verificationType": "DocumentExpirationCheck",
"verificationStatus": "Not Performed"
},
{
"verificationType": "DocumentQualityCheck",
"verificationStatus": "Passed"
},
{
"verificationType": "DocumentTextExtraction",
"verificationStatus": "Passed"
}
],
"extractedData": {
"images": [
{
"imageTypeName": "Portrait",
"imageType": "Portrait",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Portrait-sample.jpeg"
},
{
"imageTypeName": "Barcode",
"imageType": "Barcode",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Barcode-sample-1.jpeg"
},
{
"imageTypeName": "Barcode",
"imageType": "Barcode",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Barcode-sample-2.jpeg"
},
{
"imageTypeName": "Document Front Side",
"imageType": "DocumentFrontSide",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Document-front-side-sample.jpeg"
},
{
"imageTypeName": "Document Back Side",
"imageType": "DocumentBackSide",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Document-back-side-sample.jpeg"
},
{
"imageTypeName": "Ghost Portrait",
"imageType": "GhostPortrait",
"imageURL": "https://storage.example.com/sample/00000000-0000-4000-8000-000000000001/Ghost-portrait-sample.jpeg"
}
],
"textFields": [
{
"fieldName": "Full Name",
"fieldType": "FullName",
"value": "JANE ALEX SAMPLE",
"source": "BARCODE"
},
{
"fieldName": "Full Name",
"fieldType": "FullName",
"value": "JANE ALEX SAMPLE",
"source": "VISUAL"
},
{
"fieldName": "Surname",
"fieldType": "Surname",
"value": "SAMPLE",
"source": "BARCODE"
},
{
"fieldName": "Surname",
"fieldType": "Surname",
"value": "SAMPLE",
"source": "VISUAL"
},
{
"fieldName": "Surname (English (Philippines))",
"fieldType": "SurnameEnglishPhilippines",
"value": "SAMPLE",
"source": "BARCODE"
},
{
"fieldName": "Surname (English (Philippines))",
"fieldType": "SurnameEnglishPhilippines",
"value": "SAMPLE",
"source": "VISUAL"
},
{
"fieldName": "Given Names",
"fieldType": "GivenNames",
"value": "JANE",
"source": "BARCODE"
},
{
"fieldName": "Given Names",
"fieldType": "GivenNames",
"value": "JANE",
"source": "VISUAL"
},
{
"fieldName": "Given Names (English (Philippines))",
"fieldType": "GivenNamesEnglishPhilippines",
"value": "JANE",
"source": "BARCODE"
},
{
"fieldName": "Given Names (English (Philippines))",
"fieldType": "GivenNamesEnglishPhilippines",
"value": "JANE",
"source": "VISUAL"
},
{
"fieldName": "Date of Birth",
"fieldType": "DateOfBirth",
"value": "1990-01-15",
"source": "BARCODE"
},
{
"fieldName": "Date of Birth",
"fieldType": "DateOfBirth",
"value": "1990-01-15",
"source": "VISUAL"
},
{
"fieldName": "Document Number",
"fieldType": "DocumentNumber",
"value": "1234567890123456",
"source": "BARCODE"
},
{
"fieldName": "Document Number",
"fieldType": "DocumentNumber",
"value": "1234567890123456",
"source": "VISUAL"
},
{
"fieldName": "Issuing State Name",
"fieldType": "IssuingStateName",
"value": "Philippines"
},
{
"fieldName": "Date of Issue",
"fieldType": "DateOfIssue",
"value": "2023-08-29",
"source": "BARCODE"
},
{
"fieldName": "Date of Issue",
"fieldType": "DateOfIssue",
"value": "2023-08-29",
"source": "VISUAL"
},
{
"fieldName": "Sex",
"fieldType": "Sex",
"value": "Female",
"source": "BARCODE"
},
{
"fieldName": "Sex",
"fieldType": "Sex",
"value": "F",
"source": "VISUAL"
},
{
"fieldName": "Age",
"fieldType": "Age",
"value": "36",
"source": "BARCODE"
},
{
"fieldName": "Age",
"fieldType": "Age",
"value": "36",
"source": "VISUAL"
},
{
"fieldName": "Address (English (Philippines))",
"fieldType": "AddressEnglishPhilippines",
"value": "123 SAMPLE STREET, SAMPLE BARANGAY, SAMPLE CITY, NCR"
},
{
"fieldName": "Issuing State Code",
"fieldType": "IssuingStateCode",
"value": "PHL"
},
{
"fieldName": "Authority",
"fieldType": "Authority",
"value": "PSA"
},
{
"fieldName": "Middle Name",
"fieldType": "MiddleName",
"value": "ALEX",
"source": "BARCODE"
},
{
"fieldName": "Middle Name",
"fieldType": "MiddleName",
"value": "ALEX",
"source": "VISUAL"
},
{
"fieldName": "Place of Birth",
"fieldType": "PlaceOfBirth",
"value": "Sample City, Sample Province",
"source": "BARCODE"
},
{
"fieldName": "Place of Birth",
"fieldType": "PlaceOfBirth",
"value": "SAMPLE CITY, SAMPLE PROVINCE",
"source": "VISUAL"
},
{
"fieldName": "Age at Issue",
"fieldType": "AgeAtIssue",
"value": "33",
"source": "BARCODE"
},
{
"fieldName": "Age at Issue",
"fieldType": "AgeAtIssue",
"value": "33",
"source": "VISUAL"
},
{
"fieldName": "Years Since Issue",
"fieldType": "YearsSinceIssue",
"value": "2",
"source": "BARCODE"
},
{
"fieldName": "Years Since Issue",
"fieldType": "YearsSinceIssue",
"value": "2",
"source": "VISUAL"
},
{
"fieldName": "Middle Name (English (Philippines))",
"fieldType": "MiddleNameEnglishPhilippines",
"value": "ALEX",
"source": "BARCODE"
},
{
"fieldName": "Middle Name (English (Philippines))",
"fieldType": "MiddleNameEnglishPhilippines",
"value": "ALEX",
"source": "VISUAL"
},
{
"fieldName": "Marital Status",
"fieldType": "MaritalStatus",
"value": "SINGLE"
},
{
"fieldName": "Blood Group",
"fieldType": "BloodGroup",
"value": "O+"
},
{
"fieldName": "Other",
"fieldType": "Other",
"value": "SAMPLECODE01"
}
],
"dateFormat": "yyyy-MM-dd",
"barcodeData": {
"textFields": [
{
"barcodeData": "U0FNUExFQkFSQ09ERTE=",
"barcodeType": 1
},
{
"barcodeData": "eyJzYW1wbGUiOiJ0cnVlIn0=",
"barcodeType": 14
}
]
}
},
"documentType": {
"documentName": "Philippines - Id Card (2020) Side B",
"country": "Philippines",
"documentYear": "2020",
"documentType": "identity_card",
"filteredCountry": null,
"filteredDocumentTypes": null,
"documentTypeMatchesFilter": null
},
"imageQuality": [
{
"imageQualityCheckType": "ImageFocus",
"result": "Passed"
},
{
"imageQualityCheckType": "ImageGlares",
"result": "Failed"
},
{
"imageQualityCheckType": "Potraits",
"result": "Passed"
},
{
"imageQualityCheckType": "Bounds",
"result": "Passed"
},
{
"imageQualityCheckType": "Perspective",
"result": "Passed"
},
{
"imageQualityCheckType": "ImageResolution",
"result": "Passed"
},
{
"imageQualityCheckType": "ImageColorness",
"result": "Passed"
}
],
"securityChecks": [
{
"securityCheckType": "DocumentImagePatterns",
"result": "Passed"
},
{
"securityCheckType": "PhotoForgery",
"result": "Passed"
},
{
"securityCheckType": "HumanFacePhoto",
"result": "Passed"
},
{
"securityCheckType": "LivenessCheck",
"result": "Passed"
},
{
"securityCheckType": "BlackAndWhiteCopyCheck",
"result": "Passed"
},
{
"securityCheckType": "Occlusion",
"result": "Passed"
}
],
"timeToVerify": 2315
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"trustFlowId": 0,
"trustValidationId": "00000000-0000-4000-8000-000000000001",
"verificationType": "document_verification_v2",
"metadata": null,
"createdAt": "2026-08-05 13:24:13+0000"
}Document Verification V2 evaluates the uploaded document images and returns structured results in the response
data object. Use these fields to understand both what was extracted from the document and why the overall verificationStatus was assigned.
Verification statuses
verificationStatuses gives a high-level result for each major stage. Each item includes a verificationType and a verificationStatus of Passed, Failed, or Not Performed (when the check does not apply or could not run):
| Check | What it evaluates |
|---|---|
DocumentTypeCheck | Whether the document type and issuing country were recognized |
DocumentSecurityCheck | Whether authenticity and security signals passed |
DocumentExpirationCheck | Whether the document is within its validity period |
DocumentQualityCheck | Whether the capture meets quality requirements |
DocumentTextExtraction | Whether OCR successfully extracted text from the document |
Image quality
imageQuality reports capture-level checks so you can tell if a failure came from a poor photo rather than a fraudulent document. Typical checks include focus, glare, portrait presence, document bounds, perspective, resolution, and colorness.
Security checks
securityChecks reports authenticity and fraud signals, including:
- Document image patterns
- Photo forgery
- Human face in the portrait
- Document liveness
- Black-and-white copy detection
- Occlusion (blocked or covered areas)
Extracted data and document type
extractedData returns OCR text fields (often from both visual and barcode sources), cropped images such as the portrait and document sides, and barcode payloads when available. documentType identifies the recognized document name, country, year, and type (for example, identity_card).Authorizations
Use Bearer {your_api_token} in the Authorization header.
Headers
Body
multipart/form-data
Front-side document image file (JPG, JPEG, or PNG).
Identifier used to categorize or group requests for tracking or reporting.
A unique ID used to identify your verification request.
Back-side document image file (JPG, JPEG, or PNG). Required when the document type has a back side.
Response
200 - application/json
Document verification processed successfully
⌘I

