Free/Busy & Contacts
Check availability across calendars and find events involving specific contacts.
GET
/api/access/calendar/freebusyBearer TokenGet Free/Busy
Returns free/busy periods for calendars within a time range.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| from | DateTimeOffset | Yes | Start of time range |
| to | DateTimeOffset | Yes | End of time range |
| calendars | string | No | Comma-separated calendar IDs to check |
Examples
GET /freebusy?from=2026-02-05T00:00:00Z&to=2026-02-12T00:00:00Z GET /freebusy?from=2026-02-05T00:00:00-06:00&to=2026-02-12T00:00:00-06:00&calendars=123,456 Response 200 OK
{ "calendars": [ { "calendarId": 123, "calendarName": "Team Calendar", "busy": [ { "startUtc": "2026-02-05T14:00:00Z", "endUtc": "2026-02-05T15:00:00Z", "durationMinutes": 60 } ], "free": [ { "startUtc": "2026-02-05T09:00:00Z", "endUtc": "2026-02-05T14:00:00Z", "durationMinutes": 300 } ] } ], "accessInfo": "Results limited to time window: Last 30 days to next 30 days." } FreeBusy Calendar Object
| Field | Type | Description |
|---|---|---|
| calendarId | long | Calendar ID |
| calendarName | string | Calendar display name |
| busy | TimePeriod[] | List of busy time periods |
| free | TimePeriod[] | List of free time periods |
TimePeriod Object
| Field | Type | Description |
|---|---|---|
| startUtc | DateTime | Period start in UTC |
| endUtc | DateTime | Period end in UTC |
| durationMinutes | int | Duration in minutes |
GET
/api/access/calendar/events/by-contactBearer TokenGet Events by Contact
Returns events involving a specific contact, searchable by email or name with partial matching.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | No* | Attendee email (partial match supported) | |
| name | string | No* | Attendee name (partial match supported) |
| limit | int | No | Max results (1–1000, default: 50) |
| offset | int | No | Skip N results for pagination (default: 0) |
*At least one of email or name is required.
Examples
GET /events/by-contact?email=john@example.com GET /events/by-contact?email=@acme.com&limit=20 GET /events/by-contact?name=John&offset=50 GET /events/by-contact?email=@acme.com&name=Smith Response 200 OK
{ "events": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "title": "Meeting with John", "startUtc": "2026-02-05T14:00:00Z", "endUtc": "2026-02-05T15:00:00Z", "attendees": [ { "email": "john@example.com", "name": "John Doe", "response": "accepted" } ] } ], "accessInfo": "Results limited to time window: Last 30 days to next 30 days.", "currentUserCalendarEmail": "user@example.com" }