Novu

Novu is open-source notification infrastructure that sends multi-channel messages - email, SMS, push, chat, and an in-app Inbox - from a single workflow trigger. A single event API call fans a notification out across channels defined in a workflow, with subscriber management, topics, layouts, digest/aggregation, 55+ provider integrations, and a real-time embeddable Inbox notification center powered by a WebSocket connection. Novu is self-hostable (MIT) and also available as Novu Cloud, with US (api.novu.co) and EU (eu.api.novu.co) regions.

13 APIs 0 Features
NotificationsMulti-ChannelEmailSMSPushChatIn-App InboxOpen SourceWebSocket

APIs

Novu Events API

Trigger notification workflows for one or many subscribers. A single event fans out across the channels defined in a workflow - in-app, email, SMS, push, and chat - with bulk tr...

Novu Subscribers API

Create, retrieve, update, delete, and bulk-manage subscribers - the recipients of notifications - along with their channel credentials (device tokens, chat webhooks), online sta...

Novu Topics API

Group subscribers into topics addressed by a topic key, then trigger a single event to notify the whole audience. Manage topic subscriptions - add, list, check, and remove subsc...

Novu Inbox API

The in-app notification center feed for a subscriber - list feed items, read unseen/unread counts, and mark, read, unread, seen, archive, snooze, or delete notifications. Backs ...

Novu Messages API

List the individual channel messages generated by workflow executions, filter by channel/subscriber/transactionId, and delete messages individually or by transactionId.

Novu Notifications API

Query the activity feed of triggered workflow executions (events) - list with filters and retrieve a single notification/event record with its per-step execution outcome for obs...

Novu Workflows API

