Skip to content

Webhook Deliveries ​

This is the outbound side of webhooks: what MessageEagle tried to send you, and what your endpoint answered. For receiving and acknowledging delivery reports, see Webhooks & Delivery Reports.

ActionRoute
Delivery historyGET /organization/{organizationId}/webhook-deliveries
Replay onePOST /organization/{organizationId}/webhook-deliveries/{deliveryId}/replay
Test an endpointPOST /webhook-test

{organizationId} is the same value you send as X-TenantID.

Delivery history ​

bash
curl "$ME_BASE/organization/$ME_TENANT/webhook-deliveries?status=failed&limit=50" \
  -H "API-Key: $ME_API_KEY" \
  -H "X-TenantID: $ME_TENANT"
QueryFilters by
endpoint_idOne configured endpoint.
event_idOne event.
statusDelivery outcome.
qFree text.
limit, offsetPaging.

Replay ​

Re-send a delivery your endpoint missed — useful after you fix a bug that made it return 5xx.

bash
curl -X POST "$ME_BASE/organization/$ME_TENANT/webhook-deliveries/$DELIVERY_ID/replay" \
  -H "API-Key: $ME_API_KEY" \
  -H "X-TenantID: $ME_TENANT"

Test an endpoint ​

Fire a one-off request at a URL and see exactly what it answers, before you point real events at it.

bash
curl -X POST "$ME_BASE/webhook-test" \
  -H "API-Key: $ME_API_KEY" \
  -H "X-TenantID: $ME_TENANT" \
  -H "Content-Type: application/json" \
  -d '{
        "url": "https://example.com/hooks/me",
        "method": "POST",
        "headers": [{ "key": "X-Secret", "value": "s3cr3t" }],
        "body": { "ping": true }
      }'
json
{
  "success": true,
  "status": 200,
  "statusText": "OK",
  "headers": { "content-type": "application/json" },
  "data": { "ok": true }
}

success is not 2xx

success reports that the request completed, not that your endpoint accepted it. Check status as well.

Allowed methods: GET, POST, PUT, PATCH, DELETE, HEAD.

Go SDK ​

go
history, err := c.Webhooks.ListDeliveries(ctx, &sdk.ListDeliveriesOptions{Status: "failed"})
_, err = c.Webhooks.Replay(ctx, deliveryID)
res, err := c.Webhooks.Test(ctx, &sdk.WebhookTestRequest{URL: url, Method: "POST"})