> ## Documentation Index
> Fetch the complete documentation index at: https://learn.workflow.dog/llms.txt
> Use this file to discover all available pages before exploring further.

# Find Free Time

> Find open periods of a minimum length in a Google Calendar.

The **Find Free Time** action returns gaps between busy periods on one Google
Calendar. Use it to propose appointment windows, locate focus time, or search a
calendar before creating an event.

## Quick start

<Steps>
  <Step title="Choose a search range">
    Set **Starting At** and **Ending At** to bound the search.
  </Step>

  <Step title="Set a minimum duration">
    Enter the shortest useful slot in minutes. The default is `30`.
  </Step>

  <Step title="Choose the calendar and timezone">
    Leave **Calendar ID** empty for the primary calendar and select the
    **Timezone** used for the free/busy request.
  </Step>

  <Step title="Process the slots">
    Use **Free Slots** as a list, or repeat the next workflow steps for each
    slot's **Start** and **End**.
  </Step>
</Steps>

## Inputs

| Input                   | Type            | Required | Description                                                         |
| ----------------------- | --------------- | -------- | ------------------------------------------------------------------- |
| **Third-party account** | Google account  | Yes      | Account used to read free/busy data.                                |
| **Starting At**         | Date            | Yes      | Beginning of the search range.                                      |
| **Ending At**           | Date            | Yes      | End of the search range.                                            |
| **Minimum Duration**    | Number          | No       | Minimum slot length in minutes. Must be at least `1`; default `30`. |
| **Calendar ID**         | String          | No       | Calendar to search. Defaults to `primary`.                          |
| **Timezone**            | Timezone string | Yes      | Timezone supplied to Google for the free/busy query.                |

## Outputs

| Output         | Type               | Description                                      |
| -------------- | ------------------ | ------------------------------------------------ |
| **Free Slots** | List of time slots | Open periods, each with a **Start** and **End**. |

The action sorts busy periods by start time, then returns qualifying open time
before the first conflict, between conflicts, and after the last conflict.
Slots shorter than **Minimum Duration** are omitted rather than shortened or
combined.

<Note>
  The output can be an empty list. That means the selected calendar has no
  qualifying gap inside the requested range.
</Note>

## Example: propose appointment options

Search the acceptable scheduling window, take the first three items from **Free
Slots**, and format their **Start** and **End** values into an availability
message. The recipient can then choose among those options.

## Troubleshooting

<AccordionGroup>
  <Accordion title="No free slots were returned">
    Check that **Ending At** is after **Starting At**, reduce **Minimum
    Duration**, widen the search range, and verify the Calendar ID.
  </Accordion>

  <Accordion title="The results include larger blocks than expected">
    **Minimum Duration** is a filter, not a requested slot size. A two-hour
    opening remains one two-hour slot even when the minimum is 30 minutes.
  </Accordion>
</AccordionGroup>
