Skip to main content
Every event SpherePay creates — and every attempt to deliver it — is recorded and queryable. Use the Events API to audit what happened, diagnose failed deliveries, and re-send any delivery to your endpoint. Dashboard views for browsing and replaying events are coming soon; today these controls live in the API.

List events

Each list item summarizes the event and its most recent delivery:
To find everything that needs attention, filter by status=failed. A responseCode of null on an attempt means your endpoint did not respond at all — a timeout or network error rather than an HTTP error.

Delivery statuses

Retrieve an event

GET /v2/events/{id} returns the full event plus every delivery and every attempt — including the response your endpoint returned:
Each attempt records type (original or replay), attemptedAt, success, responseCode, responseBody (truncated to 200 characters, captured on failures to help you debug), and latencyMs.
If you are holding a Sphere-Delivery-Id header from a delivery you received, that is the delivery’s ID — you can use it to correlate a request hitting your servers with the delivery and attempt records shown here.

Replaying a delivery

SpherePay makes exactly one automatic delivery attempt per event per endpoint — there are no automatic retries. When a delivery fails (your endpoint was down, timed out, or returned an error), you decide when to re-send it with POST /v2/events/replay/{eventDeliveryId}, using the delivery ID (not the event ID):
A replay re-sends the byte-for-byte identical payload to the same endpoint, with a fresh Sphere-Timestamp and Sphere-Signature and the headers Sphere-Delivery-Type: replay and Sphere-Replay-Reason: manual. Your verification code path is identical for originals and replays. A successful replay transitions the delivery to delivered; a failed replay leaves it failed and records another attempt. Either way, the full attempt history is preserved.
Replays are delivered at-least-once on top of whatever your endpoint already received, and you can replay a delivery that already succeeded. Make sure your handler deduplicates on the event id and applies the sequence staleness check so replays are always safe.

Recovering from downtime

If your endpoint was down for a period:
  1. List events with status=failed and createdStart/createdEnd covering the outage window.
  2. Replay each failed delivery via POST /v2/events/replay/{eventDeliveryId}.
  3. Your sequence handling will automatically discard any replayed event that has since been superseded.
Alternatively, because payloads are minimal, you can simply re-fetch the current state of affected resources with their GET endpoints and reconcile directly.
Last modified on August 11, 2026