Documentation
How verification, document reading and the assessments actually work — plus the API, the model cards behind every decision, and a reference on the conditions the assessments screen for.
Solar Identity does three separate things: it establishes that a live person is in front of a camera, it reads identity documents and validates their check digits, and it runs psychometric screening instruments. None of these identify who someone is — there is no face database and no reverse image search here.
Every detection decision comes from a model whose card is published here, including its measured error rates and what it deliberately does not attempt. Where a capability was tried and did not work well enough to ship, that is recorded rather than quietly omitted.
Create an API key in the dashboard, send it as a bearer token, and start with the usage endpoint — it costs nothing and confirms the key works. Pick an endpoint and a language below to get runnable code for it.
A liveness check asks a different question from identity matching: is there a live human in front of this camera right now? The check issues a signed, randomised head-pose challenge, tracks 478 face landmarks in the browser, and verifies the result server-side.
The decisive signal against a screen or a photo is geometric. During a head turn, a flat surface is fully explained by a projective transform and leaves almost no residual, while a real three-dimensional head leaves a large one. On synthetic tests a flat plane gives a residual of zero to six decimal places; a curved surface gives 0.108.
Several other signals run alongside it: a pulse recovered from skin colour changes, blink timing, micro-expression variation, optical-flow rigidity, and a forensic model that looks for the subpixel stripes, moire and quantisation a display leaves in an image. No single one decides the outcome.
The outcome is deliberately three-way. A fail means an attack pattern was positively matched. A retry means the evidence was thin — a short pulse trace, lost landmarks, a reading outside the calibrated range — and comes with specific guidance. Missing signals widen uncertainty; they never count against the person.
A document is located in the frame by detecting its four boundary lines, then flattened with a perspective transform. That rectification is what makes text recognition on an angled photograph reliable, and on synthetic tests it locates corners to within one to four pixels.
The machine-readable zone is parsed per ICAO Doc 9303 and every check digit is validated, so a correctly read zone either checksums or it does not. Age verification is derived from the checksummed date of birth rather than from printed text, and the response reports whether the checksum held.
Document screening covers re-capture — a photograph of a screen, or a reprint — and reaches 97.3 per cent accuracy with a 1.9 per cent false-positive rate. It does not detect digital alteration of individual fields. That capability was trained, measured and dropped because the available features could not separate a spliced field from a genuine one at capture resolution.
Answers are not summed. Each item is modelled with a graded response model describing how likely each option is at a given trait level, so a question that separates people sharply counts for more than one that barely discriminates.
After every answer the trait estimate is recomputed, and the next question is chosen as the one carrying the most information at that current estimate. Near-duplicate items are penalised so the same ground is not covered twice, and the test stops once the standard error reaches target.
Every score carries a 95 per cent interval, a percentile and a reliability figure. When the interval straddles a band boundary the result is marked borderline, because a 69 and a 71 are the same result to within the measurement error even though the labels differ.
A separate classifier reads the pattern of answering rather than its content and distinguishes engaged responding from acquiescence, extreme and midpoint responding, random answering and straightlining. When the pattern is not engaged the result is marked untrustworthy rather than reported as a clean number.
Uploaded images are processed in place and deleted immediately afterwards. Only the derived result is retained, and it is encrypted before it is written to the database.
Face landmark tracking during a liveness check runs entirely in the browser, using a model served from this domain rather than a third party. Only a handful of low-resolution frames and numeric summary traces are sent for verification.
Organisations can restrict which fields appear in their API responses at all. Age-verification-only mode goes further: it reduces document responses to a pass or fail by construction, so no other document data can be returned regardless of how other settings are configured.
API reference
POST /api/analyze/face
Analyse a single face image for geometry, symmetry and an age range.
POST /api/liveness/verify
Verify a captured challenge sequence and return a three-way liveness decision.
GET /api/liveness/challenge
Issue a signed, randomised head-pose challenge. Valid for three minutes.
POST /api/analyze/id
Read an identity document, validate its MRZ check digits and screen the capture for re-capture.
POST /api/analyze/face-match
Check whether the face on an identity document belongs to the person in a live photo.
GET /api/assess/v1/catalog
List the assessments you can run and the traits Solar Identity can recognise in your own questions.
POST /api/assess/v1/sessions
Start an assessment and receive the first question. Each start counts towards your monthly assessment allowance.
POST /api/assess/v1/sessions/answer
Submit the answer to the current question and receive the next one, or done: true.
POST /api/assess/v1/sessions/result
Return the result: an estimate with its confidence interval, or insufficient_information or unreliable with the reasons.
POST /api/assess/v1/score
Score your own quiz in one call: send the questions and the answers, receive a trait estimate for each trait.
POST /api/assess/v1/quizzes
Save a quiz so people can take it one question at a time with /api/assess/v1/sessions. GET lists your quizzes; GET or DELETE /api/assess/v1/quizzes/:id reads or removes one.
GET /api/analyze/usage
Read your own credit balance and recent request volume.
GET /api/liveness/models
List the model cards behind the detection endpoints, with their measured metrics.