Transactional email

Keep what you built.Keep what you bought.

Transactional email for developers. 50,000 credits a month, and the ones you do not send stay yours. Point the client you already wrote at Transmit.

No card. No domain setup. Simulated email. Real webhooks.

TypeScript
import { Resend } from "resend";

const resend = new Resend(
  process.env.TRANSMIT_API_KEY,
  { baseUrl: "https://api.transmit.dev" },
);
New key. New host. Same send.
Your credits
+50,000added
5,000sent
45,000carried over
Unused credits roll forward while you’re subscribed.Illustrative · while you’re subscribed and your account is in good standing.

01Clients

Bring your client, or take ours.

Transmit accepts Resend and SendGrid request shapes, so the client you already wrote keeps working. Change the endpoint and the key. Starting fresh? Install our client, or call the HTTP API directly. Prove it in sandbox. Then send live.

TypeScript
import { Resend } from "resend";

const resend = new Resend(
  process.env.TRANSMIT_API_KEY,
  { baseUrl: "https://api.transmit.dev" },
);

await resend.emails.send({
  from: "Acme <hello@yourdomain.com>",
  to: "you@example.com",
  subject: "It arrived.",
  html: "<p>Nobody noticed.</p>",
});
Keep the Resend client. New key. New host. Same send.
TypeScript
import { Transmit } from "transmitdev";

const transmit = new Transmit({
  apiKey: process.env.TRANSMIT_API_KEY,
});

const { id } = await transmit.emails.send({
  from: "Acme <hello@yourdomain.com>",
  to: "you@example.com",
  subject: "It arrived.",
  html: "<p>Nobody noticed.</p>",
});
Or start on ours: npm install transmitdev

02Sandbox

Build first. Pay when you go live.

Explore the API docs

No card. No domain setup. No real sends. Create an account, get a test key, and run your integration. Email is simulated. Webhook requests are real. Sandbox uses no credits.

When you’re ready for real inboxes, subscribe, verify your domain, approve a sender, and create a live key. Test keys always stay in sandbox.

Simulatedsuccess@example.com
One request, with a sandbox key{
  "from": "Acme <hello@acme.com>",
  "to": "success@example.com",
  "subject": "Reset your password",
  "html": "<p>Here's your link…</p>"
}
HTTP 200{ "id": "sim_01J8QK4ZP7", "status": "queued", "credits_consumed": 0 }
Credits0
EmailSimulated
WebhookReal POST
Sandbox send

Email delivery is simulated. Credits stay at zero.

Real POSThooks.acme.com/transmit
email.deliveredsandbox
Signed body, on your server{
  "type": "email.delivered",
  "data": {
    "email_id": "sim_01J8QK4ZP7",
    "recipient": "success@example.com",
    "sandbox": true
  }
}
HTTP 200POST accepted · your endpoint
Real webhook

The webhook request is real. The event data is simulated.

Illustrative sandbox run. Email delivery is simulated. The webhook request is real.

03Pricing

Sending has seasons.

A delayed launch. A quieter month. A rush of signups. Password resets, receipts, notifications. They follow the product. Keep the credits you don’t use for the months you do.

$20a month.
  • 50,000 email credits added every month after sender verification.
  • Unused credits carry forward while you’re subscribed and your account is in good standing.
  • Need more? $0.50 per thousand emails. $10 minimum top-up.
  • One verified sending domain per account.
See the pricing details

04Sender checks

We’re picky about who sends.

A password reset is a promise to someone waiting. We take the sender behind that promise seriously. Checks before live sending. Screening on the way out.

  • Your own domain.

    Live mail comes from a domain you own and verify. No shared sending domain. A card and an approved sender before the first live email.

  • Messages screened.

    Outgoing live email is screened before it reaches the sending provider. Suspected abuse can be stopped before delivery.

  • Senders accountable.

    Bounce and complaint rates are watched. Sending can be paused when an account crosses the limits.

05thiscar.com

Tax season is the spike.

THIScar.com is a used-car retailer in Houston. The lot is busy around tax season. Quiet the rest of the year.

Unused credits from the slow months are still there when we send the most. We stopped paying for mail we didn’t send.

Email that arrives.

Build at your own pace. Subscribe when you’re ready for live email.

Start free in sandbox