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.
import { Resend } from "resend";
const resend = new Resend(
process.env.TRANSMIT_API_KEY,
{ baseUrl: "https://api.transmit.dev" },
);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.
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>",
});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>",
});02Sandbox
Build first. Pay when you go live.
Explore the API docsNo 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.
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>"
}{
"id": "sim_01J8QK4ZP7",
"status": "queued",
"credits_consumed": 0
}Email delivery is simulated. Credits stay at zero.
Signed body, on your server{
"type": "email.delivered",
"data": {
"email_id": "sim_01J8QK4ZP7",
"recipient": "success@example.com",
"sandbox": true
}
}POST accepted · your endpointThe 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.
- 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.
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.