Quickstart
A verified domain, a scoped key, and one request. Ten minutes, most of which is DNS.
1. Verify a domain
Sign up, then add the domain you will send from. We give you the DNS records to publish — a DKIM key, a return path, and the DMARC record if you have none. You cannot send from a domain you have not verified, and neither can anybody else.
Verification puts 3,000 credits in the account so you can send before you buy anything.
2. Create a key
In Settings → API keys, create a key and give it only the scopes it needs — email:send for a service that sends. The secret is shown once; we store a hash of it and nothing else, so a lost key is replaced rather than recovered.
3. Send
Send an emailcurl -X POST https://api.transmit.dev/v1/emails \
-H "Authorization: Bearer $TRANSMIT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@yourdomain.com",
"to": "you@example.com",
"subject": "It arrived.",
"html": "<p>Nobody noticed. That is the job.</p>"
}'A 202 means we have the message, charged the credits, and queued it. The body is the receipt for that submission.
202 Accepted{
"id": "0f9f8e7d-6c5b-4a39-8271-1a2b3c4d5e6f",
"from": "hello@yourdomain.com",
"to": ["you@example.com"],
"subject": "It arrived.",
"status": "queued",
"credits_consumed": 1,
"suppressed_recipients": [],
"scheduled_for": null,
"created_at": "2026-09-03T09:41:02.118Z"
}4. Watch it land
The dashboard shows every delivery and its events. For your own systems, add a webhook and we will post each event as it happens — delivered, bounced, complained, opened, clicked.
Prefer a typed client? npm install transmitdev, then see the TypeScript SDK.