Los webhooks son parte de la API, así que requieren plan Premium o Pro, igual que
POST /oauth/token. Ver Planes.Registrar un endpoint
url (obligatorio) y description (opcional). Cualquier otro campo se rechaza. La llamada responde 201:
Dónde vive el secreto de firma
TuwebhookSecret es un valor de 256 bits que la aplicación muestra en Configuración → Desarrolladores, junto a tu Client Id y tu Client Secret. El mismo valor vuelve en un GET /users/me autenticado.
Para rotarlo, usá Refrescar en esa pantalla o llamá:
Eventos
Doce eventos cubren el ciclo de vida.started se dispara cuando un paso empieza, successful cuando se aprueba y failed cuando se pierde de forma definitiva.
Payload
Todos los payloads tienen la misma forma de dos claves: untype y un objeto data.
_externalUserId y _metadata se copian del enlace que originó la verificación. Si el enlace no llevaba externalUserId, el campo llega como cadena vacía; sin metadata, _metadata es {}.
Geolocalización en los eventos terminales
verification.successful y verification.failed además traen data.geolocation, cuando se capturó una ubicación. Los eventos intermedios nunca la traen: en verification.started la captura todavía no ocurrió.
null, así que tratá todos los campos como opcionales.
Validar la firma
VU firma el payload con HMAC-SHA256 sobre el cuerpo exacto de la request, usando como clave elwebhookSecret de tu cuenta, y manda el digest hexadecimal en el header X-Signature-SHA256.
Validá contra el cuerpo crudo. Si parseás y volvés a serializar el JSON, los bytes cambian y la comparación falla.
Entrega y reintentos
Ese presupuesto es demasiado chico para absorber un handler lento, así que:- Respondé de inmediato y procesá de forma asincrónica. Confirmá dentro de unos pocos cientos de milisegundos y mandá el trabajo a una cola.
- Sé idempotente. El mismo evento puede llegar más de una vez, y
verification.startedse vuelve a emitir en la rama adaptativa en algunos caminos de reintento. - No trates al webhook como única fuente de verdad. Reconciliá con
GET /verifications/{id}/status?linkId={linkId}todo lo que tenga impacto comercial: una verificación cuyo webhook se perdió sigue teniendo su estado correcto en la API. - Leé el resultado antes de que expire. Pasado el
expiresAtde la verificación,GET /verifications/{id}responde410. En Planes está cómo se calcula esa ventana.
Administrar endpoints
PATCH acepta url y description. Todas las rutas requieren el mismo token Bearer que el resto de la API.
Las rutas de
/webhook-endpoints viven en la misma URL base que POST /links: https://api.identity.vu-one.com/api/v1. No hay un host aparte. Si responden 404 con given resource is not implemented, la ruta no coincidió: revisá la URL base, el path y el método en Errores.Siguientes pasos
- Leé los datos extraídos de la verificación en la guía de Resultados KYC.
- Entendé cómo se corresponden los eventos de prueba de vida con los tipos de webhook en Prueba de vida.
- Revisá los códigos de error si falla el registro del webhook en la página de Errores.