Endpoint

Events

Every schedule change Brightloom observes or causes, newest first. This is the endpoint most integrations start with.

GET/v1/events

Parameters

NameTypeRequiredDescription
clinic_idstringOptionalRestrict to one clinic. Omit to return events for every clinic your key can see.
typestringOptionalFilter by event type, for example appointment.cancelled. Repeatable.
sincetimestampOptionalRFC 3339. Returns events created at or after this time.
starting_afterstringOptionalCursor from a previous response’s next_cursor.
limitintegerOptional1 to 100. Defaults to 25.

Request

curl "https://api.brightloom.dev/v1/events?type=appointment.cancelled&limit=1" \
  -H "Authorization: Bearer blk_live_8fk2Qz7mR4tPvXc1"

Response

{
  "data": [
    {
      "id": "evt_8fk2",
      "type": "appointment.cancelled",
      "clinic_id": "cln_4t7q",
      "appointment_id": "apt_91xd",
      "provider_id": "prv_5k2n",
      "starts_at": "2026-08-04T14:20:00Z",
      "duration_minutes": 20,
      "recoverable": true,
      "cancelled_by": "patient",
      "created_at": "2026-07-29T09:14:22Z"
    }
  ],
  "has_more": true,
  "next_cursor": "evt_8fk1"
}

Gotchas

  • Events are immutable. A correction arrives as a new event, never as an edit to an existing one.
  • Retention is 90 days. Anything older must be pulled from your own store.
  • recoverable is Brightloom’s judgement at the moment of the event, not a live field. Do not poll it.
  • Do not use since for reliable delivery — use webhooks. Long gaps combined with high volume can outrun the 100-item page limit.