Events & Attempts

Understand how events are stored, lifecycle states, and how delivery attempts are recorded.

Event Lifecycle

Every webhook that hits Bunnylynk progresses through clear lifecycle stages:

  1. Ingested (ACCEPTED): Stored durably on disk; HTTP response returned to sender.
  2. Queued (QUEUED): Matched to an active connection and pending delivery.
  3. Delivering (IN_FLIGHT): Currently executing HTTP POST against the destination.
  4. Delivered (SUCCESS): Destination responded with HTTP 2xx.
  5. Retrying (RETRYING): Destination returned an error or timed out; next retry scheduled.
  6. Failed / Dead-Lettered (FAILED): Exhausted all retries; waiting for manual replay or intervention.

Event Anatomy

An Event record contains:

  • id: Unique event ID (e.g. evt_01JMWP3KV9QZ).
  • source_id: The source that received the webhook.
  • payload: Exact raw request body received from the sender.
  • headers: Map of incoming HTTP request headers.
  • created_at: High-precision timestamp when the payload was written to storage.

Delivery Attempts

For every execution against a destination, Bunnylynk creates an immutable Attempt record containing:

  • status_code: HTTP response status code (e.g. 200, 500, 429).
  • duration_ms: Latency of the destination response in milliseconds.
  • response_body: Truncated preview of the destination response.
  • error_message: Network-level error if the connection failed (e.g. ECONNREFUSED, ETIMEDOUT).

Querying Events via API

curl -X GET "https://api.bunnylynk.com/v1/events?source_id=src_01JM89K2PQR&limit=20" \
  -H "Authorization: Bearer $BUNNYLYNK_API_KEY"

Next: Explore Reliability & Delivery Policies.