CF Casefile
Sign in Try it free
Checked against the published specification

Identity documents,
checked and explained

Photographs, passports and credit reports — measured against the authority's own rules, with the number behind every decision. One API, one portal, one audit trail.

Check a photograph  → Sign in to the portal
23
checks per
photograph
4
answers,
not two
2.5s
to check
one photo
POST /api/v1/photo 200
"verdict": "pass",
"score": 100,
"before": { "verdict": "auto_fixable", "score": 92.5 },
"corrected": {
"applied": ["reframed", "resized to 300×369px"],
"identity_similarity": 1.0
},
"input": { "sha256": "53684be2…" },
"retained": false
Every rule returns the value it measured — not just whether it passed.
Specifications published RAKEZ visa UAE ICP ICAO 9303 Professional headshot Each rule carries the reason for its number

Three services

Everything behind an application,
in one account

Sold separately, used together. A customer sees only what they bought, and every page they process counts against one allowance.

Live

Photograph compliance

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.

Live

Passport & visa batches

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.

Live

Credit reports

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

Four answers, not pass or fail

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.

pass

Accept it

Meets the specification. Store the finished file.

auto_fixable

Nothing for the applicant to do

Fails only on what we are permitted to correct. Ask again with correction on, and the corrected file comes back.

retake

A new photograph is needed

Fails something no edit may change. No corrected file is returned, so nobody is ever billed for work that did not happen.

unavailable

Our problem, and we say so

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

We correct the photograph,
never the person

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.

Background replaced Reframed Resized Exposure evened No face edits No eye opening No expression changes

Identity match after correction

1.00

Measured against the original face on every corrected photograph, across the whole sample set.

The rules

Every threshold is a row,
and every row carries its reason

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.

head_pose block at most 10°

Why this number

“RAKEZ publish pitch ≤ 8. Two of the five photographs they supplied as good examples measure 8.8 and 9.0 — at 8 their own samples are refused, so pitch sits at 10.”

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

We keep the measurements.
Not the photograph.

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.

Retention is off by default

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.

The hash settles the argument

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.

Append-only audit

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

An API your engineer can
finish in an afternoon

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.

Open the portal  → Try a photograph

Postman

14 requests, 45 assertions, the envelope asserted on every one — including the failures.

Two roles

Developers get keys and the error log. Business users get the numbers and nothing that can break production.

Your own error log

Every call you made, every fault on your account, with the request id to quote.

A real ceiling

Your allowance is enforced, not just displayed — and an archive that would exceed it stops at the line and tells you which files.

Questions worth asking before you integrate

Will a photograph definitely be accepted?

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.

What happens when your engine is down?

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.

Do you store our applicants' documents?

No, unless you ask us to. By default we keep the fingerprint and the measurements. Retention is per-account, encrypted, dated and purged nightly.

How are we billed?

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.

Check a photograph now.
No account needed.

Drop in a photograph or a zip of them and see every rule measured, exactly as the API returns it.

Try it free  → Sign in