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
202in milliseconds and are delivered by a rate-aware worker. - Zero-dependency SDK on npm as retransmit.dev, or plain REST from any language.
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_xxxxxxxxxxxxBatch
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 dataRetransmit 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 GitHubCloud
Prepaid credits
One balance across every channel. Fund it in your local currency, including bank transfer and mobile money.
Get startedReady to send?
Verify a domain, grab an API key, and send your first email in under five minutes.