One API for email, calendar, and contacts

Nylas saves engineering teams time so they can build secure and engaging communication experiences their customers love.

Animate Gif
Hero Image
New

[Event] Powering productivity: Implementing product ops for peak performance

Register Now
Logo Logo Logo Logo Logo Logo Logo
Meet Nylas

A developer-first solution for custom communication experiences

Securely integrate with every email, calendar, and contacts provider using a single interface to streamline your users’ workflows. Build real-time, bi-directional communications in your app up to 40x faster, saving months of development time.

Image

Email API

Sync, send, and receive messages to build contextual email, automated outreach, and other in-app experiences.

Explore the Email API
Image

Calendar API

Retrieve and manage calendars and events to build scheduling automation, calendar management, and other scheduling experiences.

Explore the Calendar API
Image

Contacts API

Sync and manage contact details to build contact management and other contact experiences.

Explore the Contacts API
For developers

Speed up your development with easy-to-use APIs

Nylas APIs simplifies integration complexities, offering a unified API solution tailored for developers.

Developer-friendly

Leverage Nylas Docs, SDKs, CLI, and code samples to reduce time building and maintaining infrastructure.

Reliable performance

Ship features faster with security, scalability, and performance with a 99.9% guaranteed uptime.

Instant responses

Instant email and event data as soon as your users connect, with no sync delays.

Webhooks

Receive real-time notifications to your application that will scale with you.

Node.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 events = await nylas.events.list({
  identifier: 1,
  queryParams: {
    calendarId: 2
  }
})
require 'nylas'

nylas = Nylas::Client.new(api_key: "<API_KEY>")

# Call a list of calendars
calendars, _request_ids = nylas.calendars.list(identifier: "<GRANT_ID>", query_params: {limit: 5})

calendars.each {|calendar|
    puts calendar
}  
events = nylas.events.list(
  grant_id,
  query_params={
    "calendar_id": 1
  }
)
import com.nylas.NylasClient;
import com.nylas.models.*;
import java.util.List;

public class read_calendars {
    public static void main(String[] args) throws NylasSdkTimeoutError, NylasApiError {
        NylasClient nylas = new NylasClient.Builder("<API_KEY>").build();
        ListCalendersQueryParams listCalendersQueryParams = new  
        ListCalendersQueryParams.Builder().limit(5).build();
        List<Calendar> calendars = nylas.calendars().list(dotenv.get("CALENDAR_ID"), 
        listCalendersQueryParams).getData();

        for (Calendar calendar : calendars) {
            System.out.println(calendar);
        }
    }
}
curl --request GET \
--url https://api.us.nylas.com/v3/grants/<GRANT_ID>/events
--header 'Accept: application/json' \
--header 'Authorization: Bearer <API_KEY_OR_ACCESS_TOKEN>' \
--header 'Content-Type: application/json'

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.created1",
    "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 ",
        "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"
        }
      }
    }
  }  
Customers

Powering the world’s best product teams

Trusted by 250,000+ developers and growing.

Upwork enables users to hire twice as fast and boosts customer satisfaction

“Our primary use case is not scheduling meetings. We have such a complex platform that we can’t implement every solution on our own, so we look for the best solutions in the market–that’s why we chose Nylas.”

Maksym Dudnyk

Maksym Dudnyk

Product Manager @ Upwork

Product used

  • Calendar API

5800+

meetings scheduled weekly

+5

increase CSAT score from low to mid 90s

Read the full story

Dialpad launches secure, reliable contact sync while saving developer resources

“One of the advantages of integrating with Nylas was how straightforward it was to sync contacts across multiple service providers and regardless of which version of Exchange our customers use.”

Stefan Roesch

Stefan Roesch

Software Engineer @ Dialpad

Products used

  • Email API
  • Calendar API
  • Contact API

2 days

to launchable code with Nylas

6+

months cut from development timelines

Read the full story

Salesloft partners with Nylas to unlock new enterprise market

“We have millions of emails sent each week. Nylas frees us up to focus on delivering new features to our customers and working with our data science team on exciting new projects.”

Nora Ignatius

Nora Ignatius

Product Manager @ Salesloft

Products used

  • Email API
  • Calendar API

10+

full-time engineers retasked to other work

25%

of maintenance team resources saved

Read the full story

Ceridian reduces manual work for recruiters with interview scheduling

“By partnering with Nylas we were able to solve technical obstacles that would’ve taken us a lot longer on our own and required a much larger investment of resources.”

John Whyte

John Whyte

Director of Product Management @ Ceridian

Products used

  • Calendar API

1 year

saved in development time and resources

1 API

all major calendar providers

Watch the video
Security

Security built into the foundation of our platform

Our enterprise-grade security is backed by compliance with industry-leading standards.

Logo Logo Logo Logo Logo

34.5B+

API transactions and 200TB of data processed daily.

99.9%

historical uptime for Nylas services.

Save 50%

of dev resources to focus on core product functionality.

Map

Start building the future

Get your API key and connect up to 5 accounts for free.

Image