You can use the Nylas iCloud connector to connect to iCloud accounts, so you can use both the Nylas Email and Calendar APIs. iCloud provides an IMAP email service, and a WebDav/CalDav calendar service.
Apple requires an app-specific password when you authenticate iCloud accounts. For more information, see the app passwords documentation.
Before you begin
Before you start authenticating iCloud accounts, make sure you understand how Nylas authenticates. You also need to create at least one Nylas application.
Add an iCloud connector
- In the Nylas Dashboard, navigate to the application you want to use iCloud with.
- Click Connectors in the left navigation.
- Find the iCloud item, and click the plus icon (+).
No further connector configuration is required, and iCloud doesn’t require that you request scopes.
Have the user create an app password
Next, direct your user to the Apple ID log in page and have them log in.
Have them follow the instructions to generate an app-specific password for iCloud. They will use this password when authenticating with your app instead of using their main account password.
iCloud Hosted authentication
To authenticate your users’ iCloud accounts using Hosted auth, follow these steps:
- Direct your user to create an iCloud app password. This step is required.
- Redirect the user to the Nylas Hosted auth login page by making a
GET /v3/connect/auth
request. - Have the user log in using their iCloud account and the app-specific password they created.
- Complete the auth flow by exchanging a token with the provider. The API response contains the grant ID for the user, which you can use query for their data.
iCloud Custom authentication
To authenticate users with iCloud accounts using Custom authentication, follow these steps:
-
Direct your user to create an iCloud app password. This step is required.
-
Create your custom log in page as you normally would.
-
Make a Custom Auth request and provide the user’s app-specific
username
andpassword
.curl -X POST 'https://api.us.nylas.com/v3/connect/custom' \--header 'Authorization: Bearer <NYLAS_API_KEY>' \--header 'Content-Type: application/json' \--data '{"provider": "icloud","settings": {"username": "<ICLOUD_EMAIL_ADDRESS>","password": "<ICLOUD_PASSWORD>"}}'
Nylas returns a grant ID that you then use in other queries for the user’s data.
iCloud provider limitations
By default, Nylas stores messages on iCloud and IMAP providers in a cache for 90 days after they’re received or created. You can access messages older than 90 days by setting the query_imap
parameter to true
when you make a request to the following endpoints: Get Message, Get all Messages, Get Draft, Get all Drafts, and the Attachments endpoints. This directly queries the IMAP server instead of Nylas’ cache.
Nylas doesn’t send webhook notifications for changes to messages that are older than 90 days.
iCloud rate limits
For iCloud, there are several rate limits you should keep in mind:
- You can send 1,000 messages per day.
- You can send messages to 1,000 recipients per day.
- You can include up to 500 recipients per message.
- You can send messages up to 20MB in size.
For more information, see the official Apple documentation.