{ "info": { "name": "Novu API", "description": "Open-source notification infrastructure. Trigger multi-channel notification workflows (email, SMS, push, chat, in-app Inbox) from a single event, and manage subscribers, topics, the in-app feed, messages, notifications (activity), workflows, integrations, layouts, preferences, environments, and translations. Base URL: https://api.novu.co/v1 (US) or https://eu.api.novu.co/v1 (EU). Auth: header Authorization: ApiKey . Novu is open source (github.com/novuhq/novu) and self-hostable. The in-app Inbox also uses a real-time WebSocket at wss://ws.novu.co (see the AsyncAPI document).", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "auth": { "type": "apikey", "apikey": [ { "key": "key", "value": "Authorization", "type": "string" }, { "key": "value", "value": "ApiKey {{secretKey}}", "type": "string" }, { "key": "in", "value": "header", "type": "string" } ] }, "variable": [ { "key": "baseUrl", "value": "https://api.novu.co/v1", "type": "string" }, { "key": "secretKey", "value": "", "type": "string" } ], "item": [ { "name": "Events", "item": [ { "name": "Trigger event", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"name\": \"welcome-workflow\",\n \"to\": { \"subscriberId\": \"user_123\", \"email\": \"user@example.com\" },\n \"payload\": { \"firstName\": \"Alex\" }\n}" }, "url": { "raw": "{{baseUrl}}/events/trigger", "host": ["{{baseUrl}}"], "path": ["events", "trigger"] }, "description": "Triggers a notification workflow for one or more subscribers." } }, { "name": "Bulk trigger events", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"events\": [\n { \"name\": \"welcome-workflow\", \"to\": \"user_123\", \"payload\": {} }\n ]\n}" }, "url": { "raw": "{{baseUrl}}/events/trigger/bulk", "host": ["{{baseUrl}}"], "path": ["events", "trigger", "bulk"] }, "description": "Triggers up to 100 events in one request (costs 100 rate-limit tokens)." } }, { "name": "Broadcast event to all", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"name\": \"announcement\",\n \"payload\": {}\n}" }, "url": { "raw": "{{baseUrl}}/events/broadcast", "host": ["{{baseUrl}}"], "path": ["events", "broadcast"] }, "description": "Triggers a workflow for all subscribers in the environment." } }, { "name": "Cancel triggered event", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/events/trigger/:transactionId", "host": ["{{baseUrl}}"], "path": ["events", "trigger", ":transactionId"], "variable": [{ "key": "transactionId", "value": "" }] }, "description": "Cancels a triggered event by transactionId." } } ] }, { "name": "Subscribers", "item": [ { "name": "Create a subscriber", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"subscriberId\": \"user_123\",\n \"email\": \"user@example.com\",\n \"firstName\": \"Alex\"\n}" }, "url": { "raw": "{{baseUrl}}/subscribers", "host": ["{{baseUrl}}"], "path": ["subscribers"] }, "description": "Creates a subscriber (notification recipient)." } }, { "name": "Retrieve a subscriber", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Retrieves a subscriber by ID." } }, { "name": "Update a subscriber", "request": { "method": "PUT", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Alex\",\n \"phone\": \"+15555550123\"\n}" }, "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Updates a subscriber." } }, { "name": "Delete a subscriber", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Deletes a subscriber." } } ] }, { "name": "Topics", "item": [ { "name": "Create a topic", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"key\": \"product-updates\",\n \"name\": \"Product Updates\"\n}" }, "url": { "raw": "{{baseUrl}}/topics", "host": ["{{baseUrl}}"], "path": ["topics"] }, "description": "Creates a topic (addressable audience)." } }, { "name": "List all topics", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/topics", "host": ["{{baseUrl}}"], "path": ["topics"] }, "description": "Lists topics." } }, { "name": "Add subscribers to a topic", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"subscribers\": [\"user_123\"]\n}" }, "url": { "raw": "{{baseUrl}}/topics/:topicKey/subscribers", "host": ["{{baseUrl}}"], "path": ["topics", ":topicKey", "subscribers"], "variable": [{ "key": "topicKey", "value": "" }] }, "description": "Adds subscribers to a topic." } } ] }, { "name": "Inbox", "item": [ { "name": "Retrieve the in-app notification feed", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId/notifications/feed", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId", "notifications", "feed"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Returns the subscriber's in-app (Inbox) feed. Live updates arrive over the WebSocket at wss://ws.novu.co." } }, { "name": "Retrieve unseen count", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId/notifications/unseen", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId", "notifications", "unseen"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Returns the unseen count - pushed live as unseen_count_changed over the WebSocket." } }, { "name": "Mark in-app messages as seen/read", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"messageId\": \"64f1a2b3c4d5e6f70819aa01\",\n \"mark\": { \"seen\": true, \"read\": true }\n}" }, "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId/messages/markAs", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId", "messages", "markAs"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Marks in-app messages as seen or read." } } ] }, { "name": "Messages", "item": [ { "name": "List all messages", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/messages", "host": ["{{baseUrl}}"], "path": ["messages"] }, "description": "Lists channel messages produced by workflow executions." } }, { "name": "Delete a message", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/messages/:messageId", "host": ["{{baseUrl}}"], "path": ["messages", ":messageId"], "variable": [{ "key": "messageId", "value": "" }] }, "description": "Deletes a message." } } ] }, { "name": "Notifications", "item": [ { "name": "List all events", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/notifications", "host": ["{{baseUrl}}"], "path": ["notifications"] }, "description": "Lists the activity feed of triggered workflow executions." } }, { "name": "Retrieve an event", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/notifications/:notificationId", "host": ["{{baseUrl}}"], "path": ["notifications", ":notificationId"], "variable": [{ "key": "notificationId", "value": "" }] }, "description": "Retrieves a single event with per-step execution detail." } } ] }, { "name": "Workflows", "item": [ { "name": "Create a workflow", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"name\": \"Welcome\",\n \"workflowId\": \"welcome-workflow\",\n \"steps\": [ { \"type\": \"in_app\" }, { \"type\": \"email\" } ]\n}" }, "url": { "raw": "{{baseUrl}}/workflows", "host": ["{{baseUrl}}"], "path": ["workflows"] }, "description": "Creates a multi-channel notification workflow." } }, { "name": "List all workflows", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/workflows", "host": ["{{baseUrl}}"], "path": ["workflows"] }, "description": "Lists workflows." } }, { "name": "Retrieve a workflow", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/workflows/:workflowId", "host": ["{{baseUrl}}"], "path": ["workflows", ":workflowId"], "variable": [{ "key": "workflowId", "value": "" }] }, "description": "Retrieves a workflow." } } ] }, { "name": "Integrations", "item": [ { "name": "List all integrations", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/integrations", "host": ["{{baseUrl}}"], "path": ["integrations"] }, "description": "Lists channel provider integrations." } }, { "name": "Create an integration", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"providerId\": \"sendgrid\",\n \"channel\": \"email\",\n \"credentials\": {},\n \"active\": true\n}" }, "url": { "raw": "{{baseUrl}}/integrations", "host": ["{{baseUrl}}"], "path": ["integrations"] }, "description": "Creates a provider integration." } } ] }, { "name": "Layouts", "item": [ { "name": "List all layouts", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/layouts", "host": ["{{baseUrl}}"], "path": ["layouts"] }, "description": "Lists reusable email layouts." } }, { "name": "Create a layout", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"name\": \"Default\",\n \"content\": \"{{content}}\"\n}" }, "url": { "raw": "{{baseUrl}}/layouts", "host": ["{{baseUrl}}"], "path": ["layouts"] }, "description": "Creates an email layout." } } ] }, { "name": "Preferences", "item": [ { "name": "Retrieve subscriber preferences", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId/preferences", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId", "preferences"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Reads per-subscriber notification preferences." } }, { "name": "Update subscriber preferences", "request": { "method": "PATCH", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"channel\": { \"type\": \"email\", \"enabled\": false }\n}" }, "url": { "raw": "{{baseUrl}}/subscribers/:subscriberId/preferences", "host": ["{{baseUrl}}"], "path": ["subscribers", ":subscriberId", "preferences"], "variable": [{ "key": "subscriberId", "value": "" }] }, "description": "Updates per-subscriber notification preferences." } } ] }, { "name": "Environments", "item": [ { "name": "List all environments", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/environments", "host": ["{{baseUrl}}"], "path": ["environments"] }, "description": "Lists environments." } }, { "name": "Publish to target environment", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"targetEnvironmentId\": \"\"\n}" }, "url": { "raw": "{{baseUrl}}/environments/publish", "host": ["{{baseUrl}}"], "path": ["environments", "publish"] }, "description": "Publishes resources to a target environment." } } ] }, { "name": "Translations", "item": [ { "name": "Create a translation", "request": { "method": "POST", "header": [{ "key": "Content-Type", "value": "application/json" }], "body": { "mode": "raw", "raw": "{\n \"resourceType\": \"workflow\",\n \"resourceId\": \"welcome-workflow\",\n \"locale\": \"es_ES\",\n \"content\": {}\n}" }, "url": { "raw": "{{baseUrl}}/translations", "host": ["{{baseUrl}}"], "path": ["translations"] }, "description": "Creates a translation for a resource and locale." } } ] } ] }