List Calendar Events
Changed onLists calendar events (time off, holidays, birthdays, and anniversaries) overlapping the requested date range. Events are sorted by start ascending, then type ascending (ANNIVERSARY, BIRTHDAY, HOLIDAY, TIME_OFF), then id ascending. TIME_OFF events represent approved requests only. Events the caller cannot view are silently omitted.
OAuth Scopes: calendar:events
Request
- Base URLhttps://companySubDomain.bamboohr.com
- Auth
- HTTP basic
- or OAuth 2Authorization code/authorize.phpToken URL/token.phpScopescalendar:events
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Query parameters
Inclusive start date (YYYY-MM-DD). Interpreted in the company timezone.
Inclusive end date (YYYY-MM-DD). Must be on or after start; the range must span less than one year.
OData filter expression applied to calendar events. Supported operators: eq (equals), in (value in list), and (combine clauses). Filterable fields: type (one of TIME_OFF, HOLIDAY, BIRTHDAY, ANNIVERSARY), employeeId (int), department (int), division (int), location (int). Per-employee filters have no effect on HOLIDAY events. Example: type in ('TIME_OFF','HOLIDAY') and department in (10,20).
When true, restrict employee-bound events to the caller's direct reports. HOLIDAY events are unaffected. Callers with no direct reports receive an empty result for employee-bound types.
When true, embed a persons map (keyed by employee id) alongside the events.
The page number to retrieve.
The number of items to return per page.
Response
A paginated list of calendar events.
Example response
{
"data": [
{
"id": "12345",
"start": "2026-05-04",
"end": "2026-05-08",
"employeeId": 42,
"timeOffTypeId": 7
}
],
"meta": {
"page": 1,
"pageSize": 100,
"totalPages": 1,
"totalItems": 37
}
}Changes
- info
endpoint added
- info