Send email
Send transactional and opted-in marketing email through the project’s regional API. Boundry supports HTML, text alternatives, CC, BCC, reply-to, tags, attachments, managed unsubscribe and idempotency keys.
Before you send
Verify the domain The From address must use a verified sending domain in this project.
Create an API key Keys are scoped to the project’s regional data plane.
Make an idempotent request Send Idempotency-Key when retries are possible.
Build the message
Provide one or more recipients, a subject and either html or text. Boundry generates a text alternative when only HTML is supplied and sends both as multipart/alternative.
{
"from": "Acme <hello@mail.acme.com>",
"to": "customer@example.com",
"subject": "Your receipt",
"text": "Thanks for your order."
}Turn on managed unsubscribe
Set the default in the sending domain’s configuration. An omitted or null unsubscribe value inherits that default; send true or false to override it for one message. Boundry creates an opaque recipient URL, adds both RFC 8058 headers, and suppresses the address when a mailbox provider posts the one-click request. Managed unsubscribe requires exactly one recipient; broadcasts enable it automatically.
{
"from": "Acme <news@mail.acme.com>",
"to": "customer@example.com",
"subject": "Product news",
"html": "<p>What shipped this month.</p>",
"unsubscribe": true
}Subscribe a webhook to email.unsubscribed to receive the project-scoped event. Spam complaints arrive separately from SES as email.complained; Boundry suppresses those recipients automatically.
Handle retries safely
Network failures do not tell you whether the service accepted a send. Add an Idempotency-Key header to retries: Boundry returns the original email ID rather than creating a duplicate message.
curl -X POST https://api.au.boundry.dev/emails \
-H "Authorization: Bearer $BOUNDRY_API_KEY" \
-H "Idempotency-Key: order-2847-receipt" \
-H "Content-Type: application/json" \
-d @email.jsonInspect the result
Every accepted message has an ID. View it in the dashboard to see its content, provider status and chronological events. Use webhooks when your application needs those events without polling.
Read the send-email endpoint →