Webhooks

Recibe notificaciones en tiempo real cuando ocurren eventos en tu cuenta de Auralytik. Registra un endpoint, elige los eventos que te interesan, y enviaremos un payload JSON firmado a tu servidor cada vez que se dispare un evento.

Endpoints

MetodoRutaAlcanceDescripcion
GET/api/v1/webhookswebhooks:manageListar todos los registros de webhooks
POST/api/v1/webhookswebhooks:manageCrear un nuevo webhook (retorna secreto de firma)
PATCH/api/v1/webhooks/{id}webhooks:manageActualizar URL, eventos o estado activo
DELETE/api/v1/webhooks/{id}webhooks:manageEliminar / desactivar un webhook
POST/api/v1/webhooks/{id}/testwebhooks:manageEnviar un evento de prueba al webhook
GET/api/v1/webhooks/{id}/deliverieswebhooks:manageVer historial de entregas y estados

Tipos de Eventos

EventoDescripcion
evaluation.completedEvaluacion finalizo el procesamiento IA
audio.transcribedTranscripcion de audio completada
audio.processedAudio completamente procesado (transcripcion + evaluacion)
voice-call.completedLlamada del voice bot finalizada
export.readyExportacion de analytics lista para descargar
usage.quota_warningUso alcanzo el 80% de la cuota
api-key.rotatedLa clave API fue rotada

Crear un Webhook

curl -X POST https://api.auralytik.ai/api/v1/webhooks \
  -H "X-Api-Key: ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-server.com/webhooks/auralytik",
    "events": ["evaluation.completed", "audio.processed"],
    "description": "Production webhook"
  }'

Respuesta:

{
  "id": "wh_8f3a1b2c",
  "url": "https://your-server.com/webhooks/auralytik",
  "events": ["evaluation.completed", "audio.processed"],
  "description": "Production webhook",
  "active": true,
  "signing_secret": "whsec_k7G2...xQ9",
  "created_at": "2026-03-30T14:22:00Z"
}

Guarda el signing_secret de forma segura -- solo se retorna una vez al momento de la creacion.

Ejemplo de Payload

Cada entrega es un HTTP POST con un cuerpo JSON. La estructura externa es la misma para todos los tipos de eventos; el objeto data varia segun el evento.

{
  "id": "evt_9d4e2f1a",
  "event": "evaluation.completed",
  "timestamp": "2026-03-30T14:25:00Z",
  "data": {
    "evaluation_id": "eval_abc123",
    "engagement_id": "eng_xyz789",
    "campaign": "Customer Support Q1",
    "score": 87,
    "channel": "voice",
    "duration_seconds": 245
  }
}

Verificacion de Firma

Cada entrega de webhook incluye un encabezado X-Webhook-Signature. Siempre verifica esta firma antes de procesar el payload para asegurar que la solicitud proviene de Auralytik y no ha sido alterada.

  1. Lee el cuerpo crudo de la solicitud (no lo parsees primero).
  2. Calcula HMAC-SHA256(signing_secret, raw_body) y codifica el resultado en hexadecimal.
  3. Compara el valor calculado con el encabezado X-Webhook-Signature usando una funcion de comparacion de tiempo constante para prevenir ataques de timing.
  4. Rechaza la solicitud con un estado 401 si las firmas no coinciden.
// 1. Extract signature from header
signature = request.headers["X-Webhook-Signature"]

// 2. Compute expected signature
expected = HMAC_SHA256(signing_secret, request.raw_body)

// 3. Compare using constant-time comparison
if not constant_time_equal(expected, signature):
    return 401  // Reject the request

// 4. Process the event
process(request.body)

Politica de Reintentos

Una entrega se considera exitosa cuando tu servidor responde con un codigo de estado 2xx dentro de la ventana de timeout. Si una entrega falla, reintentamos con backoff exponencial:

IntentoDemoraTimeout
1Inmediato10 s
21 minuto10 s
35 minutos10 s

Desactivacion automatica: Si un webhook falla en todas las entregas durante 7 dias consecutivos, sera desactivado automaticamente. Puedes reactivarlo en cualquier momento a traves de la API o el dashboard.

Listo para comenzar?

Genera una clave API con el alcance webhooks:manage y registra tu primer endpoint.

Solicitar Acceso API