Email API
Integrate any email provider with one Email API
The Nylas Email API connects your app with 100% of email service providers. Deliver integrations 12x faster than building on your own with near-perfect deliverability.
Email API
The Nylas Email API connects your app with 100% of email service providers. Deliver integrations 12x faster than building on your own with near-perfect deliverability.
Nylas’ email API works with your users’ favorite services like Gmail, Outlook, and IMAP. It allows for two-way email conversations.
Connect to 100% of email service providers in minutes with our universal API. No custom code required.
Send directly from your users’ inboxes vs proxy sends, with Nylas’ industry-leading 99.6% deliverability.
Give your developers and integration experts time back to refocus on advancing your roadmap.
250,000+ developers trust Nylas to power email experiences their customers love.
With a few lines of code, build email CRUD capabilities and bi-directional sync.
See the docsNode.js
Ruby
Python
Java
Curl
const messages = await nylas.messages.list({
identifier,
queryParams: {
limit: 5,
}
})
require 'nylas'
nylas = Nylas::Client.new(api_key: 'API_KEY')
query_params = { limit: 5 }
messages, _ = nylas.messages.list(identifier: '<GRANT_ID>', query_params: query_params)
messages.each {|message|
puts "[#{Time.at(message[:date]).strftime("%d/%m/%Y at %H:%M:%S")}] \
#{message[:subject]}"
}
messages = nylas.messages.list(
grant_id,
query_params={
"limit": 5
}
)
import com.nylas.NylasClient;
import com.nylas.models.*;
import java.text.SimpleDateFormat;
public class ReadInbox {
public static void main(String[] args) throws NylasSdkTimeoutError, NylasApiError {
NylasClient nylas = new NylasClient.Builder("<API_KEY>").build();
ListMessagesQueryParams queryParams = new
ListMessagesQueryParams.Builder().limit(5).build();
ListResponse<Message> message = nylas.messages().list("<GRANT_ID>", queryParams);
for(Message email : message.getData()) {
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").
format(new java.util.Date((email.getDate() * 1000L)));
System.out.println("[" + date + "] | " + email.getSubject());
}
}
}
curl --request GET \
--url "https://api.us.nylas.com/v3/grants/GRANT_ID/messages?limit=5" \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <API_KEY_OR_ACCESS_TOKEN>' \
--header 'Content-Type: application/json'
Node.js
Ruby
Python
Java
Curl
const contact = new Contact(nylas);
// The following attributes can be modified for the contact object
contact.givenName = 'Nyla'
contact.birthday = '2014-06-01'
contact.companyName = 'Nylas'
contact.jobTitle = 'Communications Platform'
contact.officeLocation = 'San Francisco'
contact.notes = 'Check out the Nylas Email, Calendar, and Contacts APIs'
contact.emailAddresses = [new EmailAddress({
type: 'work', email: 'nyla@nylas.com'
})];
contact.save();
contact = nylas.contacts.create
contact.given_name = 'Nyla'
contact.office_location = 'San Francisco'
contact.company_name = 'Nylas'
contact.notes =
'Check out the Nylas Email, Calendar, and Contacts APIs'
contact.manager_name = 'Communications'
contact.job_title = 'Communications Platform'
contact.birthday = '2014-06-01'
contact.emails = [
{
type: 'work',
email: 'nyla@nylas.com'
}]
contact.save
contact = nylas.contacts.create()
contact.given_name = 'Nyla'
contact.office_location = 'San Francisco'
contact.company_name = 'Nylas'
contact.notes = 'Check out the Nylas Email, Calendar, and Contacts APIs'
contact.manager_name = 'Communications'
contact.job_title = 'Communications Platform'
contact.birthday = datetime(2014, 6, 1)
contact.emails['work'] = ['nyla@nylas.com']
contact.save()
public class NylasExamples {
public static void createContact() throws IOException, RequestFailedException {
Contact contact = new Contact();
contact.setGivenName("Nyla");
contact.setNickname("Nylas");
contact.setOfficeLocation("San Francisco");
contact.setCompanyName("Nylas");
contact.setNotes("Check out the Nylas Email, Calendar, and Contacts APIs");
contact.setManagerName("Communications");
contact.setJobTitle("Communications Platform");
contact.setBirthday("2014-06-01");
contact.setEmails(Arrays.asList(new Contact.Email("work", "nyla@nylas.com")));
contact = account.contacts().create(contact);
}
}
curl --request POST \
--url https://api.nylas.com/contacts \
--data '{
"birthday": "2014-06-01",
"company_name": "Nylas",
"emails": [
{
"email": "nyla@nylas.com",
"type": "work"
}
],
"given_name": "Nyla",
],
"job_title": "Nylas Mascot",
"phone_numbers": [
{
"number": "1 800 GO NYLAS",
"type": "business"
}
],
"web_pages": [
{
"type": "work",
"url": "nylas.com"
}
],
}'
Response
{
"request_id": "d0c951b9-61db-4daa-ab19-cd44afeeabac",
"data": [
{
"starred": false,
"unread": true,
"folders": [
"UNREAD",
"CATEGORY_PERSONAL",
"INBOX"
],
"grant_id": "1",
"date": 1706811644,
"attachments": [
{
"id": "1",
"grant_id": "1",
"filename": "invite.ics",
"size": 2504,
"content_type": "text/calendar; charset=\"UTF-8\"; method=REQUEST"
},
{
"id": "2",
"grant_id": "1",
"filename": "invite.ics",
"size": 2504,
"content_type": "application/ics; name=\"invite.ics\"",
"is_inline": false,
"content_disposition": "attachment; filename=\"invite.ics\""
}
],
"from": [
{
"name": "Nylas DevRel",
"email": "nylasdev@nylas.com"
}
],
"id": "1",
"object": "message",
"snippet": "Send Email with Nylas APIs",
"subject": "Learn how to Send Email with Nylas APIs",
"thread_id": "1",
"to": [
{
"name": "Nyla",
"email": "nyla@nylas.com"
}
],
"created_at": 1706811644,
"body": "Learn how to send emails using the Nylas APIs!"
}
],
"next_cursor": "123"
}
{
"type": "event.created3",
"data": {
"object": {
"busy": true,
"calendar_id": "mock-name%40nylas.com",
"created_at": 1234567890,
"description": "mock description",
"hide_participants": false,
"ical_uid": "mock_uids@google.com",
"id": "mock-data-id",
"object": "event",
"owner": "Mock Owner <mock_owner@example.com>",
"organizer": {
"name": "mock organizer name",
"email": "mock_email@example.com"
},
"participants": [
{
"email": "mockParticipantsA@example.com",
"name": "mockParticipantsA",
"status": "yes"
},
{
"email": "mockParticipantsB@example.comm",
"name": "mockParticipantsB",
"status": "noreply"
}
],
"read_only": false,
"reminders": null,
"status": "confirmed",
"title": "mock_title",
"updated_at": 1234567890,
"when": {
"start_time": 1234567890,
"start_timezone": "America/Edmonton",
"end_time": 1234567890,
"end_timezone": "America/Edmonton",
"object": "timespan"
}
}
}
}
Receive real-time notifications to monitor events and trigger automated workflows.


