API docs

Send product email with one endpoint.

NoticeAPI is intentionally transactional-only. Use it for account email, receipts, security notices, invites, and product notifications. Do not use it for cold outreach, bought lists, newsletters, or marketing automation.

POST /api/v1/email/send

Authenticate with `Authorization: Bearer ps_email_...`.

curl -X POST https://noticeapi.com/api/v1/email/send \
  -H "Authorization: Bearer ps_email_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": "[email protected]",
    "to": "[email protected]",
    "subject": "Welcome aboard",
    "text": "Your account is ready."
  }'

Payload

fromrequired sender address
torequired email or array
cc / bccoptional email or array
replyTooptional email or array
subjectrequired string
text / htmlat least one is required

Error codes

401 invalid keyThe API key is missing, malformed, revoked, or wrong.
402 billing_requiredProduction sending requires a paid active plan.
403 quota_exceededThe account exceeded its monthly recipient pool.
409 domain_not_readyThe sending domain is not verified.
409 recipient_suppressedOne or more recipients bounced or complained before.
429 rate_limitedThe caller exceeded the short-window request limit.

Webhooks

Events are signed with `x-plainsend-signature: sha256=...` using your dashboard secret.

{
  "type": "email.bounced",
  "messageId": "abc123",
  "recipient": "[email protected]",
  "timestamp": "2026-06-23T12:00:00.000Z",
  "detail": "Mailbox unavailable"
}

Launch checklist

1. Create sandbox

Generate a key and send mocked test mail.

2. Add domain

Use a subdomain like send.yourdomain.com and copy DNS.

3. Wire billing

Use the new Stripe account before enabling paid upgrades.

4. Add ACS

Set the ACS connection string after the sender domain is ready.

5. Deploy

Coolify with Docker, Neon DATABASE_URL, and Cloudflare Turnstile.

6. Announce

Lead with transactional email for real product messages, not cold outreach.

Open dashboard