Webhooks

Webhooks in Nautilus are the Relay API (/v1/relay/*, for API keys with the relay scope): your application publishes an event once, and it reaches every endpoint subscribed to it, with retries, signatures and a delivery log you do not have to build. For the events of your end users themselves (sign-ups, sign-ins, password changes), see Webhooks for sign-in and user events. This section calls it Relay wherever it names the API.

How it works

At its core, Relay is an HTTP event pipeline: your application publishes events, and Relay guarantees they reach every registered endpoint with retries, signing, and observability built in.

Under the hood, Relay is powered by Svix, an open-source webhooks engine, behind our Rust gateway, which handles authentication, rate limiting and keeping each account's events apart.

What you get

CapabilityDescription
Guaranteed DeliveryAutomatic retries with exponential backoff, on a fixed schedule.
Cryptographic SigningEvery payload is HMAC-signed so consumers can verify authenticity.
Delivery LogSee every delivery attempt for a message in the dashboard — the payload you sent, the response status code and the body your server returned — and send it again from there with Resend, or replay everything that failed since a moment you pick (up to 14 days back) with Replay failed.
Multi-tenantEach tenant gets isolated endpoints, keys, and event types.
Zero OpsNo queues to manage, no workers to scale — just an API call.

Quick Start

  1. Create an API key with Webhooks ticked on Dashboard → API Keys.
  2. Register a webhook endpoint in the dashboard, under Webhooks.
  3. Start sending events from your backend.
curl -X POST https://api.vernesoft.com/v1/relay/messages \
  -H "Authorization: Bearer vrn_9f8a7..." \
  -H "Content-Type: application/json" \
  -d '{"event_type": "user.created", "payload": {"id": "usr_001"}}'

That's it — Relay handles delivery, retries, and logging.