PH Philsys (QR Scan)
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"qr_data": "{your scanned PhilSys QR value}",
"face_liveness_session_id": "{liveness session id retrieved from the IDmeta Liveness SDK}",
"trustFlowId": 0,
"trustValidationId": "{your_created_trust_validation_id}"
}
'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check"
payload = {
"qr_data": "{your scanned PhilSys QR value}",
"face_liveness_session_id": "{liveness session id retrieved from the IDmeta Liveness SDK}",
"trustFlowId": 0,
"trustValidationId": "{your_created_trust_validation_id}"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
qr_data: '{your scanned PhilSys QR value}',
face_liveness_session_id: '{liveness session id retrieved from the IDmeta Liveness SDK}',
trustFlowId: 0,
trustValidationId: '{your_created_trust_validation_id}'
})
};
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check', 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/philippines/philsys-check",
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([
'qr_data' => '{your scanned PhilSys QR value}',
'face_liveness_session_id' => '{liveness session id retrieved from the IDmeta Liveness SDK}',
'trustFlowId' => 0,
'trustValidationId' => '{your_created_trust_validation_id}'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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/philippines/philsys-check"
payload := strings.NewReader("{\n \"qr_data\": \"{your scanned PhilSys QR value}\",\n \"face_liveness_session_id\": \"{liveness session id retrieved from the IDmeta Liveness SDK}\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_created_trust_validation_id}\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"qr_data\": \"{your scanned PhilSys QR value}\",\n \"face_liveness_session_id\": \"{liveness session id retrieved from the IDmeta Liveness SDK}\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_created_trust_validation_id}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"qr_data\": \"{your scanned PhilSys QR value}\",\n \"face_liveness_session_id\": \"{liveness session id retrieved from the IDmeta Liveness SDK}\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_created_trust_validation_id}\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "PhilSys Check processed successfully",
"data": {
"status": true,
"response": "{\"data\":{\"full_name\":\"JUAN DELA CRUZ\",\"face_url\":\"https://storage.sample.com/face.jpeg\"},\"meta\":{\"tier_level\":\"Tier II\",\"result_grade\":1}}",
"isValid": true,
"faceUrl": "https://storage.sample.com/face.jpeg",
"fullName": "JUAN DELA CRUZ",
"firstName": "JUAN",
"middleName": "ALBAY",
"lastName": "DELA CRUZ",
"type": "PhilID",
"DateIssued": "2023-08-29",
"Issuer": "PSA",
"PCN": "1234-1234-1234-1234",
"POB": "City of Legazpi, Albay",
"DOB": "1982-05-05",
"sex": "Male",
"fName": "JUAN",
"mName": "ALBAY",
"lName": "DELA CRUZ",
"Suffix": null,
"image": "data:image/webp;base64,{base64_image}"
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"trustFlowId": 736,
"trustValidationId": "a0160d0f-d0c3-4f58-b462-3b3e36c4ffff",
"verificationType": "scan_qr",
"metadata": null,
"createdAt": "2026-09-21 08:00:00+0000"
}Philsys Check
PH Philsys (QR Scan)
Verify Philippine PhilSys records using QR scan data. A successful combination of PhilSys QR data and face will return a full profile of the person including their full name, registered address, portrait image, and other details.
POST
/
api
/
v3
/
verifications
/
philippines
/
philsys-check
PH Philsys (QR Scan)
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"qr_data": "{your scanned PhilSys QR value}",
"face_liveness_session_id": "{liveness session id retrieved from the IDmeta Liveness SDK}",
"trustFlowId": 0,
"trustValidationId": "{your_created_trust_validation_id}"
}
'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check"
payload = {
"qr_data": "{your scanned PhilSys QR value}",
"face_liveness_session_id": "{liveness session id retrieved from the IDmeta Liveness SDK}",
"trustFlowId": 0,
"trustValidationId": "{your_created_trust_validation_id}"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
qr_data: '{your scanned PhilSys QR value}',
face_liveness_session_id: '{liveness session id retrieved from the IDmeta Liveness SDK}',
trustFlowId: 0,
trustValidationId: '{your_created_trust_validation_id}'
})
};
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check', 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/philippines/philsys-check",
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([
'qr_data' => '{your scanned PhilSys QR value}',
'face_liveness_session_id' => '{liveness session id retrieved from the IDmeta Liveness SDK}',
'trustFlowId' => 0,
'trustValidationId' => '{your_created_trust_validation_id}'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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/philippines/philsys-check"
payload := strings.NewReader("{\n \"qr_data\": \"{your scanned PhilSys QR value}\",\n \"face_liveness_session_id\": \"{liveness session id retrieved from the IDmeta Liveness SDK}\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_created_trust_validation_id}\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"qr_data\": \"{your scanned PhilSys QR value}\",\n \"face_liveness_session_id\": \"{liveness session id retrieved from the IDmeta Liveness SDK}\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_created_trust_validation_id}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/philsys-check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"qr_data\": \"{your scanned PhilSys QR value}\",\n \"face_liveness_session_id\": \"{liveness session id retrieved from the IDmeta Liveness SDK}\",\n \"trustFlowId\": 0,\n \"trustValidationId\": \"{your_created_trust_validation_id}\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "PhilSys Check processed successfully",
"data": {
"status": true,
"response": "{\"data\":{\"full_name\":\"JUAN DELA CRUZ\",\"face_url\":\"https://storage.sample.com/face.jpeg\"},\"meta\":{\"tier_level\":\"Tier II\",\"result_grade\":1}}",
"isValid": true,
"faceUrl": "https://storage.sample.com/face.jpeg",
"fullName": "JUAN DELA CRUZ",
"firstName": "JUAN",
"middleName": "ALBAY",
"lastName": "DELA CRUZ",
"type": "PhilID",
"DateIssued": "2023-08-29",
"Issuer": "PSA",
"PCN": "1234-1234-1234-1234",
"POB": "City of Legazpi, Albay",
"DOB": "1982-05-05",
"sex": "Male",
"fName": "JUAN",
"mName": "ALBAY",
"lName": "DELA CRUZ",
"Suffix": null,
"image": "data:image/webp;base64,{base64_image}"
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"trustFlowId": 736,
"trustValidationId": "a0160d0f-d0c3-4f58-b462-3b3e36c4ffff",
"verificationType": "scan_qr",
"metadata": null,
"createdAt": "2026-09-21 08:00:00+0000"
}Looking to integrate Philsys Check via API?
PhilSys Check is a two-step process: capture face liveness, then call the
verification API. Follow our integration guide for setup and workflow details.
Authorizations
Use Bearer {your_api_token} in the Authorization header.
Body
application/json
PhilSys QR value for verification.
Liveness session ID retrieved from the IDmeta Liveness SDK.
Identifier of the TrustFlow used for this verification.
Unique ID of the Trust Validation being verified.
Optional active PhilSys relying-party identifier configured for the company.
Maximum string length:
20Response
PhilSys QR and face-liveness check processed successfully

