Refresh

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

  1. Verify the sending domain. Refresh generates the DKIM keys and the DNS records to publish.
  2. Mint a SEND key restricted to the domain of the app. Start with a Test key.
  3. POST the message to /api/v1/emails with an Idempotency-Key header, or use smtp.f5send.com on port 465.
  4. 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.

More answers about Refresh