Legacy · Supported and frozen

API v2 and VerifyCamera 2.x

Existing integrations remain supported with their current routes, response shapes, status-code quirks, and browser API. We strongly recommend v3 for new work and for planned upgrades.

Planning an upgrade?

v3 removes ambiguous input modes, normalizes errors, shortens backend processing, and provides a separate faster camera.

Start with v3

Legacy endpoints

  • POST /api/v2/verify — legacy spoof check, face comparison, and optimized selfie response.
  • POST /api/v2/optimize — multipart face crop and optimization.
  • POST /api/v2/spoof — standalone legacy spoof classification.

All use Bearer authentication. This page records the stable legacy contract without encouraging new integrations to copy its inconsistencies.

Supporting guides remain available for authentication, image guidance, legacy error handling, and plans and rate limits.

Legacy verify response

{
  "match": true,
  "confidence": 99.5,
  "message": "Face match successful",
  "is_spoof": false,
  "selfie_image": "base64-jpeg"
}

Do not normalize this response in place: some v2 validation failures use the five-field result object with HTTP 200, while other failures use a separate {"error":"…"} object or HTTP 500. That behavior remains frozen for compatibility.

Legacy camera

<script src="https://www.verifyfaceid.com/camera.js?v=2.0.27"></script>

const image = await VerifyCamera.takePicture();
if (image === false) {
  // The user cancelled.
}

The global window.VerifyCamera, callback constructor, takePicture() Promise behavior, and base64 JPEG result are unchanged.

Migration map

v2v3
Files, URLs, or JSON base64Two explicit multipart JPEG/PNG files
Several response and error shapesOne success/data/error/meta envelope
confidencedata.similarity; null below threshold
is_spoof and OpenAI processingNo backend spoof field; optional VerifyCameraV3 live challenge
Base64 selfie_image echoedNo image echoed; keep the camera’s local preview
window.VerifyCamerawindow.VerifyCameraV3

Upgrade safely

  1. Add camera-v3.js alongside—not in place of—your current script.
  2. Build a separate v3 request path using the camera result’s blob.
  3. Handle the v3 envelope and status codes independently from v2.
  4. Test permission denial, cancellation, non-match, no-face, limits, and provider errors.
  5. Move traffic deliberately; remove v2 code only after your own clients are fully migrated.

There is currently no announced v2 shutdown date. The recommendation to upgrade is about clarity, speed, and maintainability—not an unannounced compatibility change.