Por sesión
Cada sesión puede llevar sus propios umbrales.
Durante la verificación comparamos el rostro de la credencial con la selfie del usuario y revisamos que la persona esté realmente frente a la cámara (prueba de vida). Cada comprobación da un porcentaje, y la sesión la aprueba solo si ese porcentaje alcanza un umbral: el porcentaje mínimo de aceptación.
Al crear la sesión puedes fijar tus propios umbrales para que la verificación sea más estricta o más flexible según tu caso de uso. Si no envías ninguno, se aplican los valores por defecto.
| Parámetro | Qué compara | Rango permitido | Por defecto | Aprueba cuando |
|---|---|---|---|---|
| face_match_threshold | El rostro de la credencial contra la selfie. | 70 a 100 | 90 | La similitud es mayor o igual al umbral. |
| liveness_threshold | La confianza de la prueba de vida. | 50 a menos de 100 | 80 | La confianza es mayor al umbral. |
| qr_face_match_threshold | La fotografía del QR del reverso contra el rostro de la credencial. Solo aplica si la sesión se creó con qr_validation: true. | 70 a 100 | 80 | La similitud es mayor o igual al umbral. |
Todos son porcentajes y aceptan decimales, por ejemplo 87.5.
Envía los umbrales en el cuerpo de la solicitud al crear la sesión. Puedes mandar uno, dos o los tres: los que omitas toman su valor por defecto.
{ "validations": ["INE", "CURP"], "face_match_threshold": 92, "liveness_threshold": 85}{ "validations": ["INE", "CURP"], "qr_validation": true, "face_match_threshold": 92, "liveness_threshold": 85, "qr_face_match_threshold": 85}curl -X POST https://api.verificamex.com/identity/v3/identity/sessions \ -H "Authorization: Bearer {TU_TOKEN}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "validations": ["INE", "CURP"], "face_match_threshold": 92, "liveness_threshold": 85 }'La respuesta de creación confirma los umbrales de la sesión en la raíz del objeto, incluidos los que tomaron su valor por defecto:
{ "uuid": "870c7eee-3604-4995-aa98-bc8fa6aa1112", "status": "OPEN", "verification_url": "https://kyc.verificamex.com/verify/870c7eee-3604-4995-aa98-bc8fa6aa1112?t=...", "liveness_threshold": 85, "face_match_threshold": 92, "qr_face_match_threshold": 80, "result": null}El detalle de la sesión y el
webhook los incluyen en el objeto thresholds, junto a
coincidence (la similitud facial que obtuvo el usuario). Así puedes ver contra qué valor se calificó
cada sesión:
{ "data": { "id": "870c7eee-3604-4995-aa98-bc8fa6aa1112", "status": "FINISHED", "result": 100, "coincidence": 95.1, "thresholds": { "liveness": 85, "face_match": 92, "qr_face_match": 80 } }}| Campo | Tipo | Descripción |
|---|---|---|
| thresholds.face_match | Number | Umbral de comparación facial con el que se calificó la sesión. Siempre trae un valor. |
| thresholds.liveness | Number o null | Umbral de la prueba de vida: el que enviaste o el valor por defecto (80). |
| thresholds.qr_face_match | Number o null | Umbral de la fotografía del QR: el que enviaste o el valor por defecto (80). |
Si una comprobación no alcanza su umbral, se agrega una entrada al arreglo errors y el result de la
sesión pasa a 0, sin importar que Lista Nominal o RENAPO hayan pasado.
| Key | Se agrega cuando |
|---|---|
| FACE-MATCH-KYC-001 | La similitud entre la credencial y la selfie es menor que face_match_threshold. |
| LIVENESS-KYC-001 | La prueba de vida no se completó, o su confianza no superó liveness_threshold. |
| QR-KYC-003 | La fotografía del QR no alcanzó qr_face_match_threshold. Solo cuando el QR se leyó con éxito: ver Cómo afecta el resultado. |
La entrada de FACE-MATCH-KYC-001 indica en Output el umbral con que se comparó. La similitud llega
en 0 porque, como se explica arriba, no se informa cuando queda por debajo del umbral:
{ "Key": "FACE-MATCH-KYC-001", "Name": "Comprobación facial", "Category": "KycBiometryValidation", "Result": false, "Output": "face_match_confidence=0; umbral=92", "Message": "La comprobación facial de kyc.verificamex.com no alcanzó el umbral requerido"}Por ejemplo, con face_match_threshold: 92:
95.1: aprueba la comparación facial y coincidence es 95.1.92: aprueba, porque es igual al umbral, y coincidence es 92.92: coincidence llega en 0, se agrega FACE-MATCH-KYC-001 a errors
y el result pasa a 0.Te recomendamos empezar con los valores por defecto, revisar cuántas sesiones se rechazan con
FACE-MATCH-KYC-001 o LIVENESS-KYC-001 y qué coincidence obtienen las aprobadas, y ajustar en
pasos pequeños.
Si un umbral está fuera de su rango o no es un número, la sesión no se crea y recibes un 422 que
indica el campo con el problema:
{ "message": "face_match_threshold debe ser de al menos 70.", "errors": { "face_match_threshold": [ "face_match_threshold debe ser de al menos 70." ] }}| Valor enviado | Mensaje |
|---|---|
face_match_threshold o qr_face_match_threshold menor que 70 | … debe ser de al menos 70. |
face_match_threshold o qr_face_match_threshold mayor que 100 | … no puede ser mayor que 100. |
liveness_threshold menor que 50 | liveness_threshold debe ser de al menos 50. |
liveness_threshold de 100 o más | liveness_threshold debe ser menor que 100. |
| Un valor que no es número | … debe ser un número. |
Por sesión
Cada sesión puede llevar sus propios umbrales.
Sin costo adicional
Configurarlos no consume tokens extra.
Rostro: 90 por defecto
Si no envías nada, se mantiene el criterio de siempre.
Visibles en la respuesta
El detalle y el webhook indican contra qué valor se calificó.