Skip to content

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.

Example
send-receipt.ts
import { 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>",
});
queuedid 665f1c2e9b1dAccepted for delivery. Track it with 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 sendridge
Skip the product walkthrough

How 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.

  1. 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.

  2. 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

  3. 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

01The request
Example
POST /v1/emails/send
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>"
  }'
202 Accepted
{
  "data": {
    "id": "665f1c2e9b1d2a0012345678",
    "status": "queued"
  },
  "message": "Email queued for delivery"
}
02In the queue
Message record665f1c2e9b
from
receipts@example.com
to
customer@example.com
subject
Your receipt from Northwind
queuedsendingsentHanded to Amazon SES.
03The outcome
GET /v1/emails/:id
{
  "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.
Read the full documentation
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>`,
});

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. 1

    Notification arrives

    Signature checked against the AWS certificate. Unverified payloads are rejected.

  2. 2

    Record updated

    The message moves to bounced or complained, and the event is stored.

  3. 3

    Address suppressed

    Hard bounces and complaints are added to your suppression list.

  4. 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
Create an account

Starter

$10/month

₦15,000 / month

50,000 emails a month

  • 5 sending domains
  • Higher rate limits
Create an account

Pro

$40/month

₦60,000 / month

500,000 emails a month

  • 20 sending domains
  • Highest rate limits
Create an account

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.