---
title: "Get busy time slots"
method: GET
path: "/api/me/free-busy"
tags: ["User"]
---

# Get busy time slots

`GET /api/me/free-busy`

## Request

- Base URL: `https://api.wondercal.com`
- URL: `https://api.wondercal.com/api/me/free-busy`
- Auth: HTTP bearer

Returns busy time slots from the authenticated user's blocking-enabled calendars (Google and Microsoft) for a date range. Only calendars with blocking enabled are included. To find OPEN time instead, use GET /api/me/free-time.

## Query parameters

- `start` string, date-time, required
- `end` string, date-time, required

## Response `200`

Busy slots for the requested range

- object
  - `data` FreeBusyData: Payload of GET /api/me/free-busy (wrapped in the top-level `data` field).
    - `start` string, date-time, required: Echoed range start.
    - `end` string, date-time, required: Echoed range end.
    - `busySlots` BusySlot[], required: Busy intervals within the range, from blocking-enabled calendars.
      - `start` string, date-time, required: Busy interval start (ISO 8601).
      - `end` string, date-time, required: Busy interval end (ISO 8601).
      - `title` string, nullable: Event title, or null when unavailable.
      - `calendarId` string, required: ID of the calendar the event belongs to.
      - `eventId` string, required: Calendar event ID. Pass with calendarId to unblock-event tooling.
      - `recurringEventId` string: Present only when this is an instance of a recurring series.

## Other responses

- `400`: Validation error (missing/invalid start or end, or range exceeds 90 days)
- `401`: Not authenticated
- `429`: Rate limit exceeded. The Retry-After header indicates how many seconds to wait before retrying.

---

[API](https://skmtc.dev/wondercal/apis/wondercal-api.md) · [All operations](https://skmtc.dev/wondercal/apis/wondercal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wondercal/apis/wondercal-api/revisions/4889176a380f?raw)
