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.
These are the same request payloads as PhilSys Check Tier 2 sandbox. Tier 1 returns less: isValid plus fullName on a match, or isValid plus reason on a rejection. It never returns address, portrait, or parsed QR fields.
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:. Tier 1 never returns the parsed QR block.VERIFIED — Successfully verified via Digital ID QR code
VERIFIED — Successfully verified via Digital ID QR code
200id 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
200VERIFIED — Successfully verified via personal information
VERIFIED — Successfully verified via personal information
200"N/A" as suffix 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 data carries a reason instead of fullName. In live mode a rejection is billed.
REJECTED — Not verified against the PhilSys record
REJECTED — Not verified against the PhilSys record
200REJECTED — Face does not match the PhilSys record
REJECTED — Face does not match the PhilSys record
200unauthorized means the face did not match. It is settled as a rejection, not as a source failure.REJECTED — Not verified, unmatched payload fallback
REJECTED — Not verified, unmatched payload fallback
200transactionId and metadata. Fire it 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 philsys_check_tier_1 plan returns HTTP 403 — both enforced in sandbox exactly as in live. See Sandbox introduction for their envelopes.
