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.

Request
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.

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.
Request
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
POST/v1/face/analyze
POST/v1/face/detect
POST/v1/face/count
POST/v1/face/attributes
POST/v1/face/ppe
POST/v1/face/emotion
POST/v1/face/crop
POST/v1/face/redact
POST/v1/face/match
POST/v1/face/verify
POST/v1/face/similarity
POST/v1/face/search
POST/v1/face/dedupe
POST/v1/face/watchlist
POST/v1/face/cluster
POST/v1/face/age
POST/v1/age/verify
POST/v1/age/verify-live
POST/v1/face/quality
POST/v1/photo/compliance
POST/v1/photo/policy
POST/v1/photo/gate
POST/v1/photo/autofix
POST/v1/photo/best-frame
POST/v1/liveness
POST/v1/liveness/antispoof
POST/v1/liveness/gate