Source: https://cli.nylas.com/guides/find-meeting-time-cli

# Find a Meeting Time from the Terminal

Finding a slot that works for four people usually means trading messages or squinting at overlaid calendars. The Nylas CLI does the intersection for you: give it the attendees and a duration, and it reads everyone's free/busy and returns the open slots. It works across Google, Outlook, Exchange, iCloud, and Yahoo without per-provider setup, and the JSON output drops straight into a scheduler or an AI agent. This guide shows the find-time and availability commands and how to script around them.

Written by [Hazik](https://cli.nylas.com/authors/hazik) Director of Product Management

Updated June 8, 2026

> **TL;DR:** Run `nylas calendar find-time --participants alice@x.com,bob@x.com --duration 30m --days 7 --json` to get open slots that fit every attendee in the next week. For a raw free/busy view use `nylas calendar availability check --participants... --start... --end... --json`. Both read across five providers with no per-provider API setup, and the JSON feeds a scheduler or agent directly.

Command references used in this guide: [`nylas calendar find-time`](https://cli.nylas.com/docs/commands/calendar-find-time), [`nylas calendar availability`](https://cli.nylas.com/docs/commands/calendar-availability), and [`nylas calendar events create`](https://cli.nylas.com/docs/commands/calendar-events-create).

## How do you find a meeting time from the terminal?

You find a meeting time with `nylas calendar find-time`, passing the attendees and the meeting length. The CLI reads each participant's free/busy, intersects the busy blocks, and returns the open windows long enough for the meeting. Give it `--duration 30m` and `--days 7` and it scans the next week; the result is a list of candidate slots you can book or hand to a person.

This is the calendar equivalent of a set intersection, done server-side across providers. A direct build would query the Google Calendar free/busy endpoint, the Microsoft Graph `getSchedule` action, and CalDAV separately, then reconcile three formats. The CLI returns one normalized answer after a single `nylas auth login`, and emits JSON so a scheduler can pick the first slot programmatically.

```bash
# Open slots that fit all attendees in the next 7 days
nylas calendar find-time \
  --participants alice@example.com,bob@example.com \
  --duration 30m \
  --days 7 \
  --json
```

## How do you read raw free/busy instead of slots?

When you want the busy blocks rather than suggested slots, use `nylas calendar availability check` with explicit start and end times. It returns each participant's busy intervals in the window, which is what you want for rendering a grid or applying your own slot logic — say, only mornings, or 15-minute buffers between meetings. The `availability find` variant takes a duration and returns fitting slots like `find-time`.

Free/busy is privacy-preserving by design: it reports that someone is busy from 2:00 to 2:30, not what the meeting is. That's the same model Google and Microsoft expose — Microsoft Graph documents it as the [getSchedule](https://learn.microsoft.com/en-us/graph/api/calendar-getschedule) action — and it's why you can check a colleague's availability without seeing their event titles. The JSON gives you the intervals; your code decides what counts as a usable slot.

```bash
# Raw busy blocks for a specific window
nylas calendar availability check \
  --participants you@example.com,colleague@example.com \
  --start 2026-06-15T09:00:00Z \
  --end 2026-06-15T17:00:00Z \
  --json

# Or ask for fitting slots of a given length
nylas calendar availability find \
  --participants alice@example.com,bob@example.com --duration 30 --json
```

## How do you book the slot you found?

Once you have a slot, book it with `nylas calendar events create`, passing the start, end, title, and participants. Chaining find-time to create turns “when can we meet?” into a booked event in two commands. In a script, take the first slot from the find-time JSON and feed its start and end straight into the create call.

Creating an event with participants sends each attendee a standard iCalendar invite, so booking and inviting are one step. Add `--meeting-link` to attach a video conferencing link to the event. The same create command works across all five providers, so your scheduling logic never branches on whether the organizer is on Google or Outlook.

```bash
# Book the chosen slot and invite the attendees
nylas calendar events create \
  --title "Project sync" \
  --start 2026-06-15T14:00:00Z \
  --end 2026-06-15T14:30:00Z \
  --participants alice@example.com,bob@example.com \
  --meeting-link
```

## Next steps

- [Check calendar availability](https://cli.nylas.com/guides/check-calendar-availability-cli) — free/busy basics from the CLI
- [Schedule across time zones](https://cli.nylas.com/guides/schedule-across-timezones-cli) — find slots that work in two zones
- [Round-robin scheduling](https://cli.nylas.com/guides/round-robin-scheduling-cli) — distribute meetings across a team
- [Create calendar invites](https://cli.nylas.com/guides/create-calendar-invites-cli) — book and invite in one command
- [RSVP to calendar invites](https://cli.nylas.com/guides/rsvp-to-calendar-invites-cli) — accept or decline from the CLI
- [Full command reference](https://cli.nylas.com/docs/commands) — every flag and subcommand documented
