Primera verificacion
Es momento de correr una verificacion real con el widget que embebiste en el paso anterior.
Que vas a testear
Un flujo de usuario completo:
- El usuario toca Comenzar
- El browser pide permiso de camara
- El usuario fotografia el frente del documento
- El usuario fotografia el reverso (solo si
require-doc-back="true") - El usuario se toma una selfie
- El widget corre controles de calidad, sube a Cloudflare R2, llama a la API
- Vos recibis un evento
veridia:completecon elverificationId - El veredicto (
approved/review/rejected) se computa en ~2 segundos
Corrolo
Abri la pagina donde embebiste el widget. Usa un dispositivo real con camara — el widget es mobile-first pero tambien funciona en laptops.
:::tip Testing local
Si estas testeando en localhost, agrega localhost (o 127.0.0.1) a los allowed origins de tu test API key en el dashboard. Sin eso, el widget rechaza cargar.
:::
Tips para la captura del documento
- Apoya el documento plano en una superficie con contraste (evita blanco sobre blanco)
- No cubras las esquinas con los dedos
- Evita luz directa reflejando en el documento (se va a disparar el flag heavy_glare)
- Asegurate que el documento este completamente en el frame
- Manten el telefono firme — las fotos borrosas las rechaza el control de calidad multi-signal
Tips para la selfie
- Mira directamente a la camara
- Buena iluminacion uniforme (sin contraluz)
- Sacate lentes oscuros, gorros que cubran la cara
- Quedate quieto durante la captura
Inspecciona el payload del evento
Agrega un console.log listener para ver exactamente que emite el widget:
<script>
document.querySelector('veridia-widget')
.addEventListener('veridia:complete', (e) => {
console.log('verificacion completa:', e.detail);
});
document.querySelector('veridia-widget')
.addEventListener('veridia:error', (e) => {
console.error('error de verificacion:', e.detail);
});
</script>
Cuando el usuario termina, tu consola va a mostrar algo asi:
{
"verificationId": "vf_AG07CDWRRFQV4T05ZXG2",
"userRef": "customer-12345",
"status": "queued"
}
El verificationId es lo que vas a usar para obtener el resultado final via GET /v1/verify/:id o lo que llega en tu webhook.
Vela en tu dashboard
Anda al dashboard de Veridia y abri Review queue. Vas a ver tu verificacion con:
- Info del submitter (user ref, timestamp de envio)
- Desglose de scores (confianza general, OCR, face match, liveness, calidad de doc)
- Flags (ej.
heavy_glare,low_face_match) - El veredicto final
Hace click en una verificacion para ver el breakdown completo y las imagenes capturadas.
Que pasa detras de escena
Cuando el widget llama a la API en submit, este pipeline se ejecuta:
| Paso | Donde | Que |
|---|---|---|
| 1 | Browser | Controles de calidad (Laplacian, Tenengrad, Brenner) |
| 2 | Browser | Upload directo a Cloudflare R2 (presigned URL) |
| 3 | Worker | OCR via Workers AI — extrae nombre, numero de doc, fechas |
| 4 | Worker | Despacha al backend con toda la data extraida |
| 5 | Backend | Face match (insightface buffalo_s) |
| 6 | Backend | Scoring de liveness |
| 7 | Backend | Calcula score ponderado de confianza |
| 8 | Backend | Determina veredicto: approved / review / rejected |
| 9 | Backend | Persiste a MySQL con audit trail |
| 10 | Backend | Dispara webhook (si esta configurado) |
Latencia end-to-end: ~2.0 a 2.7 segundos para una verificacion tipica.
Que significa el veredicto
| Veredicto | Confianza | Que deberias hacer |
|---|---|---|
approved | Score alto, todas las senales pasan | Confiar en el usuario, completar onboarding |
review | Score medio, algunos flags levantados | Enviar a tu cola de revision manual |
rejected | Score bajo, fallas duras | Bloquear, pedir al usuario que reintente, o escalar |
Errores comunes en esta etapa
| Error | Causa probable | Fix |
|---|---|---|
errorInvalidKey | API key revocada o test key en produccion | Verifica la key en tu dashboard |
errorRateLimited | Muchas requests en poca ventana | Agrega throttling de tu lado |
errorInsufficientCredits | El tenant se quedo sin creditos | Top up en el dashboard o contacta soporte |
errorBlurry | Calidad de imagen muy baja | El usuario reintenta (el widget lo maneja automaticamente) |
errorNoFace | Cara no detectada en la selfie | El usuario reintenta con mejor framing |
errorUpload | Falla de red o R2 inaccesible | El widget reintenta automaticamente |
Proximo paso
Tenes un resultado de verificacion. Ahora aprende las tres formas de consumirlo.