Event Stream

The event stream is the queryable, pull-based companion to
Webhooks. Instead of receiving events pushed to your server,
you fetch them on demand — ideal for backfills, reconciliation, and audits.

Endpoints

GET /v1/events            # list events (newest first, cursor-paginated)
GET /v1/events/{id}       # a single event

Requires the events.read scope. Events are retained for a 60-day window.

What's in the stream

Activity across your academy — courses, lessons, quizzes, sessions, enrollments,
certificates, memberships, and payments — plus every internal notification and
email sent to students and instructors, each recorded as its specific cause event
notification.<type>.

Filtering

Filter by event type. Subscribe to a specific cause (e.g. one notification
type) or use notification.* for all notifications. The full list of notification
event types is available from GET /constraintsnotification_event_types
(see Discovery).

curl "https://api.dwrrah.com/v1/events?type=session.booked&limit=50" \
  -H "Authorization: Bearer dwr_live_…"

Event shape

{
  "id": "evt_99cc",
  "type": "session.booked",
  "created_at": "2026-03-01T12:00:00Z",
  "api_version": "2026-01-01",
  "academy_id": "ac_4f1b2c3d",
  "data": { }
}
🔁

Prefer webhooks for real-time reactions and the event stream for polling, backfills, and reconciliation. They share the same event shape.


Did this page help you?