Skip to main content
GET
Consultar Webhooks
Auth: TokenAccount o TokenInstanceRate limit: Global (100/min) • Idempotente:

Descripción

Endpoint de lectura. Sin query, retorna todos los webhooks (habilitados y deshabilitados) de la instancia. Con ?label=<name>, retorna el único webhook con ese label (o 404).

Ejemplos

Listar todos

Sin query string, retorna el array webhooks[] con todos los webhooks de la instancia (habilitados y deshabilitados), ordenados alfabéticamente por label.

Uno específico

Pasando ?label=analytics-pipeline, retorna solo el webhook con ese label en el campo webhook del envoltorio (o 404 si no existe).

Default explícito

Obtiene el webhook default pasando ?label=default. Útil cuando creaste el webhook sin especificar un label y quieres leer solo esa entrada en lugar de la lista completa.

Respuesta exitosa

Sin ?label=, retorna webhooks[] (ordenados alfabéticamente por label, siempre presente, regresa como [] si no existe ningún webhook, y también incluye los que tienen enabled=false para inspección operacional). Con ?label=<name>, retorna el objeto único en webhook (misma forma que POST). El authorization se descifra cuando ENCRYPTION_KEY está configurado; si la clave fue rotada y algún valor no puede descifrarse, el campo se retorna cifrado en lugar de fallar la solicitud.
200 OK (list, no ?label=)
200 OK (?label=analytics-pipeline)
array
Presente solo cuando no hay ?label=. Ordenado alfabéticamente por label. Siempre se retorna incluso cuando no existe ningún webhook (webhooks: []).
object
Presente solo cuando se usa ?label=<name>. Misma forma que POST.

Parámetros de ruta

string
requerido
Nombre de la instancia.

Cabeceras

string
requerido
TokenAccount o TokenInstance.

Parámetros de consulta

string
Cuando está presente, retorna un único webhook (webhook en el envoltorio). Cuando está ausente, retorna la lista (webhooks[]).Pasar ?label= (vacío) sigue considerándose “presente” → se convierte en "default" y busca la fila con ese label.
  • El listado incluye enabled=false, los operadores ven el historial completo. Para listar solo los activos, filtra del lado del cliente por w.enabled === true.
  • authorization descifrado: si ENCRYPTION_KEY está configurado y el valor está cifrado en reposo, el repositorio lo descifra antes de retornar. Si la clave fue rotada y un valor no puede descifrarse, el campo se retorna cifrado (con una advertencia en el log) en lugar de fallar la solicitud.

Entrega: cola, retry, DLQ

La entrega del webhook es asíncrona y persistida. Cada evento que coincide con un webhook se encola en webhook_queue y es procesado por workers paralelos.

Flujo

Backoff exponencial

Después de max_attempts (default 5), status se vuelve failed (DLQ). La fila no se elimina automáticamente, los operadores pueden inspeccionar last_error y reencolar manualmente (UPDATE webhook_queue SET status='pending', next_retry_at=now()).

Tabla webhook_queue (resumen ops)

Cabeceras entregadas

Cada POST a tu webhook llega con:
No hay HMAC automático. La validación del origen es responsabilidad del consumidor, configura un authorization (Bearer token, API key) y valídalo en tu endpoint.

Errores

Envoltorio:

Siguiente

Configurar webhook

POST /api/events/webhook/:instance

Catálogo de eventos

Esquemas de los 6 tipos de eventos.