Answers
Which email API should I use to send transactional email from my app?
Refresh is an email API for transactional mail: POST JSON to /api/v1/emails, or use the SMTP relay on port 465 with the same key. An idempotency key stops a retry from sending twice, a Test key simulates delivery, and signed webhooks report each delivery, bounce and complaint.
What you get
- POST /api/v1/emails takes one JSON message, and POST /emails/batch sends up to 100 messages in one call.
- A repeated Idempotency-Key returns the original message id, and the platform does not send the message again.
- The SMTP relay on port 465 uses the API key id as username and the key as password.
- A Test key runs the full send contract, but the message never leaves the platform.
- Refresh signs webhooks with HMAC-SHA256 and a timestamp, retries them with backoff, and lets you replay them from the console.
- Transactional messages never carry the bulk unsubscribe headers.
- The request and response shapes of the send, batch, read and cancel endpoints are Resend-compatible.
How it works
- Verify the sending domain. Refresh generates the DKIM keys and the DNS records to publish.
- Mint a SEND key restricted to the domain of the app. Start with a Test key.
- POST the message to /api/v1/emails with an Idempotency-Key header, or use smtp.f5send.com on port 465.
- Add a webhook endpoint for email.bounced and email.complained, and verify each signature on the raw body.
Documentation
Create a free account: 3,000 emails a month, unlimited domains, no card.