# Why am I seeing free slots during booked events?

This article outlines reasons why an Availability Query may return free slots at times when a participant has booked events.

### The event is on a calendar not included in the query
A participant may have multiple calendars across one or more connected providers. If [calendar_ids](/developers/api/scheduling/availability/index.md) is specified in the query, only events on those calendars contribute to the participant's busy times. If the booked event is on a calendar not included in that list, it will not block availability. You can call [List Calendars](/developers/api/calendars/list-calendars/index.md) to see all calendars connected to an account and verify the right ones are included.

If [`calendar_ids`](/developers/api/scheduling/availability/index.md) is set to an empty array, no calendars are chosen and all events for the participant are ignored. If it is omitted entirely, all calendars for the participant are checked - unless [`managed_availability`](/developers/api/scheduling/availability/index.md) is set to `true`, in which case the calendars are determined by their Availability Rules (see below).

### Managed Availability is scoping which calendars are checked
When [managed_availability](/developers/api/scheduling/availability/index.md) is set to `true` for a participant and [calendar_ids](/developers/api/scheduling/availability/index.md) is omitted in the Availability Query, the calendars used for checking busy times comes from the participant's [Availability Rules](/developers/api/scheduling/availability-rules/index.md) rather than their full calendar profile. If the Availability Rules reference only a subset of calendars, events on other calendars will not block availability, even if they appear as booked in the user's calendar.

See [Managed Availability](/developers/scheduling/managed-availability/index.md) for more information.

### The event’s transparency is set to free
Every event has a [transparency](/developers/api/events/read-events/index.md) value - `opaque` means the event blocks availability, while `transparent` means it does not. You can check this field on events in the relevant time window using [Read Events](/developers/api/events/read-events/index.md).

For Microsoft 365 and Exchange calendars, there is also an [extended_transparency](/developers/api/events/read-events/index.md) field which provides a more granular view - see the parameter reference for a full breakdown of which values are considered free or busy. If [ignored_extended_transparencies](/developers/api/scheduling/availability/index.md) is set in your query, check that the values listed there are intentional, as events matching those values will be treated as free.

### The calendar sync has not completed or the profile is disconnected
When a user first connects their calendar, Cronofy performs an initial sync of their existing events. Until this completes, availability data may be incomplete. You can check [profile_initial_sync_required](/developers/api/identity/userinfo/index.md) and from the [Userinfo](/developers/api/identity/userinfo/index.md) endpoint to see whether the initial sync has completed and whether the profile is still connected.

If a calendar profile becomes disconnected (for example due to invalid credentials), availability data will reflect the last known state. You can check [profile_connected](/developers/api/identity/userinfo/index.md) from the [Userinfo](/developers/api/identity/userinfo/index.md) endpoint to see if the calendar is still connected. In general, we recommend setting up [Push Notifications](/developers/api/push-notifications/index.md) so you can notified via a `profile_disconnected` event as soon as a disconnection occurs.

You can also pass [include_member_statuses](/developers/api/scheduling/availability/index.md) in your Availability Query, which returns a [sync_status](/developers/api/scheduling/availability/index.md) for each participant - a status of `pending` means the initial sync has not finished yet, and `disconnected` means the calendar profile has become disconnected and the data reflects the last known state.

### only_managed_events is set to true
If [only_managed_events](/developers/api/scheduling/availability/index.md) is set to `true` for a participant, only events created by your application are considered when determining busy times. Events the user has created directly in their calendar will be ignored. If external events should also block availability, this should be set to `false` or omitted.

If none of these reasons explain the issue, please email [support@cronofy.com](mailto:support@cronofy.com) with the details of an example query and the affected slot so we can investigate further.


---
[Read in HTML](/developers/faqs/availability/free-slots-during-booked-events/)