Auvral

Referencia de eventos

Cada evento de webhook de Auvral, campo por campo, con cuerpos de ejemplo completos.

Todos los cuerpos de webhook tienen el mismo sobre. Entre eventos solo cambian type y el contenido de data.verification.

{
  "id": "string",
  "type": "string",
  "createdAt": "ISO 8601",
  "data": { "verification": { } }
}

Sobre

CampoTipoDescripción
idstringEl id del evento. Coincide con el header x-auvral-event-id y es estable entre reintentos, así que esta es tu llave de deduplicación.
typestringUno de los tipos de evento de abajo.
createdAtstringCuándo ocurrió el evento, ISO 8601. No cuándo se hizo este intento de entrega.
data.verificationobjectEl estado de la verificación en ese momento.

data.verification

CampoTipoDescripción
idstringEl id permanente de la verificación.
status"STARTED" | "RUNNING" | "VERIFIED" | "REJECTED"El estado de la verificación cuando se generó el evento.
flowIdstring | nullEl flujo que se corrió.
flowNamestring | nullEl nombre visible del flujo.
sessionIdstring | nullLa sesión de la que salió, el sessionId devuelto por POST /v1/sessions.
referenceIdstring | nullTu propio identificador de la persona, tal como lo enviaste al crear la sesión, o el que Auvral asignó. Si lo editas en tu dashboard, cambia lo que llevan los eventos posteriores. Auvral nunca lo interpreta.
metadataobject | nullLos pares clave-valor de strings planos que adjuntaste al crear la sesión, intactos, o null si no adjuntaste ninguno.
startedAtstring | nullCuándo empezó tu usuario, ISO 8601.
endedAtstring | nullCuándo se llegó al veredicto. null hasta entonces.
stepsarrayUna entrada por paso del flujo, en el orden del flujo.

steps[]

CampoTipoDescripción
namestringEl paso, en minúsculas: document_verification, biometric_verification.
status"PENDING" | "RUNNING" | "VERIFIED" | "REJECTED"PENDING significa que el paso todavía no tiene resultado.

Cada paso configurado en el flujo aparece desde el primer evento, así que el largo del arreglo nunca cambia. Solo cambian los estados.

No hay ningún dato personal en ninguna parte del cuerpo: ni nombre, ni número de documento, ni fecha de nacimiento, ni imagen.

Los eventos de verificación

Tu usuario empezó la verificación. Se envía una vez, sin importar en qué dispositivo termine.

{
  "id": "1c8f2b90-3ad4-41e7-8f52-9b7c6d0e4a13",
  "type": "verification.started",
  "createdAt": "2026-08-25T15:11:02.884Z",
  "data": {
    "verification": {
      "id": "b47ac10b-58cc-4372-a567-0e02b2c3d479",
      "status": "STARTED",
      "flowId": "3f1c9a52-4d7e-4b3a-9c21-8e5f6a0b7d34",
      "flowName": "Onboarding",
      "sessionId": "9b2f4c1e-7a83-4d06-b5f1-2c9e8d3a6047",
      "referenceId": "user_8842",
      "metadata": { "orderId": "order-8841" },
      "startedAt": "2026-08-25T15:11:02.884Z",
      "endedAt": null,
      "steps": [
        { "name": "document_verification", "status": "PENDING" },
        { "name": "biometric_verification", "status": "PENDING" }
      ]
    }
  }
}

Útil para marcar a un usuario como "en proceso" y para detectar abandono: una verificación que empezó y nunca envió fue abandonada.

webhook.test

Lo envía únicamente Enviar evento de prueba en el dashboard. Todos los ids son el UUID de puros ceros, referenceId es la cadena literal test y metadata es null, así que no se puede confundir con uno real.

{
  "id": "b1e7d3f0-9c42-4a85-b6d1-8f03e5c7a294",
  "type": "webhook.test",
  "createdAt": "2026-08-25T14:02:00.000Z",
  "data": {
    "verification": {
      "id": "00000000-0000-0000-0000-000000000000",
      "status": "VERIFIED",
      "flowId": "00000000-0000-0000-0000-000000000000",
      "flowName": "Test flow",
      "sessionId": "00000000-0000-0000-0000-000000000000",
      "referenceId": "test",
      "metadata": null,
      "startedAt": "2026-08-25T14:02:00.000Z",
      "endedAt": "2026-08-25T14:02:00.000Z",
      "steps": [
        { "name": "document_verification", "status": "VERIFIED" },
        { "name": "biometric_verification", "status": "VERIFIED" }
      ]
    }
  }
}

Manéjalo explícitamente: verifica la firma como siempre, y luego devuelve 200 sin tocar el estado de tu negocio.

Orden

No se garantiza que los eventos lleguen en orden: un verification.submitted reintentado puede caer después de verification.succeeded. Guía tu lógica por type y data.verification.status, no por la secuencia de llegada. createdAt te da el orden real si lo necesitas.

Relacionado

En esta página