Endpoint
Events
Every schedule change Brightloom observes or causes, newest first. This is the endpoint most integrations start with.
GET/v1/events
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| clinic_id | string | Optional | Restrict to one clinic. Omit to return events for every clinic your key can see. |
| type | string | Optional | Filter by event type, for example appointment.cancelled. Repeatable. |
| since | timestamp | Optional | RFC 3339. Returns events created at or after this time. |
| starting_after | string | Optional | Cursor from a previous response’s next_cursor. |
| limit | integer | Optional | 1 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.
recoverableis Brightloom’s judgement at the moment of the event, not a live field. Do not poll it.- Do not use
sincefor reliable delivery — use webhooks. Long gaps combined with high volume can outrun the 100-item page limit.