Inspection Link
El inspection link (también llamado magicLink) es el enlace que permite a cualquier usuario poder realizar la inspección.
Autoinspector provee diferentes canales para distribuir dicho link. Los canales que se encuentran actualmente soportados son:
- wsp (WhatsApp)
- sms
Actualizaciones estado de entrega
Cuando una inspección se crea con un canal de entrega administrado por Autoinspector, puedes suscribirte al evento webhook inspection_link_status_updated para recibir actualizaciones sobre el estado de entrega del enlace de inspección.
Este evento se emite cada vez que Autoinspector registra un cambio relevante en la entrega del magicLink, por ejemplo cuando el mensaje fue enviado, entregado, abierto, falló o quedó programado para reintento.
Puedes ver la estructura completa del payload en la API Reference.
El payload incluye la inspección y un objeto delivery normalizado:
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "email",
"status": "opened",
"updatedAt": "2026-06-25T18:05:24.255Z",
"recipient": "johndoe@gmail.com",
"source": "initializer"
}
}
}Los valores posibles para payload.delivery.status son:
sent: Autoinspector envió el mensaje al proveedor del canal.delivered: el proveedor confirmó la entrega al destinatario.opened: el destinatario abrió o leyó el mensaje.failed: el proveedor informó un fallo de entrega.unsent: Autoinspector no pudo enviar el mensaje por ese canal.reattempt_scheduled: Autoinspector programó un reintento de envío.
No asumas que cada estado aparece una sola vez ni que todos los estados intermedios estarán presentes. Una misma inspección y canal puede generar actualizaciones repetidas, por ejemplo por recordatorios, reenvíos, reintentos o confirmaciones repetidas del proveedor. Usa delivery.updatedAt, delivery.status y, cuando estén presentes, delivery.recipient y delivery.source para ordenar y actualizar el estado en tu sistema.
Los campos delivery.recipient y delivery.source son opcionales. delivery.source identifica el origen que disparó el envío cuando Autoinspector lo tiene registrado, pero muchas confirmaciones posteriores del canal, como delivered, opened o failed, pueden llegar sin source. Algunos eventos unsent también pueden llegar sin recipient.
Un reintento programado para WhatsApp se recibe así:
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {
"policy_id": "POL-10021"
},
"status": "created",
"testing": false,
"delivery": {
"channel": "whatsapp",
"recipient": "+15550101010",
"status": "reattempt_scheduled",
"updatedAt": "2026-06-25T18:11:27.491Z"
}
}
}Para iniciar una entrega por correo, crea la inspección incluyendo una notificación email dentro de notifications:
curl -X POST "$AUTOINSPECTOR_API_URL/v2/inspection" \
-H "x-api-key: $AUTOINSPECTOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "65f8f2c8a4a5b1c2d3e4f5a6",
"assets": [
{
"identifier": "input_vehicle_plate",
"type": "text",
"value": "AB123CD"
}
],
"metadata": {
"policy_id": "POL-10021",
"external_claim_id": "CLM-92811"
},
"notifications": [
{
"channel": "email",
"recipient": "johndoe@gmail.com"
}
]
}'Cuando creas una inspección con entrega por email, Autoinspector intenta enviar el enlace al correo indicado. Puedes recibir estos webhooks para el canal email:
inspection_link_status_updatedcondelivery.channel: "email"ydelivery.status: "sent"cuando el email fue aceptado para envío.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "email",
"recipient": "johndoe@gmail.com",
"status": "sent",
"source": "initializer",
"updatedAt": "2026-06-25T18:05:24.700Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "email"ydelivery.status: "delivered"si el proveedor confirma que el correo llegó al destinatario.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "email",
"recipient": "johndoe@gmail.com",
"status": "delivered",
"updatedAt": "2026-06-25T18:05:24.255Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "email"ydelivery.status: "opened"cuando el destinatario abre el email y se registra la apertura.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "email",
"recipient": "johndoe@gmail.com",
"status": "opened",
"source": "initializer",
"updatedAt": "2026-06-25T18:08:10.120Z"
}
}
}Los eventos sent y delivered pueden llegar en distinto orden porque la confirmación del proveedor y el registro interno del envío son procesos asíncronos. Por ejemplo, una integración puede recibir delivered, luego sent y más tarde opened para una misma inspección. Usa delivery.updatedAt y delivery.status para ordenar y representar el estado más reciente en tu sistema.
Si el proveedor informa un fallo temporal, puedes recibir reattempt_scheduled antes de un nuevo sent. Si el envío no puede completarse, recibirás failed o unsent según el tipo de fallo registrado.
Algunos clientes de correo desactivan o limitan el seguimiento de lectura, por lo que opened debe interpretarse como una señal útil de lectura, no como una garantía absoluta.
Para iniciar una entrega por WhatsApp, crea la inspección incluyendo una notificación wsp dentro de notifications:
curl -X POST "$AUTOINSPECTOR_API_URL/v2/inspection" \
-H "x-api-key: $AUTOINSPECTOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "65f8f2c8a4a5b1c2d3e4f5a6",
"assets": [
{
"identifier": "input_vehicle_plate",
"type": "text",
"value": "AB123CD"
}
],
"metadata": {
"policy_id": "POL-10021",
"external_claim_id": "CLM-92811"
},
"notifications": [
{
"channel": "wsp",
"recipient": "+15550101010"
}
]
}'Cuando creas una inspección con entrega por wsp, Autoinspector intenta enviar el enlace mediante WhatsApp. La secuencia más común de webhooks es:
inspection_link_status_updatedcondelivery.channel: "whatsapp"ydelivery.status: "sent"cuando el mensaje fue aceptado para envío.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "whatsapp",
"recipient": "+15550101010",
"status": "sent",
"source": "initializer",
"updatedAt": "2026-06-25T18:10:39.199Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "whatsapp"ydelivery.status: "delivered"cuando WhatsApp confirma la entrega al teléfono del destinatario.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "whatsapp",
"recipient": "+15550101010",
"status": "delivered",
"updatedAt": "2026-06-25T18:10:41.730Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "whatsapp"ydelivery.status: "opened"cuando WhatsApp informa que el mensaje fue leído.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "whatsapp",
"recipient": "+15550101010",
"status": "opened",
"updatedAt": "2026-06-25T18:10:47.759Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "whatsapp"ydelivery.status: "failed"si WhatsApp informa que el mensaje no pudo entregarse después del envío.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "whatsapp",
"recipient": "+15550101010",
"status": "failed",
"updatedAt": "2026-06-25T18:10:59.284Z"
}
}
}Si el destinatario no tiene WhatsApp o el proveedor rechaza el envío por una condición relacionada con el destinatario, puedes recibir unsent para delivery.channel: "whatsapp" y luego una nueva actualización para el canal alternativo, normalmente delivery.channel: "sms" con delivery.status: "sent".
Los eventos de entrega dependen de las confirmaciones del proveedor. Tu integración debe usar delivery.updatedAt como tiempo del cambio y no asumir que todos los estados intermedios siempre estarán presentes.
SMS
Para iniciar una entrega por SMS, crea la inspección incluyendo una notificación sms dentro de notifications:
curl -X POST "$AUTOINSPECTOR_API_URL/v2/inspection" \
-H "x-api-key: $AUTOINSPECTOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "65f8f2c8a4a5b1c2d3e4f5a6",
"assets": [
{
"identifier": "input_vehicle_plate",
"type": "text",
"value": "AB123CD"
}
],
"metadata": {
"policy_id": "POL-10021",
"external_claim_id": "CLM-92811"
},
"notifications": [
{
"channel": "sms",
"recipient": "+15550101010"
}
]
}'Cuando creas una inspección con entrega por sms, o cuando Autoinspector usa sms como canal alternativo después de un fallo en WhatsApp, puedes recibir estos webhooks. En un fallback desde WhatsApp, el canal sms puede avanzar a sent y delivered, o puede terminar en unsent si tampoco pudo enviarse por SMS:
inspection_link_status_updatedcondelivery.channel: "sms"ydelivery.status: "sent"cuando el SMS fue aceptado para envío.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "sms",
"recipient": "+15550101010",
"status": "sent",
"source": "initializer",
"updatedAt": "2026-06-25T18:12:10.779Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "sms"ydelivery.status: "delivered"si el proveedor confirma que el SMS llegó al teléfono del destinatario.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "sms",
"recipient": "+15550101010",
"status": "delivered",
"updatedAt": "2026-06-25T18:12:28.652Z"
}
}
}inspection_link_status_updatedcondelivery.channel: "sms"ydelivery.status: "unsent"si Autoinspector no pudo enviar el mensaje por ese canal.
{
"event": "inspection_link_status_updated",
"payload": {
"_id": "6a3d6dd978df011206efcf98",
"magicLink": "https://app.autoinspector.ai/inspection/6a3d6dd978df011206efcf98?accessCode=1074",
"accessCode": "1074",
"metadata": {},
"status": "created",
"testing": false,
"delivery": {
"channel": "sms",
"status": "unsent",
"source": "fallback",
"updatedAt": "2026-06-25T18:15:02.608Z"
}
}
}El canal sms no informa aperturas del enlace desde el proveedor de mensajería. Si necesitas saber que el usuario avanzó con la inspección, debes escuchar los eventos propios del ciclo de vida de la inspección, por ejemplo inspection_started o inspection_completed.
Custom Channel
Si los canales para enviar el link que proporciona Autoinspector no son suficientes para tu implementación, puedes indicar a Autoinspector que no envíe ninguna notificación. Para este comportamiento, envía notifications como una lista vacía ([]) al crear la inspección.
{
"templateId": "60f021d61234567890000666",
"notifications": []
}En la respuesta, recibirás el link de inspección en el parámetro magicLink. Este enlace permite a cualquier usuario poder realizar la inspección, por lo que lo puedes guardar y distribuirlo por tus propios canales.
Si tu propio canal es tu sitio web o tu app nativa, puedes embeber el magicLink en un iframe o WebView y recibir el evento inspection_client_completed cuando el usuario finalice. Consulta Integrar Inspección App.
INFORMACIÓN SENSIBLE
Asegúrate que el canal por donde envíes el enlace de inspección sea seguro y que el destinatario sea el deseado
Fault Tolerant Mechanism
WhatsApp Fallback
Si una inspección tiene configurado como canal wsp y al momento de enviar el enlace de inspección el destinatario no tiene instalada la aplicación WhatsApp en su teléfono u ocurrió otro error relacionado con el destinatario, Autoinspector intentará enviar el enlace de inspección por el canal sms.

Errores Inesperados
Hay ciertos escenarios en donde el proveedor de mensajería puede fallar al intentar enviar el enlace de inspección. Este error suele ser un problema pasajero y poco común que luego de unos reintentos más tarde se soluciona.
En este contexto, Autoinspector reintentará enviar el mensaje por el canal configurado hasta un máximo de 4 veces con 30 minutos de diferencia entre cada intento.
Si luego de esos 4 intentos el mensaje no pudo ser enviado, Autoinspector enviará el enlace de inspección por el canal alternativo. En el caso de que el canal configurado sea wsp, su canal alternativo es sms.