200 with isValid set to false.
Values are case-sensitive. transactionId and createdAt are generated per request, and metadata is echoed back from your request. See Sandbox introduction for the full matching rules.
Every request needs faceLivenessSessionId plus exactly one of pcn, pcnFormData, or qrData. Sending two, or none, fails validation.
Verified
VERIFIED — Successfully verified via PCN number
VERIFIED — Successfully verified via PCN number
200VERIFIED — Successfully verified via ePhilID QR code
VERIFIED — Successfully verified via ePhilID QR code
200PH1:. The 16-digit PCN it carries is returned formatted with dashes in PCN.VERIFIED — Successfully verified via Digital ID QR code
VERIFIED — Successfully verified via Digital ID QR code
200id is echoed back as digitalId and must be alphanumeric and no more than 7 characters.VERIFIED — Successfully verified via PhilID / PVC QR code
VERIFIED — Successfully verified via PhilID / PVC QR code
200firstName, middleName, lastName, birthDate) and once in the PVC card’s native abbreviated keys (fName, mName, lName, DOB). Read the normalised keys.VERIFIED — Successfully verified via personal information
VERIFIED — Successfully verified via personal information
200suffix of "N/A" is returned as null. Send "N/A" when the person has no suffix.VERIFIED — Successfully verified with a live face liveness session
VERIFIED — Successfully verified with a live face liveness session
2009999-0000-9999-0000 accepts any valid UUID as its faceLivenessSessionId, including a session id from a real liveness capture. Use it to test the full capture-then-verify flow end to end.Rejected
A rejection is a completed verification, not an error:success is true, HTTP status is 200, and no identity fields are emitted. In live mode a rejection is billed.
REJECTED — Not verified against the PhilSys record
REJECTED — Not verified against the PhilSys record
200REJECTED — Not verified, unmatched payload fallback
REJECTED — Not verified, unmatched payload fallback
200transactionId and metadata. Worth firing once to confirm that an unknown PCN never reaches live PhilSys.Validation failures
All validation failures return HTTP400 with code set to VALIDATION_FAILED and the same message; only errors differs. Validation runs before any fixture matching, so these behave identically in sandbox and live.
VALIDATION_FAILED — Face liveness session invalid or expired
VALIDATION_FAILED — Face liveness session invalid or expired
400400 that carries a real transactionId and echoes metadata. The request reached the service, so a transaction row was written with status FAILED (6). Every other 400 returns transactionId: null, omits metadata, and writes no row.VALIDATION_FAILED — Request shape rejected before processing
VALIDATION_FAILED — Request shape rejected before processing
400 with the same envelope:errors differs. Each row below is a change to the by-PCN request:Source unavailable
Account-level responses
Two further responses are not specific to this endpoint. A missing or invalidAuthorization header returns HTTP 401, and an account without the scan_qr plan returns HTTP 403 — both enforced in sandbox exactly as in live. See Sandbox introduction for their envelopes.
