Skip to content
retransmit.
Get started

Email, anywhere.

Send transactional email from our cloud or yours.

Send

One request. Email delivered.

Verify a domain, grab an API key, and send your first email in under five minutes.

  • Every call returns { data, error }. No thrown surprises.
  • Sends return a 202 in milliseconds and are delivered by a rate-aware worker.
  • Zero-dependency SDK on npm as retransmit.dev, or plain REST from any language.
Read the docs →
import { Retransmit } from "retransmit.dev";

const retransmit = new Retransmit(process.env.RETRANSMIT_API_KEY);

const { data, error } = await retransmit.emails.send({
  from: "Acme <hello@yourdomain.com>",
  to: "user@example.com",
  subject: "Welcome!",
  html: "<h1>Welcome!</h1>",
});

console.log(data.id); // em_xxxxxxxxxxxx

Batch

Send one, or send ten thousand.

One request queues up to 10,000 emails. Poll the batch for per-status counts while the worker drains it at your provider's rate.

const { data, error } = await retransmit.batch.send([
  {
    from: "Acme <hello@yourdomain.com>",
    to: "one@example.com",
    subject: "Hello",
    html: "<p>Hi one</p>",
  },
  // …up to 10,000 messages
]);
  • One HTTP call for thousands of messages. No loops, no client-side rate limiting.
  • Track progress with GET /v1/emails/batch/:id. Counts per status, updated live.
  • Every message in the batch still gets its own id, log entry, and webhook events.

Webhooks

Know what happens to every email.

Nine event types, signed and timestamped, delivered to your endpoint as they happen.

{
  "id": "whd_xxxxxxxxxxxx",
  "type": "email.delivered",
  "created_at": "2026-09-01T12:00:03.000Z",
  "data": {
    "emailId": "em_xxxxxxxxxxxx",
    "to": ["user@example.com"],
    "subject": "Your receipt"
  }
}

Payloads are signed with HMAC-SHA256 over `${timestamp}.${body}` and retried up to 8 times with exponential backoff. Verify in five lines →

Deliverability

Reach the inbox, not the spam folder.

Authentication, suppression, and retries handled correctly by default.

Domain verification

Verify your sending domain with SPF and DKIM. The dashboard gives you exact records to copy.

Bounce & complaint handling

Hard bounces and complaints are caught automatically. Your sender reputation is protected without extra code.

Queue with retries

Every send is queued, rate aware, and retried with exponential backoff.

Signed webhooks

Every event is delivered with an HMAC-SHA256 signature and retried up to 8 times with exponential backoff.

Email logs & status

Fetch any email by id and read its full event history, from queued to delivered, opened, or bounced.

API keys

Scoped bearer keys you create and revoke from the dashboard. One header and you're authenticated.

Open source

Run it yourself. Read every line.

The API, dashboard, queue, and SDK live in one repository. Moving between cloud and self-hosted is a base URL change.

$ git clone https://github.com/jpainam/retransmit
$ cd retransmit && pnpm install
$ pnpm db:push
$ pnpm dev

# api on :3002, dashboard on :3001. your keys, your data

Retransmit Cloud

Managed sending on our infrastructure. Fund one prepaid balance by bank transfer or mobile money. No international card required.

Self-hosted

Your servers, your keys, your data. Bring your own provider credentials and keep the same SDK, dashboard, and webhooks.

Pricing

Pay for what you send.

No subscriptions, no seats, no charge for storing contacts. Top up a credit balance and it only moves when a message does.

Self-hosted

Free

Forever, on your own infrastructure. Every feature, no license key, no phone-home.

View on GitHub

Cloud

Prepaid credits

One balance across every channel. Fund it in your local currency, including bank transfer and mobile money.

Get started

Ready to send?

Verify a domain, grab an API key, and send your first email in under five minutes.