Events
Your webhook delivery log — inspect and redeliver
Self-serve debugging for your integration: every webhook delivery is queryable, and failed/delivered events can be re-sent.
GET /events
Query params: type (e.g. pricing.calculated), status (pending|processing|delivered|failed), limit, cursor. Items:
curl -H "Authorization: Bearer $WF_API_KEY" \
"https://app.winfactor.app/api/v1/events?status=failed&type=quote.sent"{
"id": "k99…", "type": "quote.sent", "entityType": "quote", "entityId": "k61…",
"status": "delivered", "attempts": 1, "maxAttempts": 3, "lastError": null,
"scheduledFor": 1781100500000, "deliveredAt": 1781100501200,
"createdAt": 1781100500000
}| Field | Notes |
|---|---|
type | Event name as delivered to your webhook (quote.sent, pricing.calculated, lead.created, …) |
entityType / entityId | The subject record (quote, submission, lead, …) — join back via the matching resource endpoint |
attempts / maxAttempts | Delivery attempts used vs. budget; failed means the budget is exhausted |
lastError | Last delivery failure (HTTP status or transport error), null if none |
scheduledFor | When the next/last attempt was due (Unix ms) |
deliveredAt | First successful delivery, null until then |
GET /events/{id}
Adds the event payload. Secret-bearing fields (the pricing callback block with its capability token) are redacted — payloads from this read surface can never yield write credentials.
POST /events/{id}/redeliver
Re-enqueues a delivered or failed event through the normal delivery pipeline with a fresh retry budget — your recovery tool after an endpoint outage. Pricing events mint a new capability token at dispatch, so redelivered callbacks work.
Returns 200 { "redelivered": true }, or 409 already_in_flight if the event is currently pending/processing.