Microsoft Exchange supports multiple types of APIs, including:
Microsoft Graph is the recommended REST API for accessing Exchange Online data. It provides REST APIs for mail, calendars, and contacts. New applications designed to access Exchange Online data should use Microsoft Graph.
Exchange Web Services (EWS) is a SOAP-based API that has been widely used for Exchange development. While still supported, Microsoft recommends using Microsoft Graph for new development.
In summary, while Exchange has historically supported SOAP via EWS, Microsoft is moving towards REST APIs with Microsoft Graph as the recommended approach for new Exchange Online development. The choice of API depends on factors like on-premises vs cloud deployment, client platform, and specific functionality needed.
Exchange Online supports webhooks through the Microsoft Graph API.
You can use the Graph API to subscribe to change notifications for events.
The webhook functionality for Exchange Online is available through this endpoint: https://learn.microsoft.com/en-us/graph/api/subscription-post-subscriptions?view=graph-rest-1.0&tabs=http.
On-premises Exchange does not support webhooks directly.
For on-premises Exchange, you need to use Exchange Web Services (EWS) notifications.
EWS supports three types of notifications: push, pull, and streaming.
You can read more about EWS notifications here: https://learn.microsoft.com/en-us/exchange/client-developer/exchange-web-services/notification-subscriptions-mailbox-events-and-ews-in-exchange.
For Exchange Online (using Graph API), you can subscribe to various events, including changes to calendars, emails, and other mailbox items.
With EWS (for on-premises Exchange), you can subscribe to mailbox events, but the notifications are more limited compared to Graph API.
EWS notifications generally just inform you that something has been modified, without providing detailed delta information.
If you're building a new application and all your clients are on Office 365, it's recommended to use Graph API for webhooks and delta queries.
If you have a mix of on-premises and Office 365 mailboxes, you may need to implement both EWS (for on-premises) and Graph API (for Office 365) solutions.
While you can use EWS against Exchange Online, it's not recommended and may be discontinued in the future.
For calendar synchronization, Graph API provides a more advanced implementation that handles recurrence better than EWS.
In summary, the official Microsoft Exchange API does have webhook support, but it depends on whether you're using Exchange Online (Office 365) or on-premises Exchange. Exchange Online supports webhooks through the Graph API, allowing you to subscribe to various mailbox events. On-premises Exchange relies on EWS notifications, which are more limited but still provide event notification capabilities.
Here are the key points about API rate limits for the Microsoft Exchange API and Microsoft Graph:
Microsoft Graph has a global limit of 130,000 requests per 10 seconds per app across all tenants.
For Outlook/Exchange resources specifically, there are limits applied per mailbox:
The general throttling limit for Microsoft Graph API is 10,000 requests every 10 minutes per user per app.
This limit applies to each user separately, even if using the same user to access multiple mailboxes.
So if you are using one signed-in user to access multiple mailboxes, the 10,000 request limit applies in total across all mailboxes accessed by that user, not per individual mailbox.
For Microsoft Teams, there are limits like 30 requests per second per app.
OneNote has limits of 120-240 requests per minute depending on context.
Identity and access reports have a limit of 5 requests per 10 seconds per app per tenant.
Monitor your application's usage and implement caching, query optimization, etc. to avoid hitting limits.
For large data sets, use filtering and pagination to limit data returned per request.
Implement proper error handling for 429 (Too Many Requests) responses.
Consider using multiple user accounts to distribute load if accessing many mailboxes.
The key takeaway is that the 10,000 request per 10 minute limit applies in total to the signed-in user across all mailboxes accessed, not individually per mailbox. Proper monitoring and optimization is important to stay within the limits when accessing multiple mailboxes.
Based on the search results, here are the key points about the most recent version of the Microsoft Exchange API:
The most recent version is Exchange Server Subscription Edition (Exchange Server SE), which is scheduled to be released in early Q3 2025 [1].
Before Exchange Server SE, the latest version is Exchange Server 2019. The final Cumulative Update (CU) for Exchange Server 2019 - CU15 - will be released later in 2024 [1].
Exchange Server SE will introduce several new features and changes, including:
For developers, Microsoft Graph is now the recommended API for accessing Exchange Online data. New applications designed to access Exchange Online data should use Microsoft Graph [3].
The Exchange Web Services (EWS) Managed API is still available but is no longer being actively developed. It includes two APIs: Microsoft.Exchange.WebServices.dll
and Microsoft.Exchange.WebServices.Auth.dll
[2].
For PowerShell users, the latest version is the Exchange Online PowerShell V3 module (EXO V3 module), released in September 2022. This version uses REST API for all Exchange Online PowerShell cmdlets, eliminating the need for Basic authentication in WinRM [4].
In summary, while Exchange Server SE is the upcoming major release, Microsoft Graph is currently the most up-to-date and recommended API for new development targeting Exchange Online. For on-premises deployments, Exchange Server 2019 remains the current version until Exchange Server SE is released in 2025.
Based on the search results provided, here is a list of data models that can be interacted with using the Microsoft Exchange API, along with what is possible for each:
Each of these data models can be accessed and manipulated using various Exchange APIs, with the specific capabilities depending on the chosen API (e.g., REST, EWS, EWS Managed API, or MAPI) and the version of Exchange being targeted.