Philippines Document Details Extraction
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form documentImage='@example-file'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough"
files = { "documentImage": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('documentImage', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough', 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/document-details-extraction-passthrough",
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=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\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/philippines/document-details-extraction-passthrough"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\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/philippines/document-details-extraction-passthrough")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough")
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=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Philippines document details extraction processed successfully",
"data": {
"outcome": "extracted",
"fields": {
"documentType": "driving_license",
"documentNumber": {
"value": "N02-14-004567",
"confidence": "98.95%"
},
"fullName": {
"value": "DELA CRUZ, JUAN MIGUEL",
"confidence": "98.20%"
},
"firstName": {
"value": "JUAN",
"confidence": "98.60%"
},
"middleName": {
"value": "MIGUEL",
"confidence": "97.85%"
},
"lastName": {
"value": "DELA CRUZ",
"confidence": "98.44%"
},
"suffix": null,
"dateOfBirth": {
"value": "1991-03-08",
"confidence": "98.70%"
},
"gender": {
"value": "M",
"confidence": "99.25%"
},
"nationality": {
"value": "PHL",
"confidence": "99.10%"
},
"address": {
"value": "123 MABINI ST, BARANGAY SAN ROQUE, QUEZON CITY",
"confidence": "95.30%"
},
"placeOfBirth": null,
"expiryDate": {
"value": "2027-03-08",
"confidence": "98.15%"
},
"issueDate": {
"value": "2022-03-08",
"confidence": "98.15%"
},
"issuingAuthority": {
"value": "LAND TRANSPORTATION OFFICE",
"confidence": "99.05%"
},
"licenseCodes": {
"value": "A,B",
"confidence": "97.60%"
},
"agencyCode": {
"value": "N04",
"confidence": "98.30%"
},
"bloodType": {
"value": "O+",
"confidence": "96.20%"
},
"eyesColor": {
"value": "BLACK",
"confidence": "97.05%"
},
"weightKg": {
"value": "68",
"confidence": "97.80%"
},
"heightM": {
"value": "1.70",
"confidence": "97.45%"
},
"conditions": {
"value": "NONE",
"confidence": "98.00%"
},
"photo": null,
"signature": null
},
"missingFields": []
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"transactionId": "6fb0d3a7-2e94-4c15-83bd-c470a1f9e582",
"verificationType": "philippines_document_details_extraction",
"metadata": {
"clientReference": "PH-KYC-4471"
},
"createdAt": "2026-09-01T05:41:12.000000Z"
}Document OCR
Philippines Document Details Extraction
Extract structured fields from a supported Philippine ID document without creating a Trust Validation.
POST
/
api
/
v3
/
verifications
/
philippines
/
document-details-extraction-passthrough
Philippines Document Details Extraction
curl --request POST \
--url https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form documentImage='@example-file'import requests
url = "https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough"
files = { "documentImage": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('documentImage', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough', 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/document-details-extraction-passthrough",
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=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\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/philippines/document-details-extraction-passthrough"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\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/philippines/document-details-extraction-passthrough")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment-subdomain}.idmetagroup.com/api/v3/verifications/philippines/document-details-extraction-passthrough")
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=\"documentImage\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Philippines document details extraction processed successfully",
"data": {
"outcome": "extracted",
"fields": {
"documentType": "driving_license",
"documentNumber": {
"value": "N02-14-004567",
"confidence": "98.95%"
},
"fullName": {
"value": "DELA CRUZ, JUAN MIGUEL",
"confidence": "98.20%"
},
"firstName": {
"value": "JUAN",
"confidence": "98.60%"
},
"middleName": {
"value": "MIGUEL",
"confidence": "97.85%"
},
"lastName": {
"value": "DELA CRUZ",
"confidence": "98.44%"
},
"suffix": null,
"dateOfBirth": {
"value": "1991-03-08",
"confidence": "98.70%"
},
"gender": {
"value": "M",
"confidence": "99.25%"
},
"nationality": {
"value": "PHL",
"confidence": "99.10%"
},
"address": {
"value": "123 MABINI ST, BARANGAY SAN ROQUE, QUEZON CITY",
"confidence": "95.30%"
},
"placeOfBirth": null,
"expiryDate": {
"value": "2027-03-08",
"confidence": "98.15%"
},
"issueDate": {
"value": "2022-03-08",
"confidence": "98.15%"
},
"issuingAuthority": {
"value": "LAND TRANSPORTATION OFFICE",
"confidence": "99.05%"
},
"licenseCodes": {
"value": "A,B",
"confidence": "97.60%"
},
"agencyCode": {
"value": "N04",
"confidence": "98.30%"
},
"bloodType": {
"value": "O+",
"confidence": "96.20%"
},
"eyesColor": {
"value": "BLACK",
"confidence": "97.05%"
},
"weightKg": {
"value": "68",
"confidence": "97.80%"
},
"heightM": {
"value": "1.70",
"confidence": "97.45%"
},
"conditions": {
"value": "NONE",
"confidence": "98.00%"
},
"photo": null,
"signature": null
},
"missingFields": []
},
"verificationStatus": "VERIFIED",
"verificationStatusCode": 3,
"transactionId": "6fb0d3a7-2e94-4c15-83bd-c470a1f9e582",
"verificationType": "philippines_document_details_extraction",
"metadata": {
"clientReference": "PH-KYC-4471"
},
"createdAt": "2026-09-01T05:41:12.000000Z"
}This endpoint classifies across 13 Philippine document types.
The document names above match those used in the supported documents reference for the Philippines.
If the uploaded image is not one of these, the response returns
data.fields.documentType names the card that was found; it is returned bare (no confidence wrapper) because it is a classification, not transcribed text. Card-specific fields are promoted to the top level of data.fields, so the field set returned depends on which document type was detected.
Recognised document types
documentType | Document |
|---|---|
alien_id | Alien ID |
driving_license | Driver’s License |
health_insurance | Health Insurance Card |
nbi_clearance | NBI Clearance |
passport | Paper Passport |
philsys_id | Identity Card (PhilSys) |
postal_id | Postal ID |
prc | Professional ID (PRC) |
sss | Social Security Card |
tax | Tax ID |
umid | Multipurpose ID (UMID) |
voter_id | Voter ID |
work_permit | Work Permit |
data.outcome: "rejected" with documentType: null and errorReason: "wrong_document_type".Authorizations
Use your API token as a Bearer token in the Authorization header.
Headers
Example:
"Bearer {your_api_token}"
Body
multipart/form-data
Response
The document was processed. data.fields.documentType names the card type that was classified (one of: alien_id, driving_license, health_insurance, nbi_clearance, passport, philsys_id, postal_id, prc, sss, tax, umid, voter_id, work_permit), or is null when the document was not recognised. Check data.outcome and verificationStatus to determine the result.
Show child attributes
Show child attributes

