Developers

Build with Kazuni

One REST API for transactional and marketing email, with SMS arriving on the same endpoint. Webhooks for every event, idempotent by design.

Quickstart

01

Get your API key

Create a workspace, verify your sending domain, and copy your key from API Keys. Test keys sandbox everything.

02

Send your first email

One POST request. The response returns a message id you can follow forever.

03

Listen for events

Point a webhook at your server and get delivered, opened, bounced, and complained events, signed.

Send an email

curl -X POST https://api.kazuni.io/v1/emails \
  -H "Authorization: Bearer kz_live_..." \
  -H "Idempotency-Key: order-4519-confirmation" \
  -d '{
    "from": "receipts@yourshop.mw",
    "to": "amina@example.com",
    "subject": "Your order is on its way",
    "template": "order-shipped",
    "data": { "order": "4519" }
  }'

201 { "id": "msg_01h9...", "status": "queued" }

SDKs shown are the planned interface: the TypeScript SDK ships first.

Endpoints

POST/v1/emailsSend transactional or campaign email
GET/v1/messages/{id}Full delivery timeline for one message
GET/v1/messagesFilter by status, recipient, template, time
POST/v1/templatesCreate or version a template
GET/v1/segments/{id}/contactsResolve a segment to its members
POST/v1/smsComing soon: same shape, new channel

Webhooks

Every delivery event posts to your endpoint with an HMAC signature header. Verify, then trust.

{
  "type": "email.delivered",
  "message_id": "msg_01h9...",
  "to": "amina@example.com",
  "at": "2026-07-18T14:02:12.408Z",
  "meta": { "template": "order-shipped" }
}