Ciclo de una verificación
Una verificación nace pendiente y siempre termina sola en un estado final. No hay que cerrarla ni cancelarla.
De pendiente a un estado final
Toda verificación empieza en pending y termina exactamente una vez. Nadie tiene que cerrarla: si el usuario nunca escribe el código, vence sola al llegar a expires_at.
| Estado | Qué significa | Final | Se factura |
|---|---|---|---|
pending | Activa, esperando el código. | No | No |
approved | El usuario escribió el código correcto. | Sí | Sí, solo con clave live_ |
expired | Venció sin una comprobación correcta. | Sí | No |
max_attempts_reached | Se agotaron los intentos. | Sí | No |
failed | Todos los canales de la cascada fallaron de forma definitiva. | Sí | No |
Solo approved se factura. Un código que no llegó, un usuario que no terminó o un intento bloqueado no te cuestan nada.
NotaEl contrato reserva además
canceledyblocked, pero hoy ninguna verificación llega a ellos: no hay cancelación por API y los bloqueos antifraude rechazan la petición antes de crear la verificación.
Cómo avanza
- Crear (
POST /v1/verifications): nace enpendingy empieza la cascada de canales. - Comprobar (
POST /v1/verifications/{id}/check):- código correcto →
approved; - incorrecto con intentos → sigue
pending, con un intento menos; - incorrecto en el último intento →
max_attempts_reached.
- código correcto →
- Vencer: al llegar a
expires_atsin aprobación, pasa aexpired. Una comprobación en ese momento o después responde409con30002, igual que cualquier comprobación sobre una verificación que ya terminó. - Fallar: si cada canal de la cascada falla de forma definitiva antes de vencer, pasa a
failed. Si un canal aceptó el mensaje pero no sabemos si llegó, o un envío de correo fue incierto, la verificación siguependinghasta vencer.
Parámetros que controlan el ciclo
Cada aplicación tiene su política. Puedes sobrescribirla por petición al crear la verificación:
El tiempo de espera por canal y el plazo de reenvío son ajustes de la aplicación, no de la petición.
Cómo te enteras del resultado
- En la respuesta de comprobación, si el usuario escribe el código en tu app.
- Por webhook, para los finales que ocurren sin una llamada tuya:
expiredyfailed. - Por cada paso de canal, si te suscribes a los eventos
verification.channel.*: si cada envío fue aceptado, rechazado o entregado.
No hay un endpoint para consultar el estado de una verificación: el resultado llega solo.
Updated 19 days ago
