transmitdev
v2.0.1
Published
The official TypeScript client for the Transmit API
Maintainers
Readme
transmitdev
The official TypeScript client for the Transmit API — transactional email and SMS.
npm install transmitdevNode 18 or newer. ESM and CommonJS both work.
Sending
import { Transmit } from "transmitdev";
const transmit = new Transmit({ apiKey: process.env.TRANSMIT_API_KEY });
const { id } = await transmit.emails.send({
from: "[email protected]",
to: "[email protected]",
subject: "It arrived.",
text: "Nobody noticed. That's the job.",
});apiKey falls back to TRANSMIT_API_KEY, and baseUrl to TRANSMIT_BASE_URL, so a
deployment can be configured entirely from the environment.
Idempotency
emails.send and sms.send are billed, so the API requires an Idempotency-Key and the
client generates one per call. Pass your own to make a retry from your side safe too:
await transmit.emails.send(message, { idempotencyKey: `order-${order.id}` });Replaying a key returns the original result instead of sending twice.
Errors
Every failure is a TransmitError carrying status, code and details. Catch the
subclass you mean to handle:
import { RateLimitError, ValidationError } from "transmitdev";
try {
await transmit.emails.send(message);
} catch (error) {
if (error instanceof ValidationError) return fix(error.details);
if (error instanceof RateLimitError) return retryIn(error.retryAfterSeconds);
throw error;
}Rate limits and 5xx are retried automatically — twice by default, with backoff, honouring
Retry-After. Creates that the server cannot recognise as a repeat are never retried.
What you can reach
| | |
|---|---|
| emails | send |
| sms | send, list, get |
| templates | list, create, get, update, delete |
| contacts | list, upsert |
| audiences | list, create |
| campaigns | list, create |
| webhooks | list, create, update, delete |
| analytics | get |
Each call is checked against the published spec at api.transmit.dev/openapi.json in CI, so the client cannot name an endpoint the API does not serve.
Migrating from Resend or SendGrid
You do not need this package. Transmit answers POST /emails in Resend's shape and
POST /v3/mail/send in SendGrid's — point your existing client at
https://api.transmit.dev and change the key.
License
Apache-2.0
