transactionId and createdAt are generated per request, and metadata is echoed back from your request. See Sandbox introduction for the shared rules.
How scenarios are selected
This endpoint takes an image, not identity fields, so matching works differently from the other sandbox pages:Sandbox returns sample data, not the contents of your image. Every image without its own scenario returns the same driving license extraction —
SANTOS, JUAN DELA CRUZ — whatever card it shows.Verified
VERIFIED — Any image (driving license sample)
VERIFIED — Any image (driving license sample)
RequestResponse — HTTP Any image that is not one of the base64 strings on this page returns this response. Use it to test the success path with your own files.
200VERIFIED — PhilSys ID
VERIFIED — PhilSys ID
RequestResponse — HTTP
200Review needed
The card was identified, but a required field could not be read.success is true: the extraction completed and, in live mode, is billed. missingFields names what is missing so a reviewer can complete it.
REVIEW_NEEDED — PRC, license number unreadable
REVIEW_NEEDED — PRC, license number unreadable
RequestResponse — HTTP
200REVIEW_NEEDED — Voter ID, precinct number unreadable
REVIEW_NEEDED — Voter ID, precinct number unreadable
RequestResponse — HTTP
200Rejected
A rejection is a completed extraction, not an error:success is true and HTTP status is 200. In live mode a rejection is billed. Read the reason from data.errors.errorCode.
REJECTED — Not a supported Philippine ID
REJECTED — Not a supported Philippine ID
RequestResponse — HTTP
200documentType is null when the image is not one of the supported Philippine documents.REJECTED — Passport, MRZ unreadable
REJECTED — Passport, MRZ unreadable
RequestResponse — HTTP The card was identified as a passport, but its machine-readable zone could not be read. The fields that were read are still returned.
200Validation failures
All validation failures return HTTP400 with code set to VALIDATION_FAILED. They behave identically in sandbox and live.
VALIDATION_FAILED — documentImage missing
VALIDATION_FAILED — documentImage missing
RequestResponse — HTTP
400transactionId is null and no transaction row is written.VALIDATION_FAILED — documentTypes sent
VALIDATION_FAILED — documentTypes sent
RequestResponse — HTTP The stateless endpoint does not filter by card type. Omit
400documentTypes and read data.fields.documentType from the response instead.VALIDATION_FAILED — Not a valid image
VALIDATION_FAILED — Not a valid image
RequestResponse — HTTP The image is checked after the transaction is opened, so this response carries a real
400transactionId and verificationStatus FAILED, but no errors object. A file over 2 MB, or in a format other than JPG, PNG or PDF, returns the same response. Not billed.Source unavailable
Both scenarios return the same response.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 philippines_document_details_extraction plan returns HTTP 403 — both enforced in sandbox exactly as in live. See Sandbox introduction for their envelopes.
