canonical: https://jentic.com/apis/graph.microsoft.com/graph-microsoft

# Microsoft Azure Outlook Calendar

The Microsoft Graph Outlook Calendar API exposes the calendar resources of a Microsoft 365 mailbox through the unified Microsoft Graph endpoint, letting applications read and write calendars, events, recurring meetings, and free/busy data for users and groups. It supports operations across the default calendar, secondary calendars, and calendar groups, and includes the getSchedule action for finding availability across multiple attendees. Authentication uses Azure AD OAuth 2.0 with delegated or application permissions such as Calendars.Read and Calendars.ReadWrite.

## For AI agents

Read, create, and update calendar events for Microsoft 365 users, list available calendars, and check attendee availability with getSchedule.

## Scope

Does not handle email sending, contacts management, Teams chat, or task lists - use for Outlook calendar reads and writes only.

## Capabilities

- List the calendars and calendar groups owned by a Microsoft 365 user
- Create a meeting with attendees, start time, and online Teams link on a user's calendar
- Retrieve a calendar view filtered by a start and end date range
- Look up free and busy time blocks for multiple attendees with getSchedule
- Update or cancel an existing event by its identifier
- Manage events on a specific named calendar via `/me/calendars/{calendarId}/events`

## Use cases

### Automated Meeting Scheduling for Sales Reps

Sales operations teams use the Outlook Calendar API to programmatically place discovery calls on a rep's calendar after a lead books through a web form. The integration creates the event, attaches a Teams link, and invites the prospect. Building this directly against Microsoft Graph typically takes a developer two to four days because of OAuth consent flow, refresh tokens, and timezone handling.

Example prompt: Create an event on the default calendar titled 'Discovery Call' for tomorrow at 14:00 UTC for 30 minutes with attendee prospect@example.com and an online Teams meeting

### Cross-Team Availability Lookup

Project managers building scheduling assistants use the getSchedule action to check free and busy windows across multiple Microsoft 365 mailboxes in a single call, avoiding the overhead of polling each calendar individually. The response returns availability windows for each attendee inside a chosen time range with configurable interval granularity.

Example prompt: Call getSchedule for five attendees over the next three business days at 30-minute intervals and return the first common free slot

### Calendar Sync into a Custom Application

Productivity tools that surface work calendars inside their own UI use the calendarView endpoint to pull a windowed list of events including expanded recurrences, then refresh on a schedule or via change notifications. The endpoint accepts startDateTime and endDateTime query parameters and returns occurrences as discrete events.

Example prompt: Fetch all events from `/me/calendar/calendarView` for the next 14 days and store them in a local database

### Agent-Driven Calendar Assistant via Jentic

An AI assistant uses Jentic to discover the Outlook Calendar operations matching a user's intent, load the schema, and execute the call without the agent author writing Microsoft Graph plumbing code. Credentials stay in your Jentic One instance so the agent never holds the user's access token.

Example prompt: Search Jentic for 'create a calendar event in outlook', load the schema, and execute it with the user's natural-language meeting request

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/me/calendars` | List the user's calendars |
| GET | `/me/calendar/events` | List events on the default calendar |
| POST | `/me/calendar/events` | Create an event on the default calendar |
| POST | `/me/calendars/{calendarId}/events` | Create an event on a specific calendar |
| GET | `/me/calendar/calendarView` | Get a windowed view of event occurrences |
| POST | `/me/calendar/getSchedule` | Look up free/busy availability for attendees |

## Key resources

- **calendars** — List, read, and manage the user's calendars and calendar groups
- **events** — Create, update, and cancel events on the default or a named calendar
- **calendarView** — Retrieve a windowed list of event occurrences expanded from recurring series
- **getSchedule** — Look up free and busy availability across multiple mailboxes in one call

## Why Jentic

- **Setup:** Wiring Outlook Calendar on Microsoft Graph by hand means running the OAuth2 flow, carrying the bearer token, and mapping the `/me/calendars` and `/me/calendar/events` paths yourself. Through Jentic you install once, import Outlook Calendar from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Microsoft Graph puts the calendar id in the URL path (`/me/calendars/{calendarId}/events`, `/me/calendars/{calendarId}/calendarView`), so a rule can pin your agent to one calendar: it can read the calendar view and create events on that calendar and nothing else. You choose the operations it may call, so ones like deleting an event are not included unless you add them.
- **Credential handling:** Your Outlook Calendar OAuth2 credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list upcoming calendar events' or 'check free time before booking a meeting', and Jentic returns the matching Outlook Calendar operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Google Calendar API** — Equivalent calendar API for Google Workspace mailboxes
- **Gmail API** — Send meeting follow-up email after creating a calendar event
- **Microsoft Graph** — Same Microsoft Graph endpoint exposes mail, contacts, and Teams alongside calendar

## FAQ

### What authentication does the Outlook Calendar API use?

The API accepts Azure AD OAuth 2.0 access tokens or HTTP bearer tokens via the standard Microsoft Graph authentication flow. Scopes such as Calendars.Read or Calendars.ReadWrite must be granted at consent time. Through Jentic the user's tokens are stored encrypted in your Jentic One instance and the agent only receives a scoped, short-lived credential to call the API.

### Can I create recurring events through the Outlook Calendar API?

Yes. POST to `/me/calendar/events` or `/me/calendars/{calendarId}/events` with a recurrence pattern (daily, weekly, monthly) and range, and the calendar will materialise occurrences. To read the expanded series back, query `/me/calendar/calendarView` with startDateTime and endDateTime instead of /events, because /events returns the master series only.

### What are the rate limits for the Outlook Calendar API?

Microsoft Graph applies per-app, per-tenant, and per-mailbox throttling for Outlook resources. The current published guidance is 10,000 requests per 10 minutes per app per mailbox for outlook services. When throttled the API returns HTTP 429 with a Retry-After header, which Jentic surfaces to the agent so it can back off and retry.

### How do I check whether several people are free for a meeting through Jentic?

Search Jentic for 'check outlook calendar availability', load the operation that maps to `/me/calendar/getSchedule`, and execute it with the list of attendee email addresses, a start and end window, and an interval in minutes. The response returns availabilityView strings for each attendee that you can intersect to find common free time.

### Does this API let me access another user's calendar?

Yes, by replacing /me with `/users/{id`|userPrincipalName} in the path, provided the calling app has been granted application permissions or delegated access to that mailbox. Shared calendars accessed via delegation appear under the owning user's /calendars collection once the share is accepted.

### How is Outlook Calendar typically used by AI agents through Jentic?

Agents use Jentic to discover the right operation by intent (for example 'schedule a meeting'), load the JSON schema, and execute the call with structured parameters. Common flows include creating events on `/me/calendar/events`, reading a date range from `/me/calendar/calendarView`, and cancelling by id. Get started with Jentic One, the self-hosted execution layer.

### Can I limit what my agent is allowed to do with the Outlook Calendar API?

Yes. Because you run Jentic One yourself, you decide which Outlook Calendar operations your agent may call and which credential it uses. Since Microsoft Graph carries the calendar id in the path (`/me/calendars/{calendarId}/events` and `/me/calendars/{calendarId}/calendarView`), your own rules can pin the agent to a single calendar so it only reads that calendar view and creates events there. Operations you do not grant, such as deleting an event, stay off limits unless you explicitly add them.