Create, list, retrieve, update, patch, delete, and sync notification workflows (formerly notification templates) - the multi-channel step definitions (in-app, email, SMS, push, ...

Novu Integrations API

Configure the delivery providers behind each channel - create, list (all and active), retrieve, update, and delete integrations across 55+ providers (SendGrid, Twilio, FCM, APNs...

Novu Layouts API

Manage reusable email layouts that wrap notification content - create, list, retrieve, update, delete, duplicate, preview, and inspect usage of the shared header/footer wrappers...

Novu Subscriber Preferences API

Read and update per-subscriber notification preferences - which workflows and channels a subscriber is opted into - including bulk preference updates that let end users control ...

Novu Environments API

Manage Novu environments (Development, Production, and more) and promote resources between them - create, list, update, delete environments, list tags, compare, and publish chan...

Novu Translations API

Localize notification content across locales - create, retrieve, and delete translations per resource and locale, manage translation groups, and import or upload master translat...

Novu Inbox Realtime API

Real-time WebSocket (Socket.IO) surface that pushes live Inbox updates to browser and mobile clients - notification_received, unseen_count_changed, and unread_count_changed even...

Collections

Novu API

OPEN

Pricing Plans

Novu Co Plans Pricing

5 plans

PLANS

Rate Limits

Novu Co Rate Limits

13 limits

RATE LIMITS

FinOps

Event Specifications

Novu Inbox Realtime (WebSocket / Socket.IO)

AsyncAPI 2.6 description of Novu's **Inbox real-time WebSocket** surface - the connection that powers the live bell, counts, and feed of Novu's embeddable in-app `` notif...

ASYNCAPI

Resources

🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Novu API
  version: '1.0'
request:
  auth:
    type: apikey
    apikey:
      key: Authorization
      value: ApiKey {{secretKey}}
      in: header
items:
- info:
    name: Events
    type: folder
  items:
  - info:
      name: Trigger event
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/events/trigger
      body:
        type: json
        data: '{ "name": "welcome-workflow", "to": "user_123", "payload": {} }'
    docs: Triggers a notification workflow for one or more subscribers.
  - info:
      name: Bulk trigger events
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/events/trigger/bulk
      body:
        type: json
        data: '{ "events": [] }'
    docs: Triggers up to 100 events in one request (costs 100 rate-limit tokens).
  - info:
      name: Broadcast event to all
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/events/broadcast
      body:
        type: json
        data: '{ "name": "announcement", "payload": {} }'
    docs: Triggers a workflow for all subscribers in the environment.
  - info:
      name: Cancel triggered event
      type: http
    http:
      method: DELETE
      url: https://api.novu.co/v1/events/trigger/:transactionId
      params:
      - name: transactionId
        value: ''
        type: path
        description: The transactionId of the triggered event.
    docs: Cancels a triggered event by transactionId.
- info:
    name: Subscribers
    type: folder
  items:
  - info:
      name: Create a subscriber
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/subscribers
      body:
        type: json
        data: '{ "subscriberId": "user_123", "email": "user@example.com" }'
    docs: Creates a subscriber (notification recipient).
  - info:
      name: Retrieve a subscriber
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/subscribers/:subscriberId
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
    docs: Retrieves a subscriber by ID.
  - info:
      name: Update a subscriber
      type: http
    http:
      method: PUT
      url: https://api.novu.co/v1/subscribers/:subscriberId
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
      body:
        type: json
        data: '{}'
    docs: Updates a subscriber.
  - info:
      name: Delete a subscriber
      type: http
    http:
      method: DELETE
      url: https://api.novu.co/v1/subscribers/:subscriberId
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
    docs: Deletes a subscriber.
- info:
    name: Topics
    type: folder
  items:
  - info:
      name: Create a topic
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/topics
      body:
        type: json
        data: '{ "key": "product-updates", "name": "Product Updates" }'
    docs: Creates a topic (addressable audience).
  - info:
      name: List all topics
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/topics
    docs: Lists topics.
  - info:
      name: Add subscribers to a topic
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/topics/:topicKey/subscribers
      params:
      - name: topicKey
        value: ''
        type: path
        description: The topic key.
      body:
        type: json
        data: '{ "subscribers": ["user_123"] }'
    docs: Adds subscribers to a topic.
- info:
    name: Inbox
    type: folder
  items:
  - info:
      name: Retrieve the in-app notification feed
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/subscribers/:subscriberId/notifications/feed
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
    docs: Returns the subscriber's in-app (Inbox) feed. Live updates arrive over the WebSocket at wss://ws.novu.co.
  - info:
      name: Retrieve unseen count
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/subscribers/:subscriberId/notifications/unseen
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
    docs: Returns the unseen count - pushed live as unseen_count_changed over the WebSocket.
  - info:
      name: Mark in-app messages as seen/read
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/subscribers/:subscriberId/messages/markAs
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
      body:
        type: json
        data: '{ "messageId": "", "mark": { "seen": true, "read": true } }'
    docs: Marks in-app messages as seen or read.
- info:
    name: Messages
    type: folder
  items:
  - info:
      name: List all messages
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/messages
    docs: Lists channel messages produced by workflow executions.
  - info:
      name: Delete a message
      type: http
    http:
      method: DELETE
      url: https://api.novu.co/v1/messages/:messageId
      params:
      - name: messageId
        value: ''
        type: path
        description: The message ID.
    docs: Deletes a message.
- info:
    name: Notifications
    type: folder
  items:
  - info:
      name: List all events
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/notifications
    docs: Lists the activity feed of triggered workflow executions.
  - info:
      name: Retrieve an event
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/notifications/:notificationId
      params:
      - name: notificationId
        value: ''
        type: path
        description: The notification/event ID.
    docs: Retrieves a single event with per-step execution detail.
- info:
    name: Workflows
    type: folder
  items:
  - info:
      name: Create a workflow
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/workflows
      body:
        type: json
        data: '{ "name": "Welcome", "workflowId": "welcome-workflow", "steps": [] }'
    docs: Creates a multi-channel notification workflow.
  - info:
      name: List all workflows
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/workflows
    docs: Lists workflows.
  - info:
      name: Retrieve a workflow
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/workflows/:workflowId
      params:
      - name: workflowId
        value: ''
        type: path
        description: The workflow ID.
    docs: Retrieves a workflow.
- info:
    name: Integrations
    type: folder
  items:
  - info:
      name: List all integrations
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/integrations
    docs: Lists channel provider integrations.
  - info:
      name: Create an integration
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/integrations
      body:
        type: json
        data: '{ "providerId": "sendgrid", "channel": "email", "active": true }'
    docs: Creates a provider integration.
- info:
    name: Layouts
    type: folder
  items:
  - info:
      name: List all layouts
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/layouts
    docs: Lists reusable email layouts.
  - info:
      name: Create a layout
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/layouts
      body:
        type: json
        data: '{ "name": "Default", "content": "<html>{{content}}</html>" }'
    docs: Creates an email layout.
- info:
    name: Preferences
    type: folder
  items:
  - info:
      name: Retrieve subscriber preferences
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/subscribers/:subscriberId/preferences
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
    docs: Reads per-subscriber notification preferences.
  - info:
      name: Update subscriber preferences
      type: http
    http:
      method: PATCH
      url: https://api.novu.co/v1/subscribers/:subscriberId/preferences
      params:
      - name: subscriberId
        value: ''
        type: path
        description: The subscriber ID.
      body:
        type: json
        data: '{ "channel": { "type": "email", "enabled": false } }'
    docs: Updates per-subscriber notification preferences.
- info:
    name: Environments
    type: folder
  items:
  - info:
      name: List all environments
      type: http
    http:
      method: GET
      url: https://api.novu.co/v1/environments
    docs: Lists environments.
  - info:
      name: Publish to target environment
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/environments/publish
      body:
        type: json
        data: '{ "targetEnvironmentId": "" }'
    docs: Publishes resources to a target environment.
- info:
    name: Translations
    type: folder
  items:
  - info:
      name: Create a translation
      type: http
    http:
      method: POST
      url: https://api.novu.co/v1/translations
      body:
        type: json
        data: '{ "resourceType": "workflow", "resourceId": "welcome-workflow", "locale": "es_ES", "content": {} }'
    docs: Creates a translation for a resource and locale.