Starts at $10/month for 5 accounts, then listed rate applies.
Starts at $15/month for 5 accounts, then listed rate applies.
Try an interactive demo to see how the Email API simplifies adding email features to your product. Follow green prompts to view API calls for actions like reading, replying, and sending emails.
Leverage advanced email capabilities that save users time and automate tedious, manual workflows.
Track and show email status, including opens, clicks, replies, and bounces, for users to deliver more effective outreach.
Use our generative AI-powered email composer to create and edit messages, improving efficiency and eliminating writer’s block.
Extract email signatures to keep user contact books up to date, create chat-like views of email threads, and access message metadata for trend analysis.
Nylas makes it easy to build best-in-class email experiences in your application.
Power personal, relationship-building conversations in your app.
Explore contextual email
Quickly build high-volume email outreach with near-perfect deliverability.
Explore automated outreach
Discover the power of the Nylas platform and connect up to five accounts for free.
The Nylas Email API lets you send, receive, read, and manage emails from your application using your users’ existing inboxes. With Nylas, teams commonly build CRMs, support tools, workflow automation, and AI-powered email features without managing provider-specific email infrastructure.
The Nylas Email API supports major providers including Gmail, Microsoft Outlook and Exchange, and IMAP-based inboxes. You integrate once and connect to most business and consumer email accounts through a single API.
Yes. You can send emails from your application using authenticated user inboxes for workflows like replies, follow-ups, and notifications. Messages are sent through the user’s provider and appear in their Sent folder.
No. The Nylas Email API abstracts provider-specific protocols, authentication flows, and edge cases. This allows you to avoid building and maintaining separate integrations for Gmail, Outlook, and IMAP providers.
Users authenticate through secure OAuth flows for supported providers. For some IMAP connections, credentials may be required depending on the provider and security configuration.
Engagement tracking can be implemented by your application using techniques like tracking pixels, tagged links, or message metadata, depending on provider capabilities. Delivery status and message state can be monitored through API responses and webhook events.
Nylas provides security controls and data handling features that support GDPR-compliant implementations. Compliance ultimately depends on how your application collects, processes, stores, and retains user data.
The Nylas Email API returns structured error responses and supports webhooks for event-based handling. This makes it easier to detect failed sends, retries, or provider-level issues and respond programmatically.
Yes. You can fully control email content, including subject lines, HTML and plain-text bodies, attachments, and custom headers. This flexibility supports transactional, workflow, and application-driven email use cases.
Building directly on provider APIs requires maintaining separate integrations and adapting to ongoing provider changes. The Nylas Email API provides a unified abstraction layer, reducing development time and long-term maintenance while supporting multiple providers.