Los webhooks no se registran desde la API externa: se configuran en la plataforma (o con el equipo de Omniloy) y se asocian a una versión de protocolo. Aquí documentamos los eventos que recibirás y cómo se entregan.
Eventos
Payloads
El payload se construye por evento e incluye el contexto del cuestionario y del protocolo. Las respuestas y las transcripciones tienen la misma forma que devuelven los endpoints de lectura, así que puedes tratarlas con el mismo código vengan de donde vengan.run.status_changed:
answers[] lleva una entrada por pregunta que el cuestionario alcanzó, en el orden en que el paciente las oyó:
question.answered manda esa misma entrada para una sola pregunta, sin las marcas de tiempo ni call_id:
Este evento lleva el valor tal como estaba cuando se capturó, aunque la pregunta se vuelva a contestar después. Por eso no incluye marcas de tiempo ni
call_id: esos viven en una fila que se reescribe al recontestar, y decirlos aquí sería emparejar el momento de una respuesta con el valor de otra. Cuando necesites la foto completa y coherente del cuestionario, léela con GET /v1/protocol-runs/{runId}.Las preguntas y las opciones viajan por clave, no por identificador interno: las claves son estables entre versiones y no cambian si alguien reescribe el enunciado.
Los payloads no incluyen datos personales del paciente salvo cuando el evento lo requiere explícitamente (p. ej.
number.to_verify, que lleva patient_id y phone). Para asociar un run a un paciente, haz join por run.enrollment_id.Autenticación hacia tu endpoint
OlivIA no firma el cuerpo con HMAC. En su lugar, cada webhook se autentica contra tu endpoint con las credenciales que configures. Opciones:
Los secretos se cifran en reposo (AES-256-GCM) y se muestran enmascarados. Protege tu endpoint validando estas credenciales.
Entrega y reintentos
- Entrega best-effort; cada intento se registra.
- Reintentos configurables:
max_retries(0–10) ytimeout_ms(100–60000, def. 10000). - Se reintenta ante errores de red, timeouts y respuestas
5xx. No se reintenta ante4xx. Las redirecciones no se siguen.