
API integration for Outlook
We build your Outlook connector
We go through Microsoft Graph to write into the Outlook calendar, process a shared mailbox and book a room. The legacy Outlook REST API is gone.
- Senior product team
- Graph connectors in production
- from scoping to monitoring
What does the Outlook API provide and why connect Microsoft email and calendar to your application?
Outlook is the reference email and calendar system for companies on Microsoft 365. Integration via Microsoft Graph lets your application write events into your employees' calendars, read availability to schedule a meeting, or automatically process emails received in a shared inbox without manual monitoring. You integrate it when meeting confirmations or notifications need to appear directly in the tool that teams open first thing in the morning, without copying information from one tool to another.
What our clients build on Graph for Outlook
Appointment and room in the same call
The product writes the event and adds the room as an attendee. getSchedule has checked the clash before confirmation.
Multi-attendee slots without a home-grown solver
findMeetingTimes accounts for availability and room constraints. You query Graph instead of rebuilding a solver.
Shared mailbox that opens the file
Mail on orders@ or support@ opens the ticket, attaches files, sends the ack. No more human watch on a shared inbox.
EWS to Graph before 2026
Inventory from usage reports, RBAC scope, cutover before the EWSEnabled switch. A dated project, not an option.
What this changes in your Outlook day
The engineering serves a measurable result: no double entry, a processed mailbox, EWS that does not blow up in 2026.
Your teams stay in Outlook
The product writes where sales and technicians already look. You do not impose a second calendar.
Rooms stop being a spreadsheet
Booking a resource is adding an attendee. Fewer double-booked rooms, vehicles, pieces of kit.
The shared mailbox becomes a flow
Mail triggers the business. Fewer forgotten messages in orders@, fewer attachments lost in a thread.
EWS has an end date
1 October 2026, EWSEnabled goes False for tenants still Null. April 2027, final stop. We price the migration on the inventory, not on a guess.
How we deliver your Outlook connector
Scoping
Calendar, mail, or both. Which mailboxes, which RBAC, EWS still in play or not. Entra permissions are settled before a line of code.
Development
calendarView rather than a home-grown expansion, subscriptions renewed at mid-life, delta as a safety net, limiter per mailbox (4 concurrent, 10,000 / 10 min).
Acceptance
Room clash, subscription expiry, 429 Retry-After, a wide permission that cancels RBAC, outlook.com vs tenant. Replay before cutover.
Monitoring
Alert on a dead subscription, reauthorizationRequired, 429 per mailbox. An access log a CIO can defend. You see the cut before sales does.
What Microsoft Graph allows for Outlook
- Calendar and bounded views
- events, calendar, calendarGroup. calendarView bounded by startDateTime and endDateTime. reminderView for a lighter calendar. accept, tentativelyAccept, decline.
- Availability and rooms
- getSchedule for free/busy, findMeetingTimes for a multi-attendee slot. A room is an emailAddress; the place API lists tenant rooms.
- Mail and folders
- messages, mailFolder, mailSearchFolder, messageRule, attachments. A shared mailbox is a Graph resource, not an Outlook export.
- Change subscriptions
- POST /subscriptions on messages, events, contacts. 1,000 active subscriptions per mailbox, all apps combined. Webhook, Event Hubs or Event Grid.
Graph vocabulary for Outlook
- calendarView
- Time-bounded occurrence list. The sane way to read recurrences. Expanding RRULE on the client is the slow, wrong path.
- findMeetingTimes
- Graph action that proposes slots from availability and rooms. Work accounts only. A trial on outlook.com proves nothing.
- RBAC for Applications
- Exchange Online guardrail to limit an app to a mailbox scope. A tenant-wide Mail.Read in Entra ID overrides that restriction: permissions are additive.
- EWSEnabled
- Tenant property. On 1 October 2026 (or shortly after), Null becomes False and blocks EWS for every app. Populate EWSAllowedAppIDs before the end of August 2026 for a stay.
- Prefer: outlook.timezone
- Without this header, start and end come back in UTC. Store the user time zone and map Windows names to IANA; do not derive it from the server.
- Rich notification
- The payload includes the data, but the subscription lives under 24 hours instead of under seven days. That is an operating cost, not a webhook detail.
The real constraints of Graph for Outlook
Four concurrent requests per mailbox
10,000 calls / 10 minutes / app-mailbox pair, 150 MB of uploads / 5 minutes, four parallel requests. Outlook JSON batching stays capped at four, whichever mailboxes are targeted. dependsOn makes execution sequential.
Subscriptions die in under seven days
A renewal job is not optional. Rich notification: under 24 hours. Handle reauthorizationRequired, and keep delta as a net, or a dead webhook silently empties the flow.
Application mode reads the whole tenant
Without RBAC for Applications, the app sees every mailbox. A concurrent wide permission in Entra ID cancels the restriction. Online archives and public folders have no Graph API.
You cannot share a calendar via the API
canEdit, canShare, isShared can be observed. The sharing act stays human. Rooms, free/busy and findMeetingTimes are work-account only: an outlook.com demo is not a tenant acceptance test.
Microsoft Graph or Google Calendar API?
Two work calendars. The right one follows the client already open in the morning, not the SDK.
| Criterion | Microsoft OutlookThis page | Google CalendarCalendar API v3 |
|---|---|---|
| Typical estate | Microsoft 365, French SMEs and mid-market | Google Workspace |
| Scope of this page | Graph calendar and mail | Calendar only |
| Rooms and solver | place, getSchedule, findMeetingTimes | Freebusy, no Graph rooms |
| Notification | Subscription ≤ 7 days, delta as a net | Push with no body, syncToken re-read |
| Concurrency | 4 requests / mailbox, batch included | 10,000/min project, 600/user |
| Dated debt | EWS cut in 2026-2027 | Quota billing announced for 2026 |
| The right case | Your teams live in Outlook | Your teams live in Google Calendar |
SharePoint and OneDrive files are not here: see the Microsoft 365 page. Calendly and Cal.com carry booking, not the work calendar.
What we measure on an Outlook integration
The other calendar APIs
If not everyone lives in Outlook, these options belong in the scoping conversation.
Microsoft OutlookWe build your Outlook connectorThis page
Google CalendarThe Workspace calendar, syncToken and push with no body.
CalendlyHosted booking, not a work calendar.
Cal.comOpen-source booking engine, self-hostable.We combine Outlook with
The stack around Graph calendar and mail on our projects.
Outlook integration: your questions
In 2026 you no longer call Outlook REST. You register an Entra ID app, request calendar and/or mail permissions, bound the scope with RBAC for Applications if the app must not read the whole tenant, then talk to graph.microsoft.com/v1.0. For calendar: calendarView, getSchedule, event create. For mail: messages and subscriptions. A job renews subscriptions before seven days, delta fills the gaps. The hard part is per-mailbox throttling and additive permissions, not the first GET.
No. Outlook REST API v2.0 and its beta endpoint (outlook.office.com/api/v2.0) were decommissioned on 31 March 2024, after two postponements. After the cut, calls returned HTTP 410 for 60 days, then nothing. Any new or revived Outlook integration goes through Microsoft Graph v1.0. If an existing tool still speaks EWS, that is a separate project, with a distinct 2026-2027 deadline. This is a scoping call, written down before the first request, not an acceptance surprise.
A first useful flow, typically writing events into collaborators' calendars, ships in two to three weeks. Adding getSchedule, rooms, a shared mailbox and stable subscriptions is closer to six to eight weeks. An EWS migration is priced separately, on the tenant's application inventory, not as a flat fee. We scope the perimeter up front and give a firm estimate before we start. This is a scoping call, written down before the first request, not an acceptance surprise.
Yes if a tool (DMS, backup, archive, security, signature) still speaks EWS on Exchange Online. On 1 October 2026, EWSEnabled Null flips to False and blocks EWS for every app on the tenant. A stay exists by populating EWSAllowedAppIDs and setting EWSEnabled to True before the end of August 2026. Full stop on 1 April 2027, with no reactivation. Does not apply to on-premises Exchange Server. Start from EWS usage reports, not from a guess.
Follow the estate. Microsoft 365: Graph, with mail possible on the same token. Workspace: Calendar v3. A mixed estate takes two connectors and a per-person rule. This page does not cover SharePoint or OneDrive (Microsoft 365 page). Calendly and Cal.com do not replace Outlook: they carry booking. This is a scoping call, written down before the first request, not an acceptance surprise. SharePoint and OneDrive stay on the Microsoft 365 page; this one is mail and calendar only.
An Outlook integration project?
Let's talk. 30 minutes to scope calendar, mail, any living EWS, and what Graph really allows, then tell you plainly what is feasible.
Discuss my Outlook project