Nylas · AsyncAPI Specification

Nylas Notifications

Version v3

Change notifications Nylas pushes for grants, messages, message tracking, folders, calendars, events, contacts, Scheduler bookings, Notetaker, ExtractAI, Transactional Email and Agent Accounts. Every notification is a CloudEvents 1.0 envelope whose `data.object` carries the affected resource. The same payloads are delivered over three interchangeable transports: an HTTPS webhook to an endpoint you register, a Google Cloud Pub/Sub topic in your project, or an Amazon SNS topic in your AWS account. Nylas guarantees at-least-once delivery, so deduplicate on the envelope `id`. Payloads over 1 MB are truncated for `message.*` triggers and carry a `.truncated` suffix on `type`; `.cleaned` and `.transformed` suffixes can also combine. Subscribe to triggers with POST /v3/webhooks, POST /v3/channels/pubsub or POST /v3/channels/sns.

View Spec View on GitHub CalendarCommunicationsContactsEmailMessagingSchedulingA2AAsyncAPIEventsWebhooks

Channels

webhookDelivery
HTTP POST deliveries to your registered webhook endpoint.
pubsubTopic
Messages published to your Pub/Sub topic; data is the JSON envelope.
snsTopic
Messages published to your SNS topic; Message is the JSON envelope.

Messages

