Skip to content

Schedule email messages to send in the future

The Nylas Email API allows you to schedule email messages to be sent in the future. This means you can draft an email message in advance and schedule it to send when the time is just right — for example, when you want to announce a new version of your product.

This page explains how to schedule email messages with Nylas.

How scheduled send works

When you make a request to the Send Message endpoint, you can define your preferred send time (in Unix timestamp format) in the sent_at field.

If the end user’s provider is Google or Microsoft, you can choose to store the scheduled email message in their Drafts folder on the provider. In this case, you can schedule it to send any time in the future.

You can also choose to have Nylas store the email message until its send time, which must be between 2 minutes and 30 days in the future.

Before you begin

Before you start scheduling email messages, you need the following prerequisites:

  • A v3 Nylas application.
  • A working authentication configuration. Either…
    • A Nylas Dashboard v3 Sandbox application which includes a demonstration auth config, OR
    • A v3 provider auth app (Google or Azure), and a connector for that auth app.
  • A Google or Microsoft grant with at least the following scopes:
    • Google: gmail.send
    • Microsoft: Mail.ReadWrite and Mail.Send

Schedule an email message

To schedule an email message to be sent in the future, make a Send Message request that includes the sent_at field, and provide the time (in Unix timestamp format) when you want the email message to be sent. Nylas returns a schedule_id that you can use to reference the scheduled message.

If you’re storing the email message on Nylas, you can schedule it to be sent between 2 minutes and 30 days in the future. If you’re storing it on the provider, you can schedule it to be sent any time in the future.

To store the email message as a draft on the provider, instead of storing it with Nylas, set use_draft to true.

You can also use the Nylas SDKs to schedule an email message, as in the examples below.

Schedule a draft

If you want to schedule an email message to be sent later, but you’re not quite set on what you want the content to be yet, you can schedule a draft. To do this, make a Send Message request that includes the send_at field, and specify "use_draft": true.

curl --request POST \
--url https://api.us.nylas.com/v3/grants/<NYLAS_GRANT_ID>/messages/send \
--header 'Authorization: Bearer <NYLAS_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"subject": "Reaching out with Nylas",
"body": "Hey! This is testing scheduled drafts.",
"to": [{
"name": "John Doe",
"email": "[email protected]"
}],
"send_at": 1714478400,
"use_draft": true
}'

You can also schedule drafts using the Nylas SDKs.

Nylas saves the email message in the end user’s Drafts folder until the defined send_at time.

You can edit a scheduled draft until 10 seconds before the defined send_at time. To do this, make an Update Draft request that includes the draft_id and the fields you want to modify.

If you want to update a draft’s scheduled send time, you must delete the schedule and create a new one.

Read scheduled email messages

You can make a Get Scheduled Messages request or use the Nylas SDKs to get information about all of your scheduled email messages. Nylas returns a list of schedule instructions, including their schedule IDs and information about their status.

If you see a schedule instruction that you’re interested in, you can pass its schedule_id in a Get Scheduled Message request or using the Nylas SDKs to get information about it.

Stop a scheduled email message

Sometimes, you might decide you don’t want to send a message, and want to stop it from being sent. When this happens, make a Cancel Scheduled Message request with the schedule_id.

You can also use the Nylas SDKs to stop a scheduled email message, as in the following code samples.