A REST API that sends transactional email, marketing campaigns, and invoices with built-in payment collection. One POST request. Typed SDKs. Webhooks for delivery and payments. No Stripe. No payment pages. No glue code.
Quickstart
npm install @boredmails/sdk
import { Boredmails } from '@boredmails/sdk'; const bm = new Boredmails('bm_live_your_api_key'); // Simple email await bm.send({ from: 'studio@boredmails.online', to: 'client@company.com', subject: 'Your project is ready', html: '<p>Take a look at the final deliverables.</p>', }); // Email with payment collection (Boredmails-only) const { id, payment_url } = await bm.send({ from: 'studio@boredmails.online', to: 'client@company.com', subject: 'Invoice #047 — Brand Identity', html: invoiceHtml, payment: { amount: 2500.00, currency: 'USD', due_date: '2026-05-01', description: 'Brand identity package', }, }); // payment_url is auto-injected into the email template // Webhook fires on email.payment.completed when client pays
API Reference
Send an email. Optionally attach a payment request.
| Parameter | Type | Description |
|---|---|---|
| from* | string | Sender address (must be verified domain or @boredmails.online) |
| to* | string | string[] | Recipient address(es) |
| subject* | string | Email subject line |
| html | string | HTML body |
| text | string | Plain text fallback |
| cc | string[] | CC recipients |
| bcc | string[] | BCC recipients |
| reply_to | string | Reply-To address |
| headers | object | Custom email headers |
| tags | string[] | Tags for analytics grouping |
| payment | object | Payment request (amount, currency, due_date, description). Injects a one-click Pay button into the email. |
Send up to 100 emails in a single request. Supports per-recipient personalization and payment objects.
Retrieve email status, delivery info, and payment state.
Add and verify a custom sending domain. Returns DNS records to configure.
List all verified sending domains on your account.
Delivery stats, open rates, bounce rates, and payment conversion rates. Filterable by date range and tags.
Webhooks
Configure a single webhook URL. We POST JSON for every event. Retry with exponential backoff on failure.
{
"type": "email.payment.completed",
"data": {
"email_id": "em_7x9k2m...",
"to": "client@company.com",
"payment": {
"amount": 2500.00,
"currency": "USD",
"reference": "pay_a8f3...",
"completed_at": "2026-04-09T14:32:00Z"
}
}
}
SDKs
Fully typed SDKs so your editor does the work. Or use the REST API directly.
npm install @boredmails/sdk
pip install boredmails
go get github.com/boredmails/go
POST https://api.boredmails.online/v1/emails
Free tier. No credit card. 100 emails/month to start. Upgrade when your business does.