✉
grant_created
grant.created
Sent when a user successfully authenticates with your Nylas application for the first time.
✉
grant_updated
grant.updated
Sent when a grant is modified, updated, or re-authenticated.
✉
grant_deleted
grant.deleted
Sent when a grant is deleted because of a Delete Grant request.
✉
grant_expired
grant.expired
Sent when a grant's credentials expire, typically due to a change in the user's password on the provider, OAuth token expiration without successful refresh, the provider revoking access, or an admin revoking app permissions.
✉
grant_imap_sync_completed
grant.imap_sync_completed
Sent when a grant is created for an IMAP account and the initial historic sync completes.
✉
message_created
message.created
Sent when a new message arrives or is synced for a user.
✉
message_created_cleaned
message.created.cleaned
Sent when a new message is synced and the [Clean Conversations](/docs/v3/email/parse-messages/) feature is enabled for the application. The message `body` contains cleaned markdown content instead of the original HTML.
✉
message_updated
message.updated
Sent when a user modifies or updates a message.
✉
message_deleted
message.deleted
Sent when a message is deleted.
✉
message_send_success
message.send_success
Sent when a message is sent and delivered successfully. Fires for scheduled sends (using `send_at`), and for synchronous sends when you enable synchronous send webhooks in the Nylas Dashboard.
✉
message_send_failed
message.send_failed
Sent when a message fails to send or deliver. Fires for scheduled sends (using `send_at`), and for synchronous sends when you enable synchronous send webhooks in the Nylas Dashboard.
✉
message_bounce_detected
message.bounce_detected
Sent when Nylas detects a Non-Delivery Report (NDR) in the sender's inbox for a message sent via Nylas. Requires the provider to generate an NDR. Available for Google, Microsoft Graph, iCloud, and Yahoo.
✉
message_opened
message.opened
Sent when a participant opens a tracked message.
✉
message_link_clicked
message.link_clicked
Sent when a participant clicks a link in a tracked message.
✉
thread_replied
thread.replied
Sent when a participant replies to a tracked email thread.
✉
message_opened_legacy
message.opened.legacy
Legacy format for message opened tracking notifications.
✉
message_link_clicked_legacy
message.link_clicked.legacy
Legacy format for link clicked tracking notifications.
✉
thread_replied_legacy
thread.replied.legacy
Legacy format for thread replied tracking notifications.
✉
message_created_metadata
message.created.metadata
Sent for Google grants using the `/gmail.metadata` scope. Does not include `body`, `snippet`, or `attachment` fields.
✉
message_updated_metadata
message.updated.metadata
Sent for Google grants using the `/gmail.metadata` scope when a message is updated. Limited field set.
✉
folder_created
folder.created
Sent when a user creates a folder.
✉
folder_updated
folder.updated
Sent when a user updates a folder.
✉
folder_deleted
folder.deleted
Sent when a user deletes a folder.
✉
calendar_created
calendar.created
Sent when a user creates a calendar.
✉
calendar_updated
calendar.updated
Sent when the name, description, location, or timezone of a calendar changes.
✉
calendar_deleted
calendar.deleted
Sent when a user deletes a calendar.
✉
event_created
event.created
Sent when an event is created on a user's calendar.
✉
event_updated
event.updated
Sent when an event is modified or updated. Includes the `occurrences` parameter if the updated event is a single occurrence of a recurring Google event.
✉
event_deleted
event.deleted
Sent when an event is deleted from a user's calendar.
✉
contact_updated
contact.updated
Sent when a user creates or updates a contact. Most providers don't differentiate between creating and updating contacts.
✉
contact_deleted
contact.deleted
Sent when a user deletes a contact.
✉
booking_created
booking.created
Sent when a guest creates a booking.
✉
booking_pending
booking.pending
Sent when a guest schedules a pending booking that requires confirmation.
✉
booking_rescheduled
booking.rescheduled
Sent when a guest reschedules a booking.
✉
booking_cancelled
booking.cancelled
Sent when a guest cancels a booking.
✉
booking_reminder
booking.reminder
Sent at the scheduled reminder time before a booking.
✉
notetaker_created
notetaker.created
Sent when you create or schedule a Notetaker bot. For ad-hoc meetings, `join_time`, `event.ical_uid`, and `event.event_id` are omitted.
✉
notetaker_updated
notetaker.updated
Sent when you update a scheduled Notetaker bot's settings or join time. Only fires while in `scheduled` state.
✉
notetaker_deleted
notetaker.deleted
Sent when a Notetaker bot is deleted, its associated event is cancelled, or its settings are set to null.
✉
notetaker_meeting_state
notetaker.meeting_state
Sent when the Notetaker bot transitions between meeting lifecycle states. The notification includes both a `state` field (the lifecycle phase) and a `meeting_state` field (the specific reason for the transition).
✉
notetaker_media
notetaker.media
Sent when a recording or transcription is processing, available, or deleted. When the [retention window](/docs/v3/notetaker/retention-policies/) elapses, Nylas sends a final `notetaker.media` notification with `status: media_deleted` and no `media` object.
✉
message_intelligence_order
message.intelligence.order
Sent when a user receives a message with e-commerce order information.
✉
message_intelligence_tracking
message.intelligence.tracking
Sent when a user receives a message with tracking information for an e-commerce order.
✉
message_intelligence_return
message.intelligence.return
Sent when a user receives a message with return information for an e-commerce order.
✉
message_intelligence_travel
message.intelligence.travel
Sent when a user receives a message with travel booking information such as flights, hotels, or car rentals.
✉
message_transactional_bounced
message.transactional.bounced
Sent when a transactional email was not delivered due to a hard bounce.
✉
message_transactional_complaint
message.transactional.complaint
Sent when a transactional email was delivered but the recipient marked it as spam.
✉
message_transactional_delivered
message.transactional.delivered
Sent when a transactional email was successfully delivered to the recipient's mail server.
✉
message_transactional_rejected
message.transactional.rejected
Sent when a transactional email was rejected because one or more attachments contained a virus.
✉
message_bounced
message.bounced
Sent when an email was not delivered due to a hard bounce.
✉
message_complaint
message.complaint
Sent when an email was delivered but the recipient marked it as spam.
✉
message_delivered
message.delivered
Sent when an email was successfully delivered to the recipient's mail server.
✉
message_rejected
message.rejected
Sent when an email was rejected because one or more attachments contained a virus.

Servers

