Notix
Product

Transactional email that arrives once, and only once.

The Notix transactional email API sends one message to one person in response to something they did, and makes the send safe to retry. Every request can carry an idempotency key, every message can be checked for deliverability before it leaves, and every bounce, complaint and unsubscribe lands on one suppression list that the email API and the SMTP relay both honour. The free plan does not ask for a card.

1call to send, with template, variables and attachments
24 ha retried request returns the original id
100messages per batch call
0second sends to a hard-bounced address
Capabilities

Built for the mail your product cannot afford to get wrong.

A receipt sent twice, a reset link that never arrived, an alert that went to someone who unsubscribed: each is a support ticket. The API is shaped to keep them from happening.

Idempotency keys on every send.

Retry a request with the same key and you get the original message back, not a second copy. A timeout during checkout stops being a reason to send two receipts.

A deliverability check before you send.

One call scores a message for the things that get transactional mail filtered, so a broken template is caught in staging rather than in a customer's spam folder.

One suppression list for everything.

Bounces, complaints and unsubscribes are recorded once and honoured by every send, transactional and marketing, from the API and from the SMTP relay.

Signed webhooks for every event.

Sent, delivered, bounced, complained: each posts to your endpoint with a signature you verify, so your own records match what happened to the message.

Batch and scheduled sends.

Send many messages in one request, or set a time and let the API hold the message until then. Both use the same body as a single send.

SDKs, or plain JSON.

Typed SDKs for TypeScript, Python, Go and PHP where they help. Everywhere else, one POST with a JSON body and a message id in the response.

Code

One request, with a key that makes it safe to retry.

The same call in five languages. The Idempotency-Key is your own identifier for the event; use the order id, the reset token or the sign-up id, and a retry can never double-send.

curl
curl -X POST https://app.usenotix.dev/api/v1/emails \
  -H "Authorization: Bearer $NOTIX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-4471-receipt" \
  -d '{
  "from": "receipts@acme.com",
  "to": "customer@example.com",
  "subject": "Your receipt for order 4471",
  "html": "<p>Thanks for your order.</p>"
}'
Message lifecycle

What happens to a message.

  1. Accepted

    The API accepts the request and returns an emailId.

  2. Queued

    The message waits in line for delivery.

  3. Sent

    The message is sent to the recipient's mail server.

  4. Delivered or bounced

    The message is delivered, or it bounces with a reason.

  5. Events at your webhook

    Every step posts to your webhook as it happens.

app.usenotix.dev/emails
One message's events in the Notix dashboard, from queued to delivered.
Reliability

Three things that keep transactional mail honest.

Idempotency: retries without duplicates.

Networks time out, payment webhooks fire twice, and users click buttons more than once. Any of those can re-run the code that sends a receipt. Notix treats the Idempotency-Key header as the identity of the send: the first request with a key creates the message, and every later request with the same key and the same body returns that message, id and all. If the body differs, the API answers 409 rather than guessing which version you meant. Choose keys from your own data, such as order-4471-receipt, so the guarantee follows the event and not the process that happened to run.

The deliverability check: find the problem before the customer does.

Transactional mail fails quietly. A template edit adds a pattern a filter dislikes, a DNS change drops DKIM, and the first sign is a customer saying the code never came. The pre-send check takes a message and a sending domain and returns a score with the reasons behind it: authentication state, HTML structure, link and text patterns, and whether the recipient is already suppressed. Run it in CI against your templates, or call it before an unusual send, and the report tells you what to change.

Suppression: one list, honoured everywhere.

A hard bounce, a spam complaint or an unsubscribe is recorded once, on a list that every send checks: transactional and marketing, API and SMTP relay. A recipient who complained about a campaign does not receive a receipt from the same domain the next day, and an address that bounced is not attempted again until you clear it. You can import an existing suppression list when you move a domain to Notix, so history from a previous provider carries over, and you can export it at any time.

Plans

Start free. Pay when the volume is real.

Free: 5,000 emails a month, 200 a day, 1 domain. No card, no end date.

Pro: $15 a month for 50,000 emails, more domains and team members, your own SMS sender ID.

See the full pricing page
Use cases

The messages this API is for.

Each one is a single send triggered by a single event. The quickstart shows the request for the first of them and the rest follow the same shape.

One-time passcodes

A code and a short expiry, sent the moment the user asks. Notix also has a verification API that generates and checks the code for you, over email or SMS.

Password resets and magic links

A single-use link, sent once. The idempotency key keeps a double-clicked form from sending two.

Receipts and order confirmations

Send from your order's own id as the key, and a retried webhook from your payment provider can never produce a second receipt.

Alerts and notifications

Sign-in from a new device, an invoice due, a comment on a thread. Scheduled sends let you batch the non-urgent ones.

Welcome and onboarding mail

The first message a new account gets. Templates keep the copy in one place; the shared suppression list keeps it away from anyone who has opted out.

Limits

The limits that apply.

ItemLimitWhere it is set
Recipients50 per message across to, cc and bcc; each one counts as an emailPOST /v1/emails, and RCPT TO on the SMTP relay
Attachments10 files, 7 MB each, 10 MB per emailRequest body, measured after base64 decoding
Batch100 messages per call, 40 MB of attachments across the batchPOST /v1/emails/batch
Idempotency key256 characters, kept 24 hoursIdempotency-Key header
FAQ

Questions, answered.

What is a transactional email API?
An HTTP API your application calls to send one message to one person because of something they did: a sign-up, an order, a password reset. Notix accepts a JSON body with a from address, a recipient, a subject and HTML or text, returns a message id, and reports what happened to the message through webhooks and the dashboard.
How does the idempotency key work?
Send an Idempotency-Key header with a value you choose, such as your order id. If the same key arrives again with the same body, Notix returns the original message instead of sending another. The same key with a different body is refused with a 409, so a mismatch is an error you see rather than a message you did not mean to send.
Do I need a paid plan to send transactional email?
No. The free plan sends 5,000 emails a month and 200 a day, does not ask for a card, and has no end date. Pro is $15 a month for 50,000 emails, with usage past the allowance metered on the same invoice.
What does the deliverability check look at?
It scores a message before you send it: the sending domain's SPF, DKIM and DMARC state, the structure of the HTML, link and text patterns that filters penalise, and whether the recipient is on your suppression list. The result is a score with the reasons, so you fix the template rather than guess.
What happens when a message bounces?
A hard bounce adds the address to your suppression list and posts a bounce event to your webhook with the reason the receiving server gave. Later sends to that address, from the API or the SMTP relay, are held back rather than attempted, which protects your domain's reputation.
Can I use SMTP instead of the API?
Yes. Every plan includes the SMTP relay, so a framework mailer that already speaks SMTP can send through Notix with a host, a port and a credential. Messages sent that way get the same tracking, webhooks and suppression as messages sent through the API.
Which SDKs are there?
TypeScript, Python, Go and PHP. Each wraps the same JSON endpoints, so the request bodies in the docs apply whether you use an SDK or a plain HTTP client, and the response shape is identical.
Can I pay in naira or shillings?
Yes. Teams in Nigeria and Kenya can pay from a prepaid wallet in NGN or KES, with the same plan prices. Everyone else pays in USD by card. The pricing page shows which applies to you.

Send the first transactional email in five minutes.

Verify a domain, copy an API key, make one call with an idempotency key. The free plan does not ask for a card.