Email API with two-way sync across every provider
Send, receive, thread, and parse across Gmail, Microsoft Graph, Exchange, and any IMAP server. One normalized JSON schema, zero provider-specific branches, first send in five minutes.
Send an Email
import Nylas from 'nylas';
const nylas = new Nylas({ apiKey: '<NYLAS_API_KEY>' });
const sentMessage = await nylas.messages.send({
identifier: <USER_GRANT_ID>
requestBody: {
to: [{ name: '<RECIPIENT_NAME>', email: '<RECIPIENT_EMAIL>' }],
subject: '<EMAIL_SUBJECT>',
body: '<EMAIL_BODY>'
}
});
require 'nylas'
nylas = Nylas::Client.new(api_key: "<NYLAS_API_KEY>")
request_body = {
subject: '<EMAIL_SUBJECT>',
body: '<EMAIL_BODY>',
to: [{ name: '<RECIPIENT_NAME>', email: '<RECIPIENT_EMAIL>' }]
}
email, response = nylas.messages.send('<USER_GRANT_ID>', request_body)
from nylas import Client
nylas = Client(api_key='<NYLAS_API_KEY>')
message = nylas.messages.send(
'<USER_GRANT_ID>',
request_body={
"to": [{ "name": '<RECIPIENT_NAME>',
"email": '<RECIPIENT_EMAIL>' }],
"subject": '<EMAIL_SUBJECT>',
"body": '<EMAIL_BODY>'
}
)
import com.nylas.NylasClient
val nylas = NylasClient(apiKey = '<NYLAS_API_KEY>')
val recipients = listOf(EmailName('<RECIPIENT_EMAIL>', '<RECIPIENT_NAME>'))
val requestBody = SendMessageRequest.Builder(recipients)
.subject('<EMAIL_SUBJECT>')
.body('<EMAIL_BODY>')
.build()
val emailResponse = nylas.messages().send('<USER_GRANT_ID>', requestBody)
curl --request POST \
--url "api.nylas.com/${<USER_GRANT_ID>}/messages/send" \
--header "Authorization: Bearer ${NYLAS_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"subject": "<EMAIL_SUBJECT>",
"body": "<EMAIL_BODY>",
"to": [{"name": "<RECIPIENT_NAME>",
"email": "<RECIPIENT_EMAIL>"}]
}'
Attain higher deliverability by using contextual send.
Control all elements of your email data to make it AI-ready
Calendar API with bidirectional sync and a native Scheduler
Google, Microsoft, Exchange, and iCloud through one schema. Embeddable booking components, plus Virtual Calendars for rooms and equipment that have no provider account.
Ready-to-use Scheduler that gives you
industry-leading scheduling right in your application
Agent Accounts give your agent an inbox and a calendar
Provision both in one API call, hosted by Nylas. Your agent sends, receives, files, and books as sales@yourco.com, on an identity your application owns. The mailbox reads and sends across Gmail, Outlook, and IMAP alike, not just one provider.
Owned identity for every agent
(so your agent sends as itself, not as one of your users)
Notetaker API turns meetings into structured data
A managed bot joins Google Meet, Teams, and Zoom, then delivers recordings, speaker-labeled transcripts, summaries, and action items by webhook. 99% join success rate.

Notetaker Calendar Sync
(So that your Notetaker shows up when you want and where you want)
We handle the hard stuff, OAuth, integrations, and normalization.
Connecting to Google and Microsoft OAuth is notoriously painful. Nylas walks you through it, manages tokens, and abstracts away provider differences, giving you one API to access email, calendar, and conferencing data across every major platform. The same connection powers your AI tools too. Our MCP server plugs into Claude Code, Cursor, and any other MCP-compatible client, so your agent gets the same cross-provider access your product does.
The infrastructure trusted by the world’s best builders.
The best developers in the world use Nylas
to handle authentication, synchronization, and data normalization across 250+ providers, freeing them to build world-class applications with speed and precision.
Seamless authentication
Handle OAuth across hundreds of providers with zero friction.
Enterprise reliability
SOC 2–compliant infrastructure built to scale with your app.
Modern SDKs & MCP
Get up and running in minutes. One install and one API call, or connect any MCP client and give your agent 36 typed tools for email, calendar, contacts, and Notetaker.
Powerful webhooks
Stay in sync with every event in real time, no polling, no complexity.
Developer dashboard
Monitor, manage, and test your integrations, all in one place.
Sandbox environments
Prototype safely and test confidently before going live.
import Nylas from 'nylas';
const nylas = new Nylas({ apiKey: '<NYLAS_API_KEY>' });
const sentMessage = await nylas.messages.send({
identifier: <USER_GRANT_ID>
requestBody: {
to: [{ name: '<RECIPIENT_NAME>', email: '<RECIPIENT_EMAIL>' }],
subject: '<EMAIL_SUBJECT>',
body: '<EMAIL_BODY>'
}
});
require 'nylas'
nylas = Nylas::Client.new(api_key: "<NYLAS_API_KEY>")
request_body = {
subject: '<EMAIL_SUBJECT>',
body: '<EMAIL_BODY>',
to: [{ name: '<RECIPIENT_NAME>', email: '<RECIPIENT_EMAIL>' }]
}
email, response = nylas.messages.send('<USER_GRANT_ID>', request_body)
from nylas import Client
nylas = Client(api_key='<NYLAS_API_KEY>')
message = nylas.messages.send(
'<USER_GRANT_ID>',
request_body={
"to": [{ "name": '<RECIPIENT_NAME>',
"email": '<RECIPIENT_EMAIL>' }],
"subject": '<EMAIL_SUBJECT>',
"body": '<EMAIL_BODY>'
}
)
import com.nylas.NylasClient
val nylas = NylasClient(apiKey = '<NYLAS_API_KEY>')
val recipients = listOf(EmailName('<RECIPIENT_EMAIL>', '<RECIPIENT_NAME>'))
val requestBody = SendMessageRequest.Builder(recipients)
.subject('<EMAIL_SUBJECT>')
.body('<EMAIL_BODY>')
.build()
val emailResponse = nylas.messages().send('<USER_GRANT_ID>', requestBody)
curl --request POST \
--url "api.nylas.com/${<USER_GRANT_ID>}/messages/send" \
--header "Authorization: Bearer ${NYLAS_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"subject": "<EMAIL_SUBJECT>",
"body": "<EMAIL_BODY>",
"to": [{"name": "<RECIPIENT_NAME>",
"email": "<RECIPIENT_EMAIL>"}]
}'
API transactions and 200TB of data processed daily.
historical uptime for Nylas services.
Get your feature launched into production 2x faster.
Security built into the foundation of our platform
Our enterprise-grade security is backed by compliance with industry-leading standards. For Google and Microsoft accounts, Nylas doesn't store your message or event data.
Start building for free; upgrade when you’re ready.
Get your API key and start integrating communications into your app in minutes.
Trusted by 1000+ companies
“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.”
“It would have cost us at least a year to build out just the Exchange and Google integration. By building on top of the Nylas API, the Clio team was able to focus on other core components of their CRM.”
“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.”
“There’s no longer any disconnect with users copying and pasting information for scheduling or sending out manual emails. This has made a huge difference in response times.”
“Bringing multiple channels into a single hub powered by Nylas has been a goldmine for user communication.”
"We tried building our own Gmail integration, and it was always having issues. Moving to Nylas meant we could support both Gmail and Outlook users through one integration and reach virtually every founder on our platform."