Retries that know when to stop
Transient failures back off automatically. Permanent failures move somewhere useful instead of looping forever.
Built for the messages that matter
One API for email, SMS, and webhooks, with queues, retries, templates, and a complete delivery trail.


One event, three routes
Each channel keeps its own delivery history.
03
Channels
Safe
Retries
Full
History
Official server SDKs
Server-side clients keep authentication, request shape, and failures consistent.
npm install @beaco/sdkimport { 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" },
});Your application emits business events. Beaco turns them into dependable customer messages and keeps the operational detail attached.
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" }
}'Validate the event and lock its idempotency key.
Fan out to the right channel and render its template.
Send through the provider with channel-aware retries.
Keep every attempt available for support and audit work.
Queues and providers fail in different ways. Beaco keeps each recovery path explicit, inspectable, and safe to operate.
Transient failures back off automatically. Permanent failures move somewhere useful instead of looping forever.
Inspect the payload, provider response, and attempt history before you replay a failed delivery.
Safe retries begin before an event reaches the queue, so duplicate requests do not become duplicate messages.
Block opted-out or unsafe recipients centrally, with a traceable reason attached to every decision.
The first event takes minutes