Three services
Sold separately, used together. A customer sees only what they bought, and every page they process counts against one allowance.
23 measurements against the published specification — head height, pose, gaze, focus, background, lighting, exposure. Correctable faults are corrected and the finished file comes back at the exact size.
Upload a folder of applicants. Each passport is read and, where the machine-readable zone is present, proven by arithmetic rather than merely read. Faces are matched to passports; a pairing we are unsure of is shown, never guessed.
Every section of an Al Etihad Credit Bureau report, structured, with each figure labelled by where it came from — and three separate answers kept separate.
How it answers
Pass-or-fail forces two different problems into one response. A photograph we can fix and a photograph the applicant must retake are not the same instruction, and neither is a failure on our side.
Meets the specification. Store the finished file.
Fails only on what we are permitted to correct. Ask again with correction on, and the corrected file comes back.
Fails something no edit may change. No corrected file is returned, so nobody is ever billed for work that did not happen.
Never shown to an applicant. It means we could not measure — the photograph was never judged. Telling someone to retake a good photograph because our vendor was down is the worst thing this service could do.
Identity is never edited
Reframing, resizing and replacing a background are edits to a photograph. Opening a closed eye, straightening a turned head or removing a smile would be edits to a person — so the engine refuses them, and cannot be configured otherwise.
Every correction is checked against the original face. A correction that changed who the person appears to be is rejected, not returned.
Identity match after correction
Measured against the original face on every corrected photograph, across the whole sample set.
The rules
Nothing the engine judges by is written in code. Change a threshold in the admin screen and the next request is judged by it — and so is the requirement text the applicant is shown.
That sentence is a column in the database, stored beside the number. Without it, the next person to see a threshold that looks wrong quietly “corrects” it, and the calibration behind it is gone.
What we keep
A check records the fingerprint of the file, its size, its dimensions, every measurement taken and the verdict reached. The photograph itself is discarded when the response is written. Request bodies are never logged either.
A face photograph is personal data of the most identifiable kind. Holding one creates obligations; holding none creates none of them. Retention is a per-customer setting, encrypted, with an expiry date and a nightly purge.
Every response carries the SHA-256 of exactly what you sent. It answers “is this the file you judged?” without either side needing to keep the image.
Every session and every request, written outside authentication — so a call with a rejected key is logged as carefully as one that worked. That is the call people ask about most.
Build with it
One response envelope on every path — including the failures, which are routed through the same shape rather than the framework's. Your integration writes one parser.
14 requests, 45 assertions, the envelope asserted on every one — including the failures.
Developers get keys and the error log. Business users get the numbers and nothing that can break production.
Every call you made, every fault on your account, with the request id to quote.
Your allowance is enforced, not just displayed — and an archive that would exceed it stops at the line and tells you which files.
We measure against the authority's published specification and show you every number. Final acceptance always remains with the issuing authority — anyone who promises otherwise is selling something they do not control.
You get `unavailable`, which is deliberately not a failure of the document. Retry it. We never let our outage read as an applicant's problem.
No, unless you ask us to. By default we keep the fingerprint and the measurements. Retention is per-account, encrypted, dated and purged nightly.
By the page — one image measured is one page. An upload is a document, whether it holds one photograph or forty. Both are counted as the work happens, and a call refused before any work is not counted.
Drop in a photograph or a zip of them and see every rule measured, exactly as the API returns it.