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.
selfieImage is required but ignored for matching — send any valid base64 image or image upload. The scenario is chosen by nik, name and dateOfBirth, so you can test with a real selfie from your capture flow.selfieImagePercentage of 70 or higher.
Verified
VERIFIED — Identity and face match
VERIFIED — Identity and face match
RequestResponse — HTTP
200VERIFIED — Identity, optional fields and face match
VERIFIED — Identity, optional fields and face match
RequestResponse — HTTP Optional fields are checked against the Dukcapil record but are not echoed in the response. Send them exactly as shown — this payload only matches with both
200placeOfBirth and gender present.Rejected
A rejection is a completed verification, not an error:success is true and HTTP status is 200. In live mode a rejection is billed.
REJECTED — Face does not match
REJECTED — Face does not match
RequestResponse — HTTP Identity matched, but the face score is below
20070.REJECTED — Name does not match
REJECTED — Name does not match
RequestResponse — HTTP
200REJECTED — Date of birth does not match
REJECTED — Date of birth does not match
RequestResponse — HTTP
200REJECTED — Not verified, unmatched payload fallback
REJECTED — Not verified, unmatched payload fallback
RequestResponse — HTTP This NIK matches no documented scenario, so it takes the no-match fallback. No face comparison took place, so
200selfieImagePercentage is null.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. transactionId is null and no transaction row is written.
VALIDATION_FAILED — Selfie image missing
VALIDATION_FAILED — Selfie image missing
RequestResponse — HTTP
400VALIDATION_FAILED — Selfie image not a valid image
VALIDATION_FAILED — Selfie image not a valid image
RequestResponse — HTTP
400VALIDATION_FAILED — NIK missing
VALIDATION_FAILED — NIK missing
RequestResponse — HTTP
400VALIDATION_FAILED — NIK not 16 digits
VALIDATION_FAILED — NIK not 16 digits
RequestResponse — HTTP
400VALIDATION_FAILED — Name missing
VALIDATION_FAILED — Name missing
RequestResponse — HTTP
400VALIDATION_FAILED — Date of birth missing
VALIDATION_FAILED — Date of birth missing
RequestResponse — HTTP
400VALIDATION_FAILED — Trust flow fields sent to a stateless endpoint
VALIDATION_FAILED — Trust flow fields sent to a stateless endpoint
RequestResponse — HTTP
400Source unavailable
Account-level responses
A missing or invalidAuthorization header returns HTTP 401, and an account without the dukcapil_full plan returns HTTP 403 — both enforced in sandbox exactly as in live. See Sandbox introduction for their envelopes.
