Skip to content
WhatIsUp.dev

Entregas de webhook

Uma entrega é uma linha na tabela webhook_deliveries — um evento, um endpoint, um log de tentativa. É o espelho somente-leitura do que o worker está fazendo em seu nome.

Listar entregas

GET/v1/webhook-deliveriesBearer · API key

Filtre via query params:

ParamEfeito
statuspending | success | failed | retrying
eventfiltra por nome do evento (ex.: message.received)
channel_idfiltra para um único canal

Retorna até 100 linhas por página, as mais recentes primeiro.

curl -s "$WHATISUP_API/v1/webhook-deliveries?status=failed" \
  -H "Authorization: Bearer $WHATISUP_API_KEY"
Schema · Delivery row
FieldTypeRequiredNotes
idstring · uuidrequired
endpoint_idstring · uuidrequired
customer_idstring · uuidrequired
channel_idstring · uuidrequired · nullable
event`message.received` \| `message.sent` \| `message.reaction` \| `message.status` \| `channel.connected` \| `channel.disconnected` \| `qr.updated` \| `group.created` \| `group.updated` \| `group.participant_added` \| `group.participant_removed` \| `group.admin_promoted` \| `group.admin_demoted` \| `chat.updated` \| `chat.archived` \| `chat.pinned` \| `presence.updated` \| `order.placed` \| `order.cancelled` \| `cart.updated` \| `story.viewed` \| `call.offered` \| `call.terminated` \| `contact.resolved`required
event_idstringrequired
payloadunknownrequired
status`pending` \| `success` \| `failed` \| `retrying`required
attempt_countnumberrequired
last_errorstringrequired · nullable
last_response_statusnumberrequired · nullable
next_attempt_atstring · ISO 8601required · nullable
delivered_atstring · ISO 8601required · nullable
created_atstring · ISO 8601required
updated_atstring · ISO 8601required

Obter uma entrega

GET/v1/webhook-deliveries/:idBearer · API key

Retorna a entrega única, incluindo seu payload se a retenção ainda não tiver entrado em ação.

{
  "id": "dlv_01J...",
  "endpoint_id": "wh_01J...",
  "event": "message.received",
  "event_id": "evt_01J...",
  "status": "success",
  "attempt_count": 1,
  "last_response_status": 200,
  "last_error": null,
  "payload": {
    "event": "message.received",
    "event_id": "evt_01J...",
    "channel_id": "inst_01J...",
    "from": "5511999999999",
    "body": { "type": "text", "text": "hello back" }
  },
  "created_at": "2026-05-01T12:34:56.000Z",
  "delivered_at": "2026-05-01T12:34:57.012Z"
}

O campo payload fica null para entregas com mais de 7 dias (success) ou 30 dias (failed). Os metadados ficam para sempre — você sempre consegue ver que uma entrega aconteceu, só nem sempre dá pra replay do corpo dela. Se precisar de retenção de payload mais longa, faça o log do seu lado.

O que não existe

  • Retentativa manual de uma entrega específica. Clientes que pedem isso geralmente querem um botão de "drenar minha fila de falhas" — fale com a gente; conseguimos construir sem virar um tiro no pé.
  • Endpoint de streaming. Use /v1/events para estado ao vivo; este recurso é para inspeção.