Face
Compare faces, find them, describe them and check photo quality. Every face endpoint takes images and answers in the KYC envelope.
Compare two faces (1:1)#
face.verify is the call most integrations need: is the person in this selfie the person on this ID photo? It answers match at the threshold you send (0.75 by default) and the similarity behind it.
curl -X POST https://verisec.dev/v1/face/verify \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image1": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==",
"image2": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==",
"threshold": 0.75
}'face.match compares every face it finds in each image and gives a similarity for each pair, and face.similarity returns just the score.
Search a gallery (1:N)#
These compare one face against faces you send in the same request. VeriSec doesn't keep a gallery for you.
face.search- One face against a gallery of 1 to 10 faces. Returns the matches above your threshold, best first.
face.watchlist- One face against your own labelled list (blocked, VIP, staff). Returns whether it hit, and the entry it matched.
face.dedupe- Whether a new face already exists in a set: the closest face, and whether it clears the duplicate threshold.
face.cluster- Groups the faces in a set by person.
curl -X POST https://verisec.dev/v1/face/search \
-H "Authorization: Bearer $VERISEC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"probe": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==",
"gallery": [
{
"image": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==",
"id": "face-1"
}
],
"topK": 3,
"threshold": 0.75
}'Describe a face#
face.analyze is the all-in-one call: for every face, its box, tilt, landmarks, an aligned crop, and the attributes and quality checks you ask for. face.detect, face.count, face.attributes, face.emotion and face.ppe (masks, glasses and other face coverings) each return one part of that.
Age#
face.age estimates an age range for each face. age.verify turns that into a pass or fail against a minimum age, and age.verifyLive adds a liveness check in the same call.
Photo quality#
face.quality and the photo endpoints check that a photo is usable before you rely on it: photo.compliance checks it against a document-photo standard, photo.gate gives one pass or fail, photo.autofix crops and corrects it, and photo.bestFrame picks the best of several frames.
Every face endpoint#
| Endpoint | What it does |
|---|---|
POST/v1/face/analyze | Face Analyze |
POST/v1/face/detect | Face Detect |
POST/v1/face/count | Face Count |
POST/v1/face/attributes | Face Attributes |
POST/v1/face/ppe | Mask & Glasses (PPE) |
POST/v1/face/emotion | Emotion |
POST/v1/face/crop | Smart Crop |
POST/v1/face/redact | Face Redact |
POST/v1/face/match | Face Match |
POST/v1/face/verify | Face Verify (1:1) |
POST/v1/face/similarity | Similarity Score |
POST/v1/face/search | Face Search (1:N) |
POST/v1/face/dedupe | Duplicate Check |
POST/v1/face/watchlist | Watchlist Screening |
POST/v1/face/cluster | Face Cluster |
POST/v1/face/age | Age Estimation |
POST/v1/age/verify | Age Check |
POST/v1/age/verify-live | Age Check + Liveness |
POST/v1/face/quality | Photo Quality |
POST/v1/photo/compliance | Photo Compliance |
POST/v1/photo/policy | Photo Policy |
POST/v1/photo/gate | Quality Gate |
POST/v1/photo/autofix | Photo Auto-fix |
POST/v1/photo/best-frame | Best Frame |
POST/v1/liveness | Liveness |
POST/v1/liveness/antispoof | Anti-spoof Reason |
POST/v1/liveness/gate | Liveness Gate |