Skip to content
Built for reliable delivery.Quickstart

Built for the messages that matter

Message delivery.Under control.

One API for email, SMS, and webhooks, with queues, retries, templates, and a complete delivery trail.

Three graphite notification modules connected by an amber signal rail

One event, three routes

Each channel keeps its own delivery history.

EmailSMSWebhooks

03

Channels

Safe

Retries

Full

History

Official server SDKs

Send the same event from TypeScript, Python, or Go.

Server-side clients keep authentication, request shape, and failures consistent.

npm install @beaco/sdk
import { Beaco } from "@beaco/sdk";

const beaco = new Beaco({
  apiKey: process.env.BEACO_API_KEY!,
});

await beaco.events.publish({
  eventType: "user.welcome",
  recipients: [{
    channels: ["email"],
    email: "[email protected]",
  }],
  payload: { name: "Ada" },
});

One event enters. Beaco handles the rest.

Your application emits business events. Beaco turns them into dependable customer messages and keeps the operational detail attached.

Create an event
curl -X POST https://api.beaco.dev/v1/events \
  -H "X-API-Key: nk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "invoice.paid",
    "channels": ["email", "webhook"],
    "recipient": { "email": "[email protected]" },
    "data": { "invoice_id": "inv_84Q2" }
  }'
01

Accept

Validate the event and lock its idempotency key.

02

Route

Fan out to the right channel and render its template.

03

Deliver

Send through the provider with channel-aware retries.

04

Record

Keep every attempt available for support and audit work.

The failure cases already have a home.

Queues and providers fail in different ways. Beaco keeps each recovery path explicit, inspectable, and safe to operate.

Retries that know when to stop

Transient failures back off automatically. Permanent failures move somewhere useful instead of looping forever.

A dead-letter queue you can work from

Inspect the payload, provider response, and attempt history before you replay a failed delivery.

Idempotency at the door

Safe retries begin before an event reaches the queue, so duplicate requests do not become duplicate messages.

Suppression before send

Block opted-out or unsafe recipients centrally, with a traceable reason attached to every decision.

The first event takes minutes

Start with one event. Keep the control.