Rate limits in Nylas
Rate limits apply when making requests to the Nylas API and adding account information in the Dashboard. This page describes the limits you may encounter.
For best practices to mitigate rate limits, see Avoiding rate limits in Nylas.
Nylas v3 rate limits
The table below describes API rate limits for Nylas v3. These apply to all endpoints.
API | Type | Rate Limit | Expiration |
---|---|---|---|
Applications | General | Allows up to 50 requests per application. | 1 second |
Authentication | General | Allows up to 50 requests per application. | 1 second |
Calendar | General | Allows up to 200 requests per grant. | 1 second |
Connectors | General | Allows up to 50 requests per application. | 1 second |
Contacts | General | Allows up to 200 requests per grant. | 1 second |
General | Allows up to 200 requests per grant. | 1 second | |
Grants | General | Allows up to 50 requests per application. | 1 second |
Send | application/json |
Allows up to 200 requests per grant. | 1 second |
Send | multipart/form-data |
Allows up to 10 requests per grant. | 1 second |
Webhooks | General | Allows up to 50 requests per application. | 1 second |
Threads rate limits
⚠️ The Return all threads endpoint makes a significant number of calls to the provider for each request you make. Because of this, Nylas strongly recommends using query parameters to limit the threads data you receive.
Because of the number of calls Nylas makes to the provider for each GET /v3/grants/<NYLAS_GRANT_ID>/threads
request, you might encounter rate limits when working with large threads of email messages. You can take the following steps to avoid rate limits:
- Specify a lower
limit
to reduce the number of results Nylas returns. - Add query parameters to your request to filter for specific information.
Provider rate limits
🔍 Not all IMAP providers publish information about their rate limits. If you have questions, contact your provider's customer support team.
Nylas API calls are also subject to the rate limits for the underlying providers, so keep these in mind when you build your Nylas application. The following sections outline the rate limits for common providers.
Google rate limits
⚠️ As of February 2024, Gmail has new requirements for accounts that send more than 5,000 email messages per day. For more information, see Google's official documentation.
Google has several sets of rate limits to keep in mind:
- Overall usage limits: 10,000 requests per minute, per application and 600 requests per minute, per user. Google calculates these limits within a one-minute sliding window.
- Message sending limits: 2,000 messages per day (see Google's Gmail sending limits in Google Workspace documentation).
- Gmail API limits: Per-user rate limit of 250 quota units per second (see Google's Gmail usage limits documentation).
- Google Calendar API limits: API usage quotas, general usage limits, and operational limits (see Google's Calendar quotas documentation).
💡 You can log in to the GCP portal and navigate to Enabled APIs and services to see your Google API limits.
Because of a limitation on the provider, a single Nylas request might make multiple calls to Google's APIs. Nylas returns a Nylas-Provider-Request-Count
header that shows the number of calls Nylas made to the Google APIs, and a Nylas-Gmail-Quota-Usage
header for requests to the Nylas Messages, Folders, Threads, Attachments, and Drafts APIs that shows how much of your Gmail API quota Nylas used for your request. You can monitor these headers and space out your requests to avoid being rate-limited.
Microsoft rate limits
- Overall usage limits: 10,000 requests per 10-minute period, a maximum of 4 concurrent requests, and a maximum of 150 MB uploaded per 5-minute period (see Microsoft's Outlook service limits documentation).
- Message sending limits: 30 messages per minute (see Microsoft's Exchange Online limits documentation).
Because of a limitation on the provider, a single Nylas request might make multiple calls to the Microsoft Graph APIs. Nylas returns a Nylas-Provider-Request-Count
header that shows the number of calls Nylas made to the Graph APIs for your request. You can monitor this header and space out your requests to avoid being rate-limited. If Microsoft rate-limits a request, Nylas returns a Retry-After
header that shows the number of seconds you have to wait before you can make another request.
EWS rate limits
Your EWS administrator configures the rate limit for your on-prem Exchange server, so Nylas cannot know the server's actual rate limits. If your Exchange server rate-limits a request, Nylas returns a Retry-After
header that shows the number of seconds you have to wait before the server will accept another request.
iCloud rate limits
Apple limits the number of messages you can send to 1,000 per day. For more information, see Apple's Mailbox size and message sending limits documentation.
Nylas v2 rate limits
The table below describes API and Dashboard rate limits for Nylas v2. These apply to all endpoints, except the endpoints listed for concurrent and IP address endpoint rate limits.
Scope | Type | Rate Limit | Expiration |
---|---|---|---|
Applications | General | Allows up to 500 requests per endpoint. | 1 second |
Accounts | General | Allows up to 50 requests per endpoint. | 1 second |
Scope
Nylas v2 implements rate limits in two ways: by application, and by account. This scope indicates that the rate limit applies to either your entire Nylas application, or to an individual connected account.
For individual accounts, the rate limit is applied to the access_token
used to make an API call.
Concurrent rate limits
Scope | Type | Rate Limit | Endpoints |
---|---|---|---|
Account | Concurrent | Allows up to 10 concurrent requests. | /delta/streaming |
Account | Concurrent | Allows up to 10 concurrent requests. | /delta/longpoll |
Account | Concurrent | Allows up to 5 concurrent requests. | /messages/threads/contacts |
IP address endpoint rate limits
The v2 GET /a/<client_id>/ip_addresses
endpoint has its own rate limit: it allows up to 10 requests per endpoint, per hour.
429 error code response
If you receive a 429
error code response from Nylas, it includes information about why the request was rate-limited, as well as information about how long you should wait until you make another request.
The response includes two headers: X-RateLimit-Limit
and X-RateLimit-Reset
. The former indicates the rate limit, and the latter specifies the time until the limit expires, in seconds.
{
'X-RateLimit-Limit': '500',
'X-RateLimit-Reset': '10'
}
Nylas indicates what type of rate limit was applied to a request in the body of a 429
error code response, as in the snippet below.
{
'message': 'Too many requests',
'type': 'invalid_request_error'
}
The following table describes the rate limit messages you may encounter in the body of a 429
error code response.
Message | Description |
---|---|
"Too many requests from this application" | You reached the application rate limit. |
"Too many requests" | You reached the account rate limit for a single endpoint. |
"Too many concurrent streaming requests" | You made too many concurrent requests to the /delta/ endpoints for a single account. |
"Too many concurrent query requests" | You made too many concurrent requests to the /messages and /threads endpoints for a single account. |