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.
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
| v2 | v3 |
|---|---|
| Files, URLs, or JSON base64 | Two explicit multipart JPEG/PNG files |
| Several response and error shapes | One success/data/error/meta envelope |
confidence | data.similarity; null below threshold |
is_spoof and OpenAI processing | No backend spoof field; optional VerifyCameraV3 live challenge |
Base64 selfie_image echoed | No image echoed; keep the camera’s local preview |
window.VerifyCamera | window.VerifyCameraV3 |
Upgrade safely
- Add
camera-v3.jsalongside—not in place of—your current script. - Build a separate v3 request path using the camera result’s
blob. - Handle the v3 envelope and status codes independently from v2.
- Test permission denial, cancellation, non-match, no-face, limits, and provider errors.
- 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.