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.
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. |
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: Per-user rate limit of 600 quota units per minute.
- Email message sending limits: 2,000 email 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).
Microsoft rate limits
Microsoft has different rate limits, depending on the platform you use:
- Microsoft 365: 30 email messages per minute (see Microsoft's Exchange Online limits documentation).
- Graph (Outlook): 10,000 API requests per 10-minute period (see Microsoft's Service-specific limits documentation). This includes both email and calendar requests.
iCloud rate limits
Apple limits the number of email messages you can send to 1,000 per day. For more information, see Apple's Mailbox size and message sending limits documentation.