WhatIsUp.dev
Começar
Esta página ainda só está em inglês.

Webhook deliveries

A delivery is one row in the webhook_deliveries table — one event, one endpoint, one attempt log. It's the read-only mirror of what the worker is doing on your behalf.

List deliveries

GET/v1/webhook-deliveriesBearer · API key

Filter via query params:

ParamEffect
statuspending | success | failed | retrying
eventfilter by event name (e.g. message.received)
instance_idfilter to one instance

Returns up to 100 rows per page, newest first.

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
instance_idstring · uuidrequired · nullable
event`message.received` \| `message.sent` \| `instance.connected` \| `instance.disconnected` \| `qr.updated`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

Get one delivery

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

Returns the single delivery, including its payload if retention hasn't kicked in yet.

{
  "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...",
    "instance_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"
}

The payload field is null for deliveries older than 7 days (success) or 30 days (failed). The metadata sticks around forever — you can always see that a delivery happened, just not always replay its body. If you need longer payload retention, log on your side.

What there isn't

  • Manual retry of a specific delivery. Customers asking for this are usually after a "drain my failed queue" button — talk to us; we can build it without making it footgun-grade.
  • Streaming endpoint. Use /v1/events for live state; this resource is for inspection.