Skip to main content

Bridge Endpoint Setup

The Bridge Endpoint is a single HTTP route on your application (/api/novu by default) that Novu Cloud calls to:
  • Discover registered workflows (GET)
  • Resolve step content for a given subscriber + payload (POST)
  • Verify HMAC signatures on incoming requests
  • Respond to OPTIONS preflight requests
Each framework ships a serve wrapper that handles parsing, HMAC verification, and response shaping.

Defaults

You may use any path. The full bridge URL becomes <your-app-base-url><path>. Example: https://api.acme.com/internal/novu.

Next.js (App Router)

Next.js (Pages Router)

Express

NestJS

Basic

With Dependency Injection

Remix

SvelteKit

Nuxt

H3

AWS Lambda

Wire novu to API Gateway / Lambda Function URL. Use a stable URL for the bridge — avoid generated stage URLs that rotate.

Custom serve Function (Any Framework)

If your framework isn’t directly supported, wrap NovuRequestHandler:
The handler must implement:

Tunnel URL vs Bridge URL

The tunnel ID is persisted on your machine, so the same URL is reused across npx novu dev runs.

FAQ

Does the bridge endpoint need to be publicly accessible?

Yes. Novu Cloud calls it from autoscaled workers — there’s no static IP to allowlist. Use HTTPS in production.

Can I use a path other than /api/novu?

Yes. Set the path you want when mounting serve and pass the full URL (https://app.com/<path>) when syncing.

Does the bridge use my application’s auth middleware?

You can place the bridge behind any middleware as long as serve receives untouched GET/POST/OPTIONS requests. Don’t attach JWT auth to the bridge — Novu authenticates with HMAC instead.