Guide
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 Director of Product Management
Command references used in this guide: nylas calendar find-time, nylas calendar availability, and nylas 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.
# 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 \
--jsonHow 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 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.
# 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 --jsonHow 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.
# 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-linkNext steps
- Check calendar availability — free/busy basics from the CLI
- Schedule across time zones — find slots that work in two zones
- Round-robin scheduling — distribute meetings across a team
- Create calendar invites — book and invite in one command
- RSVP to calendar invites — accept or decline from the CLI
- Full command reference — every flag and subcommand documented