Los webhooks permiten recibir notificaciones HTTP en tiempo real cuando
ocurren eventos en tu workspace. Solo se entregan eventos para agentes y
suscripciones activas.
Requiere permisos
webhooks:read para consultas y
webhooks:write para crear, actualizar o eliminar. Todos los
endpoints requieren el header X-Workspace-Id.Eventos disponibles
Los webhooks pueden suscribirse a los siguientes eventos:Eventos de Tools
- tool.invoked: Se ejecuta cuando un agente termina de invocar una herramienta y recibe una respuesta.
Eventos de llamadas (Calls)
- call.callStarted: Una llamada de voz comenzó para uno de los agentes del workspace.
- call.callEnded: Una llamada de voz finalizó (incluye URLs de grabación y transcripción).
- call.callMissed: Una llamada no fue contestada antes del timeout.
- call.voicemailReceived: Un interlocutor dejó un mensaje de buzón de voz.
Eventos de WhatsApp
- whatsapp.messageReceived: Un usuario de WhatsApp envió un mensaje entrante al workspace.
- whatsapp.messageDelivered: Un mensaje saliente de WhatsApp llegó al dispositivo del destinatario.
- whatsapp.messageFailed: Un mensaje saliente de WhatsApp falló al entregarse.
- whatsapp.conversationStarted: La plataforma abrió una nueva sesión de conversación de WhatsApp.
- whatsapp.conversationEnded: Una sesión de conversación de WhatsApp existente se cerró.
Seguridad
Todas las entregas de webhook incluyen:- HTTPS requerido: Solo se aceptan URLs HTTPS.
- Firma HMAC-SHA256: Cada request incluye el header
x-signaturecon la firma del payload. - Timestamp: Header
x-timestampcon marca temporal ISO-8601. - Secreto: El secreto se genera automáticamente (mínimo 16 caracteres) o puedes proveer el tuyo.
Verificación de firmas
Para validar que el webhook proviene de Agents Studio, verifica la firma HMAC-SHA256:Gestión de webhooks
Crear webhook
- TypeScript SDK
- cURL
Listar webhooks
- TypeScript SDK
- cURL
Obtener webhook
- TypeScript SDK
- cURL
Deliveries (historial de entregas)
Los deliveries representan cada intento de entrega de un evento a tu endpoint (incluye status, intentos, error y response status).Listar deliveries de un webhook
- TypeScript SDK
- cURL
Obtener un delivery por ID
- TypeScript SDK
- cURL
Actualizar webhook
- TypeScript SDK
- cURL
Eliminar webhook
- TypeScript SDK
- cURL
Gestión de suscripciones
Crear suscripción a evento
- TypeScript SDK
- cURL
Listar suscripciones
- TypeScript SDK
- cURL
Obtener suscripción
- TypeScript SDK
- cURL
Actualizar suscripción
- TypeScript SDK
- cURL
Eliminar suscripción
- TypeScript SDK
- cURL
Estructura de payloads
Evento: call.callEnded
Se dispara cuando una llamada de voz finaliza. Incluye información del objetivo alcanzado, URLs de grabación y transcripción.Evento: call.callStarted
Se dispara cuando una llamada de voz comienza.Evento: tool.invoked
Se dispara cuando un agente termina de ejecutar una herramienta.Evento: whatsapp.messageReceived
Se dispara cuando se recibe un mensaje entrante de WhatsApp.Mejores prácticas
1. Procesar eventos de forma idempotente
Los webhooks pueden ser reenviados en caso de fallos. Asegúrate de que tu endpoint pueda procesar el mismo evento múltiples veces sin efectos secundarios:2. Responder rápidamente
Responde con2xx lo antes posible y procesa el evento de forma asíncrona:
3. Reintentos automáticos
El sistema reintenta entregas fallidas hasta 5 veces con backoff exponencial:- Intento 1: inmediato
- Intento 2: ~1 segundo después
- Intento 3: ~2 segundos después
- Intento 4: ~4 segundos después
- Intento 5: ~8 segundos después
2xx se consideran exitosas.
4. Monitorear entregas
Usa los campossuccessCount, failureCount y lastDeliveryAt del webhook para monitorear la salud:
5. Filtrar por agente
Si solo necesitas eventos de un agente específico, configuraagentId al crear el webhook:
