Microsoft Exchange · Rate Limits

Microsoft Exchange Rate Limits

Microsoft Exchange Online enforces throttling at multiple layers — Microsoft Graph mail/calendar endpoints, Exchange Web Services (EWS), Exchange Online PowerShell, and the SMTP submission service — each with distinct policies. Limits are scoped per app/tenant or per mailbox/user. Returns 429 Too Many Requests with Retry-After.

7 Limits Throttle: 429
Rate LimitingEmailCalendarExchange OnlineMicrosoft GraphMicrosoft

Limits

Exchange Message Trace Service tenant
requests_per_5_minutes · minute
100
EWS — concurrent connections per app/mailbox app/mailbox
concurrent_connections
27
27 concurrent connections per (application, mailbox) tuple in Exchange Online
EWS — total connections per mailbox mailbox
concurrent_connections
27
EXO PowerShell — concurrent runspaces user
concurrent_runspaces
3
3 concurrent connections per user-account in Exchange Online PowerShell
SMTP submission per mailbox mailbox
messages_per_minute · minute
30
30 messages per minute per mailbox; 10,000 recipients per day per mailbox
Daily recipient cap per mailbox mailbox
recipients_per_day · day
10000
Microsoft Graph global ceiling application
requests_per_10_seconds · second
130000

Policies

Backoff Strategy
Honour the Retry-After header on 429 from Graph and EWS; for HTTP 503 ServerBusy use exponential backoff with jitter.
Use Microsoft Graph for new development
EWS is on a deprecation path; new mail / calendar code should target the Microsoft Graph mail and calendar endpoints.
Use change notifications
Subscribe to Graph change notifications instead of polling for new mail.
Batch and delta queries
Use $batch and delta queries to minimise request count.
SMTP relay for high volume
For application-generated mail above mailbox SMTP limits, use a connector or third-party relay; 30 msg/min and 10K recipients/day are hard mailbox caps.

Sources