https
webhook
The HTTPS endpoint you register with POST /v3/webhooks. Nylas verifies it once with a GET carrying a `challenge` query parameter that must be echoed in a 200 response within 10 seconds, then POSTs each notification. Respond 200; Nylas retries 408, 429 (honouring Retry-After), 502 and 503, marks the endpoint `failing` at 95% non-200 over 15 minutes, keeps delivering with exponential backoff for 72 hours, then marks it `failed`. With `compressed_delivery: true` the body is gzip-compressed and sent with `Content-Encoding: gzip`.
googlepubsub
pubsub
A Pub/Sub topic in your Google Cloud project, registered with POST /v3/channels/pubsub. Grant roles/pubsub.publisher on the topic to nylas-datapublisher@nylas-gma-mt.iam.gserviceaccount.com. Each message carries a `trigger_type` attribute, plus `content_encoding: gzip` when compressed delivery is enabled. Up to five Pub/Sub channels per application.
sns
sns
A Standard (not FIFO) SNS topic in your AWS account, registered with POST /v3/channels/sns. Nylas assumes your IAM role with AWS STS AssumeRoleWithWebIdentity using a Google-issued OIDC token and publishes with sns:Publish. Messages carry a `trigger_type` message attribute, plus `content_encoding: gzip+base64` when compressed delivery is enabled. A `connector.verification` test event is published when the channel is created. Up to five SNS channels per application.

AsyncAPI Specification

Raw ↑
# Nylas Notifications — AsyncAPI 3.1. Authored by Nylas; see info.x-provenance.
asyncapi: 3.0.0
id: urn:com:nylas:v3:notifications
info:
  title: Nylas Notifications
  version: v3
  description: 'Change notifications Nylas pushes for grants, messages, message tracking, folders, calendars, events,
    contacts, Scheduler bookings, Notetaker, ExtractAI, Transactional Email and Agent Accounts. Every notification
    is a CloudEvents 1.0 envelope whose `data.object` carries the affected resource. The same payloads are delivered
    over three interchangeable transports: an HTTPS webhook to an endpoint you register, a Google Cloud Pub/Sub
    topic in your project, or an Amazon SNS topic in your AWS account. Nylas guarantees at-least-once delivery,
    so deduplicate on the envelope `id`. Payloads over 1 MB are truncated for `message.*` triggers and carry a `.truncated`
    suffix on `type`; `.cleaned` and `.transformed` suffixes can also combine. Subscribe to triggers with POST /v3/webhooks,
    POST /v3/channels/pubsub or POST /v3/channels/sns.'
  contact:
    name: Nylas Support
    url: https://developer.nylas.com/docs/support/
  license:
    name: Nylas Terms of Service
    url: https://www.nylas.com/legal/terms/
  externalDocs:
    description: Using webhooks with Nylas
    url: https://developer.nylas.com/docs/v3/notifications/
  tags:
  - name: Grants
    description: Notifications about grant lifecycle events including creation, updates, expiration, and deletion.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/grants/
  - name: Messages
    description: Notifications about email message events — new messages, updates, send results, bounces, and tracking.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/messages/
  - name: Message Tracking
    description: Notifications for tracked message opens, link clicks, and replies.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/message-tracking/
  - name: Message Metadata
    description: Limited notifications for Google accounts using the gmail.metadata scope.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/message-metadata/
  - name: Folders and Labels
    description: Notifications about email folder and label events.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/folders/
  - name: Calendar
    description: Notifications about calendar creation, modification, and deletion.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/calendar/
  - name: Events
    description: Notifications about calendar event creation, modification, and deletion.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/events/
  - name: Contacts
    description: Notifications about contact creation, modification, and deletion.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/contacts/
  - name: Scheduler
    description: Notifications about booking events from Nylas Scheduler.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/scheduler/
  - name: Notetaker
    description: Notifications about Notetaker bot lifecycle, meeting states, and media processing.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/notetaker/
  - name: ExtractAI
    description: Notifications when ExtractAI detects e-commerce orders, tracking, or returns in email messages.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/extractai/
  - name: Transactional Email
    description: Delivery status notifications for transactional emails.
    externalDocs:
      url: https://developer.nylas.com/docs/reference/notifications/transactional-email/


# --- truncated at 32 KB (131 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nylas/refs/heads/main/asyncapi/nylas-notifications-asyncapi.yml

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/nylas-notifications-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.