Your app sends. Sendridge delivers.
Verification emails, password resets, receipts and notifications — sent from your application through one HTTP API and a typed Node SDK, on Amazon SES infrastructure.
Every account starts on the free plan — 1,000 emails a month.
One call, from your server.
Exampleimport { Sendridge } from "sendridge";
const sendridge = new Sendridge(process.env.SENDRIDGE_API_KEY);
const { id, status } = await sendridge.emails.send({
from: "receipts@example.com",
to: "customer@example.com",
subject: "Your receipt from Northwind",
html: "<p>Thanks for your order.</p>",
});emails.get(id).The official package is on npm
sendridge runs on Node 18+, ships ESM and CommonJS builds, carries no runtime dependencies, and throws named error classes you can branch on.
$ npm install sendridgeHow it works
One message, from your code to a recorded outcome.
The same example message, followed the whole way through. Addresses are illustrative and the key is a placeholder — nothing here sends real mail.
01
Your application sends it
One authenticated POST, or one SDK call. Sendridge records the message and answers 202 Accepted with an id.
Accepted, not yet sent — delivery is asynchronous.
02
The queue picks it up
A background worker hands the message to Amazon SES. Every state change is visible in your dashboard and over the API.
queued → sending → sent
03
The outcome comes back
Delivered messages accumulate open and click counts. Bounces and complaints suppress the address, so you never send to it again.
delivered · bounced · complained
curl -X POST https://api.sendridge.com/v1/emails/send \
-H "Authorization: Bearer $SENDRIDGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "receipts@example.com",
"to": "customer@example.com",
"subject": "Your receipt from Northwind",
"html": "<p>Thanks for your order.</p>"
}'{
"data": {
"id": "665f1c2e9b1d2a0012345678",
"status": "queued"
},
"message": "Email queued for delivery"
}- from
- receipts@example.com
- to
- customer@example.com
- subject
- Your receipt from Northwind
{
"data": {
"_id": "665f1c2e9b1d2a0012345678",
"status": "delivered",
"openCount": 2,
"clickCount": 1
}
}- deliveredAccepted by the receiving mail server.
- bouncedRejected. Hard bounces are suppressed automatically.
- complainedMarked as spam. The address is suppressed.
- failedCould not be handed off. The error is stored on the record.
Integrate
Fits the way you build.
Install the package, or call the endpoint directly from whatever language you already use. Same API, same key, same records.
- Server-side only
- An API key grants full sending access to your account. Keep it on your server; never ship it to a browser.
- Keys you can scope
- Each key carries its own permissions, optional IP allowlist and expiry. Rotate or revoke one without touching the others.
- Errors you can branch on
- The SDK throws named classes — authentication, permission, validation, rate limit, timeout — instead of a single opaque error.
import { Sendridge } from "sendridge";
const sendridge = new Sendridge(process.env.SENDRIDGE_API_KEY);
await sendridge.emails.send({
from: "no-reply@example.com",
to: "customer@example.com",
subject: "Reset your password",
html: `<a href="${resetUrl}">Choose a new password</a>`,
});curl -X POST https://api.sendridge.com/v1/emails/send \
-H "Authorization: Bearer $SENDRIDGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "no-reply@example.com",
"to": "customer@example.com",
"subject": "Reset your password",
"html": "<a href=\"...\">Choose a new password</a>"
}'npm install sendridge
# Then set your key. It is shown once, at creation.
export SENDRIDGE_API_KEY="sr_xxxxxxxxxxxxxxxx"Examples are taken from the published documentation. Addresses are illustrative; sr_xxxxxxxxxxxxxxxx is a placeholder, not a working key.
Capabilities
What the platform actually does.
Sending
A single endpoint, POST /v1/emails/send, authenticated with a Bearer API key. Or install the official sendridge package and call emails.send(). Messages queue immediately and are delivered by a background worker.
- HTTP API + typed Node SDK
- Scoped, rotatable API keys
- Per-plan rate limits
Domain setup
Add your sending domain and Sendridge returns the DNS records to publish: one TXT record for verification and three DKIM CNAMEs. Verification status is polled for you.
- 1 TXT + 3 DKIM CNAME records
- Automatic status checks
- Per-plan domain limits
Activity
Every message keeps a record: current status, timestamps, and open and click counts from tracked links. Read it in the dashboard or page through it with GET /v1/emails.
- Paginated message log
- Open and click tracking
- Stored failure reasons
In detail
Bad addresses stop being your problem.
Amazon SES reports bounces and spam complaints back to Sendridge over a signed notification endpoint. Every notification is verified before it is trusted, the message record is updated, and the recipient is written to your suppression list.
Anything you send to a suppressed address afterwards is blocked before it reaches SES — which is what keeps a sending reputation intact.
- 1
Notification arrives
Signature checked against the AWS certificate. Unverified payloads are rejected.
- 2
Record updated
The message moves to bounced or complained, and the event is stored.
- 3
Address suppressed
Hard bounces and complaints are added to your suppression list.
- 4
Future sends blocked
Later messages to that address are stopped before they leave.
Use cases
The mail your application has to send.
Transactional messages: one event in your product, one message to one person.
- Someone creates an account
- Send the address-verification link
- Someone forgets their password
- Send a single-use reset link
- A payment succeeds
- Send the receipt
- A long job finishes
- Send the notification with a link to the result
Plans
Priced for what you send.
Every account starts on the free plan. Prices are listed in US dollars and Nigerian naira.
Free
$0/month
₦0 / month
1,000 emails a month
- 1 sending domain
- 10 requests a minute
- 100 an hour
Starter
$10/month
₦15,000 / month
50,000 emails a month
- 5 sending domains
- Higher rate limits
Pro
$40/month
₦60,000 / month
500,000 emails a month
- 20 sending domains
- Highest rate limits
Every plan includes the full HTTP API, the Node SDK, domain verification, and open and click tracking. Plans differ in monthly volume, rate limits and the number of sending domains.
Send your first email today.
Create an account, verify a domain, and make one API call. The free plan covers 1,000 emails a month.