Face Match (Documento + Selfie)
Face Match
Face Match (Documento + Selfie)
Verificar que una selfie y la foto del documento corresponden a la misma persona en una sola llamada a la API. Consulta el esquema del request, códigos.
POST
Face Match (Documento + Selfie)
Documentation Index
Fetch the complete documentation index at: https://docs.gu1.ai/llms.txt
Use this file to discover all available pages before exploring further.
Resumen
Face Match es un servicio de verificación de Gu1 que compara dos imágenes: una selfie (foto actual de la persona) y una imagen de referencia del documento (por ejemplo el retrato del DNI). La API devuelve si las caras coinciden (misma persona) y una puntuación de similitud. No hay sesión alojada ni detección de vida en tiempo real: enviás las imágenes y obtenés el resultado en una sola llamada.Cuándo usar cada uno
- KYC por sesión (
POST /api/kyc/validations): Flujo completo con URL alojada, selfie en vivo, liveness y captura de documento. Ideal para onboarding y flujos regulados. - Face Match (
POST /api/kyc/face-match): Enviás dos imágenes (como archivos o base64) y recibís coincidencia + puntuación. Ideal cuando ya tenés documento y selfie (por ejemplo desde tu propia app).
Prerrequisitos
Antes de usar Face Match:- Integración Face Match activada: Tu organización debe tener la integración KYC Face Match activada (por ejemplo en Marketplace / Integraciones).
- Credenciales configuradas: La API key y el webhook secret de la integración Face Match deben estar configurados en la configuración KYC de la organización (lo define el administrador de Gu1).
- Umbral (opcional): El puntaje mínimo para aprobar (0–100) se configura en Configuración de la organización → KYC (tarjeta Face Match). Si no se define, el valor por defecto es 30. Solo los administradores de la organización pueden cambiar este valor.
Face Match es un servicio de Gu1. Toda la verificación se realiza en la infraestructura de Gu1.
Solicitud
Endpoint
Content-Type
Solo se aceptamultipart/form-data. Podés enviar las imágenes de dos formas (o combinar):
- Como archivos: adjuntar archivos de imagen en los campos del form
documentImageyselfieImage. - Como cadenas base64: enviar los mismos nombres de campo con la imagen en base64 (con o sin prefijo
data:image/...;base64,).
Headers
Content-Type a mano al usar FormData; el cliente lo setea con el boundary correcto.
Si tu cuenta usa organización, incluí:
Campos del form
Imagen de referencia (por ejemplo el retrato del documento). Enviar como archivo (recomendado) o como string (base64, con o sin prefijo
data:image/...;base64,). Formatos: JPEG, PNG, WebP, TIFF. Máx. 5MB.Imagen de la selfie. Igual que
documentImage: archivo o base64. Obligatorio.UUID opcional de la entidad persona a asociar con esta verificación. Se usa para auditoría y para listar verificaciones por entidad.
Opcional. Umbral 0–100; resultados por debajo se rechazan. Si se omite, se usa el umbral configurado en la organización (o 30 por defecto).
Referencia opcional (por ejemplo tu ID de usuario) para trazabilidad. Se guarda en el registro de auditoría.
Con
true, tras aprobar el face match de Gu1 ejecuta RENAPER biométrico (validate-dni con la selfie) y datos (renaper/data: DNI + trámite). Requiere credenciales RENAPER de la org y integraciones Marketplace activas: ar_renaper_data_enrichment y ar_renaper_validate_dni_enrichment. El query prevalece sobre el body.Igual que el query param
doubleCheckRenaper.DNI para RENAPER cuando
doubleCheckRenaper=true. Opcional si entityId resuelve taxId o person.idNumber.Género para RENAPER (
M, F, male, female). Obligatorio salvo resolución desde entidad vinculada.Número de trámite para el chequeo RENAPER. Obligatorio con
doubleCheckRenaper=true.Respuesta
Respuesta exitosa (200 OK)
| Campo | Tipo | Descripción |
|---|---|---|
match | boolean | Si las caras se consideraron coincidentes (puntuación ≥ umbral). |
score | number | Puntuación de similitud 0–100. |
status | string | "approved" | "declined" | "in_review". |
verificationId | string | ID del registro de auditoría en face_match_verifications (soporte y listado). |
scoreDeclineThreshold | number | Umbral (0–100) usado en esta verificación (configuración de la org). |
requestId | string (opcional) | ID interno de la solicitud (soporte). |
warnings | string[] (opcional) | Array de códigos de riesgo de la verificación (p. ej. LOW_FACE_MATCH_SIMILARITY, NO_REFERENCE_IMAGE). Ver Códigos de riesgo en advertencias para todos los valores. |
doubleCheckRenaper | boolean (opcional) | true si se solicitó doble chequeo RENAPER. |
responseDoubleChecks | object (opcional) | Con doubleCheckRenaper=true: renaper (datos/trámite) y renaperBiometric (ABIS). Misma forma que KYC validations RENAPER. |
match pasa a false, status a "declined" y se añaden códigos RENAPER a warnings. Usá timeout HTTP ≥ 60 s con double-check.
Ejemplo:
Ejemplo de solicitud
Respuestas de error
Códigos de error habituales:| Código | HTTP | Significado |
|---|---|---|
NOT_CONFIGURED | 403 | Credenciales Face Match no configuradas en la organización. |
NOT_ENABLED | 403 | Integración Face Match no activada para esta organización. |
INVALID_REQUEST | 400 | Content-Type no es multipart/form-data, o faltan/imágenes inválidas (p. ej. sin archivo ni base64 para un campo obligatorio, formato/tamaño). |
UNAUTHORIZED | 401 | Credenciales de API/verificación inválidas o faltantes. |
QUOTA_EXCEEDED | 403 | No se pudo completar la verificación (p. ej. cuota/créditos). |
SERVICE_UNAVAILABLE | 503 | Servicio de verificación temporalmente no disponible. |
VERIFICATION_FAILED | 500 | No se pudo completar la verificación; reintentar u otras imágenes. |
Auditoría y listado de verificaciones
Cada solicitud de Face Match (éxito o fallo) se guarda enface_match_verifications para auditoría y cumplimiento. La respuesta incluye verificationId (ID del registro de auditoría). Cada registro guardado también almacena el umbral usado en el momento de la llamada (para mostrarlo en el historial aunque cambie el umbral de la org).
Listar registros de auditoría
| Parámetro | Tipo | Descripción |
|---|---|---|
entityId | string (UUID) | Opcional. Filtrar por entidad persona. |
status | string | Opcional. Filtrar por estado (approved, declined, in_review, failed). |
limit | number | Máximo de ítems (por defecto 50, máx. 100). |
offset | number | Desplazamiento de paginación. |
{ "verifications": [ ... ], "scoreDeclineThreshold": 30, "pagination": { "limit", "offset", "total" } }. Cada verificación incluye id, entityId, status, match, score, threshold (valor usado en esa ejecución), createdAt y rutas de imagen opcionales para auditoría.
Obtener verificación por ID
Obtiene un registro de auditoría de Face Match por suverificationId (devuelto en la respuesta del POST o en el listado).
id — UUID de la verificación (igual que verificationId del POST o del listado).
Respuesta (200): Un objeto de verificación con los mismos campos que cada ítem del listado: id, organizationId, entityId, status, match, score, requestId, vendorData, errorMessage, triggeredByUserId, createdAt, documentStoragePath, selfieStoragePath, storageProvider, threshold.
Errores: 404 NOT_FOUND si el ID no existe o pertenece a otra organización; 401 UNAUTHORIZED si no estás autenticado.
Convivencia con KYC por sesión
- Flujo por sesión crea un registro en
kyc_validations, envía al usuario a una URL alojada y actualiza el estado vía webhooks. La decisión almacenada incluye documento, liveness y face match de la sesión en vivo. - Face Match crea un registro de auditoría en
face_match_verificationsy devuelve el resultado en la misma solicitud. No crea un registro enkyc_validations. Usalo cuando necesitás una verificación puntual (p. ej. «¿estas dos imágenes son la misma persona?») sin sesión alojada. - Ambos usan la misma configuración KYC de la organización. El umbral de Face Match se define en Configuración de la organización → KYC (tarjeta Face Match).
Próximos pasos
Crear validación KYC
Verificación por sesión con URL alojada
Listar validaciones
Listar validaciones KYC por entidad