Active liveness

Active liveness is Sovera's stronger anti-spoofing check and its differentiator. Instead of scoring one passive frame, Sovera issues a randomized challenge (fit your face in the oval, then turn left or turn right) and verifies that the captured frames actually satisfy it. A recorded video or static photo cannot respond to a fresh, random instruction, which raises the bar against replay and deepfake attacks. It requires the verify:liveness scope.

The flow has two calls: request a challenge, capture frames on device, then submit the frames for verification.

Request a challenge

Sovera returns a challengeId and the ordered actions the user must perform. Show the oval and the actions in your capture UI.

POST
/v1/verify/active-liveness/challenge
curl -X POST https://verify.lioncapventures.com/v1/verify/active-liveness/challenge \
  -H "Authorization: Bearer svk_live_xxxxxxxx" \
  -H "Content-Type: application/json"

Response

{
  "challengeId": "chl_5b91d2",
  "actions": ["fit_oval", "turn_left", "turn_right"],
  "createdAt": "2026-07-04T17:58:12Z"
}
  • Name
    challengeId
    Type
    string
    Description

    Identifier you submit back with the captured frames.

  • Name
    actions
    Type
    string[]
    Description

    The ordered instructions to present, for example fit_oval, then turn_left, then turn_right.

  • Name
    createdAt
    Type
    string
    Description

    When the challenge was issued. Challenges are short-lived, so capture promptly.

Verify the challenge

Capture frames while the user performs the actions, then submit the challengeId, the actions you presented, and the base64 frames. Sovera checks that the frames actually satisfy the challenge.

POST
/v1/verify/active-liveness/verify
curl -X POST https://verify.lioncapventures.com/v1/verify/active-liveness/verify \
  -H "Authorization: Bearer svk_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "challengeId": "chl_5b91d2",
    "actions": ["fit_oval", "turn_left", "turn_right"],
    "frames": ["<base64>", "<base64>", "<base64>"]
  }'

Response

{
  "passed": true,
  "score": 0.964,
  "detail": "actions_satisfied"
}
  • Name
    challengeId
    Type
    string (required)
    Description

    The challengeId from the challenge step.

  • Name
    actions
    Type
    string[]
    Description

    The actions you presented to the user, in order.

  • Name
    frames
    Type
    string[] (required)
    Description

    Base64-encoded frames captured during the challenge.

Was this page helpful?