Quickstart
This guide gets you from zero to a scored liveness result in three steps: get an API key, send a base64 selfie to the liveness endpoint, and read the response. Every example uses the interim base URL https://verify.lioncapventures.com.
Use a test key (svk_test_...) while you build. A key is shown once at creation, then only its SHA-256 hash is stored, so copy it somewhere safe. See Authentication for scopes.
Get an API key
API keys are issued per organization. Contact the Sovera team to provision your organization and issue a key. A test key looks like svk_test_... and a live key looks like svk_live_.... Send it on every request as a bearer token:
Authorization header
Authorization: Bearer svk_test_your_key_here
Run a liveness check
The liveness endpoint takes a single base64-encoded image and tells you whether the face is real and present. It needs the verify:liveness scope.
# Encode a selfie to base64 (macOS/Linux)
IMAGE_B64=$(base64 -i selfie.jpg | tr -d '\n')
curl -X POST https://verify.lioncapventures.com/v1/verify/liveness \
-H "Authorization: Bearer svk_test_your_key_here" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d "{\"image\":\"$IMAGE_B64\"}"
Read the response
A successful call returns whether the subject is live, a score, the threshold the score was compared against, and how long detection took.
Response
{
"isLive": true,
"score": 0.982,
"threshold": 0.5,
"latencyMs": 214,
"detail": "passive_pad"
}
Interpret it like this:
- Name
isLive- Type
- boolean
- Description
Sovera's own accept or reject decision for this frame, using the provisional threshold.
- Name
score- Type
- number
- Description
Confidence from 0 to 1 that the face is real and present. Higher is more confident.
- Name
threshold- Type
- number
- Description
The score cut-off
isLivewas derived from. Provisional until in-house ROC calibration.
- Name
latencyMs- Type
- integer
- Description
Server-side detection time in milliseconds.
Thresholds are provisional. Rather than trusting isLive alone, keep the raw score and set your own accept and reject bands per use case, then tighten them once calibration is published.
What's next?
- Authentication covers keys, bearer tokens, and deny-by-default scopes.
- Verification sessions wrap several checks into one hosted flow with a decision.
- Active liveness adds an oval plus a turn-left or turn-right challenge.
- Consent & privacy records consent before any biometric template and erases subjects on request.
- Idempotency explains the
Idempotency-Keyheader used on writes.