Build with RelyPost.
An API for your application’s email.
Create a scoped API key in Workspace → Developer. Send it in Authorization: Bearer rp_live_… on each API request. Keep keys on your server.
POST /v1/emails requires an Idempotency-Key header and a JSON object with from, to, subject and text or html. The from address must be an active mailbox on a verified domain in your organization. Use the same idempotency key only for the exact same request.
GET /v1/emails/:id returns submission state and events. GET /v1/domains lists verified and pending domain configuration. Errors include a stable code and a request identifier.
Stage attachments through the authenticated upload workflow, then reference their IDs. Message and recipient limits apply. Scheduled sending uses scheduled_at in ISO 8601 UTC.
Webhook signatures use HMAC-SHA256 over webhook-id + "." + webhook-timestamp + "." + the exact request body. Reject timestamps older than five minutes, compare signatures in constant time and deduplicate webhook-id.
SMTP submission means the mail server accepted responsibility. It does not establish remote acceptance or inbox placement. An uncertain result requires reconciliation before resending.
curl https://api.relypost.com/v1/emails \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Idempotency-Key: order-123-confirmation' \
-H 'Content-Type: application/json' \
-d '{"from":"hello@your-domain.com","to":["customer@example.com"],"subject":"Hello","text":"Welcome"}'Create your workspace