Nylas Calendar API

The Nylas Calendar API allows you to create and manage calendars, and access the events they contain. Nylas uses the same commands to manage calendars across providers, and you can refer to specific calendars using the provider's `calendar_id`. Depending on the provider, a calendar might be accessed by only one person, or shared among several users. Some common calendars might include Personal, Work, or Shared calendars. A calendar might contain overlapping events or conflicting schedules. You can use the [Get Availability endpoint](/docs/reference/api/calendar/post-availability/) to find the best time for an event by identifying time periods that have no conflicting events among all participants. ## Find a calendar ID You must specify a `calendar_id` in all calls you make to the Nylas Calendar API. You can use `primary` to specify the primary calendar associated with a grant, or you can look up the ID of the calendar that you want to work with and use that. For virtual calendars, the `primary` calendar is the first created for a virtual account. You _cannot_ delete a virtual calendar that's designated as `primary`. For iCloud, there is no `primary` calendar. ## Free/Busy information The [Get Free/Busy Schedule endpoint](/docs/reference/api/calendar/post-calendars-free-busy/) is available for all providers, including Virtual Calendars, except for iCloud. The [Get Availability endpoint](/docs/reference/api/calendar/post-availability/) doesn't support the `free_busy` object. ## Virtual calendars Nylas allows you to create virtual calendars for users and resources that might not have calendars on your providers (for example, external contractors or meeting rooms). You can use the Nylas Calendar and Events APIs with the virtual accounts that power virtual calendars, just like you would any other account. Virtual accounts don't provide email or contacts features, so you can't use them with the Email or Contacts APIs. For more information, see [Using virtual calendars](/docs/v3/calendar/virtual-calendars/). ## Metadata on calendars You can add metadata to new and existing calendars by including the `metadata` sub-object in your `POST`, `PUT`, or `PATCH` request. For more information, see the [Metadata documentation](/docs/dev-guide/metadata/). ## Calendar scopes The table below lists the Calendar endpoints and which scopes they require. The table shortens the full scope URI for space reasons, so add the prefix for the provider when requesting scopes. The ☑️ in each column indicates the most restrictive scope you can request for each provider and still use that API. More permissive scopes appear under the minimum option. If you're already using one of the permissive scopes, you don't need to add the more restrictive scope. | Endpoint | Google Scopes`https://www.googleapis.com/auth/...` | Microsoft Scopes`https://graph.microsoft.com/...` | | :------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------ | :----------------------------------------------------- | | **GET** `/calendars`**GET** `/calendars/`**POST** `/calendars/free-busy`**POST** `/calendars/availability` | `/calendar.readonly` ☑️`/calendar` | `Calendars.Read` ☑️`Calendars.ReadWrite` | | **POST** `/calendars`**PUT** `/calendars/`**DELETE** `/calendars/` | `/calendar` ☑️ | `Calendars.ReadWrite` ☑️ | For more information about scopes, see [Using scopes to request user data](/docs/dev-guide/scopes/). ## Calendar activity notifications You can subscribe to the following triggers so Nylas notifies you about changes to your users' calendar data: - `calendar.created` - `calendar.updated` - `calendar.deleted` For more information, see the [Calendar webhook notification schemas](/docs/reference/notifications/#calendar-notifications). ## Microsoft event considerations Microsoft Outlook events are often shared across all calendars in a user's account. If the user creates an event on one of their calendars, you can retrieve it using another calendar ID from their grant.

Operations 7

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /v3/grants/{grant_id}/calendars List a user's calendars · Return all calendars #
Ask an LLM
“What calendars does this connected account have?”
“Can I find calendars that carry a specific metadata key and value?”
Tell an agent
List all calendars for grant {grant}.
Find calendars on {grant} with metadata {metadata_pair}.
POST /v3/grants/{grant_id}/calendars Create a new calendar · Create a calendar #
Ask an LLM
“How do I add a new calendar to a user's account?”
“Can I set a timezone and location when creating a calendar?”
Tell an agent
Create a calendar named {name} for grant {grant}.
Create calendar {name} on {grant} in timezone {timezone}.
GET /v3/grants/{grant_id}/calendars/{calendar_id} Get one calendar's details · Return a calendar #
Ask an LLM
“What are the settings of a user's primary calendar?”
“Can I fetch a single calendar by its ID?”
Tell an agent
Show calendar {calendar} for grant {grant}.
Get the details of calendar {calendar} on {grant}.
PUT /v3/grants/{grant_id}/calendars/{calendar_id} Update a calendar's name, color or details · Update a calendar #
Ask an LLM
“Can I change the color of an existing calendar?”
“Is renaming a user's primary calendar allowed for Microsoft accounts?”
Tell an agent
Rename calendar {calendar} on grant {grant} to {name}.
Set the color of calendar {calendar} on {grant} to {hex_color}.
DELETE /v3/grants/{grant_id}/calendars/{calendar_id} Delete a calendar · Delete a calendar #
Ask an LLM
“Can I delete a secondary calendar from a user's account?”
“Why can't I delete the primary calendar?”
Tell an agent destructive · confirm first
Delete calendar {calendar} from grant {grant}.
Remove the calendar {calendar} on {grant}.
POST /v3/calendars/availability Find open time slots across participants · Get availability #
Ask an LLM
“When are several teammates all free for a 30-minute meeting?”
“Can I get availability slots rounded to the nearest 15 minutes?”
Tell an agent
Find {duration_minutes}-minute slots when {participants} are free between {start_time} and {end_time}.
Check availability for {participants} from {start_time} to {end_time} in {duration_minutes}-minute blocks every {interval_minutes} minutes.
POST /v3/grants/{grant_id}/calendars/free-busy Get free/busy blocks for email addresses · Get free/busy schedule #
Ask an LLM
“Which times are people busy according to their calendars?”
“Can tentative events count as busy in a free/busy lookup?”
Tell an agent
Get the free/busy schedule of {emails} from {start_time} to {end_time} using grant {grant}.
Show busy blocks for {emails} between {start_time} and {end_time} via {grant}, counting tentative as busy.

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nylas:nylas-calendar-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nylas-calendar-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Nylas Calendar API
  version: v3
  summary: The complete Nylas v3 API — Email, Calendar, Contacts, Notetaker, Scheduling, Administration, and Migration.
  description: The Nylas API is designed using the REST ideology to provide simple and predictable URIs to access and modify objects. Requests support standard HTTP methods like `GET`, `PUT`, `POST`, and `DELETE`, and standard status codes. Response bodies are always UTF-8 encoded JSON objects, unless explicitly documented otherwise. You can use the Nylas Postman collection to quickly start using the Nylas APIs. For more information, check out the Nylas Postman collection documentation.
  contact:
    url: https://www.nylas.com/
servers:
- url: https://api.us.nylas.com
  description: U.S.
- url: https://api.eu.nylas.com
  description: E.U.
security:
- ACCESS_TOKEN: []
- NYLAS_API_KEY: []
tags:


# --- truncated at 32 KB (114 KB total) ---
# Full source: https://artifacts.apis.io/nylas/openapi/nylas-calendar-api-openapi.yml