← Back to blog

A Simple Transactional Email API (2026): HTTP and JSON with Rovela, No Mail Servers

What a simple transactional email API still requires (verified domain, sending_access, POST /emails) and what you can stop assembling — without inventing undocumented features.

Updated November 10, 2026
A Simple Transactional Email API (2026): HTTP and JSON with Rovela, No Mail Servers

A simple transactional email API: HTTP and JSON, no mail servers

A simple transactional email API is a service that lets you send the messages your product already owes the user — codes, receipts, resets — with one HTTPS request, without standing up MTA software, IAM graphs, or an official SDK. Rovela’s version is documented as plain HTTP and JSON at https://api.rovela.dev: no client library to install (Installation, Email API).

This post is about that simplicity as a product choice: what you still have to do, and what you can stop assembling. It is not a vendor teardown — if you are specifically leaving Amazon SES, use Amazon SES Alternative: a Simple HTTP API and Rovela vs Amazon SES rather than repeating those claims here. Self-hosting trade-offs are Self-Hosting a Mail Server. The protocol comparison is Email API vs SMTP.

Start from the Email API product page, the Quick Start, the Send Email API, and Authentication.

Related product guides in this series:

What “simple” still requires

Simplicity is not “no DNS.” You still:

  1. Create an account (the free plan sends real mail; there is no separate sandbox key) (Quick Start).
  2. Verify a sending domain — SPF, DKIM, DMARC, return-path. Unverified from is 400.
  3. Create a sending_access key and keep it on the server (Authentication).
  4. POST /emails with JSON. Optionally add Idempotency-Key, webhooks, batch, templates.

That is the whole hot path. You do not install a Rovela SDK, run a mail daemon, or open port 25 from your VPC. Any language that can make an HTTPS request works — the product page lists curl, Python, Go, Ruby, Java, Node, and PHP as examples, not as required packages.

curl -X POST https://api.rovela.dev/emails \
  -H "Authorization: Bearer re_your_sending_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: verify-signup-8f3a2c" \
  -d '{
    "from": "Acme <no-reply@yourdomain.com>",
    "to": "alice@example.com",
    "subject": "Your Acme code: 482913",
    "html": "<p>Your verification code is</p><p style=\"font-size:28px;letter-spacing:6px\"><b>482913</b></p><p>It expires in 10 minutes.</p>",
    "text": "Your verification code is 482913. It expires in 10 minutes."
  }'

What you can stop assembling

Teams often end up stitching: a sending API or SES, a bounce topic, a key policy, a template store, a cron box, and a separate Workspace for support@. A simple API does not magically include every adjacent tool, but Rovela documents these as part of the same product (use them only if you need them):

Pricing is plan limits, not a contact-list surprise: the free plan includes 100 emails a month, the full API, inbound, webhooks, and five mailboxes, with no card required (pricing). We are not claiming dedicated IPs, SLAs, or an official SDK — those are not on the product pages this article relies on. Custom return path is a Pro/Enterprise feature per the pricing table.

Simple is not sloppy

If your app already speaks SMTP and you want this simpler HTTP path, Migrate SMTP to an Email API is the cutover guide.

FAQ

Is “no SDK” a limitation? For most backends it is a feature: one HTTP contract, no library lag. Language walk-throughs exist when you want copy-paste clients.

Can I run Rovela myself? The installation page covers hosted use and the requirements for running it yourself. This article assumes the hosted API.

Is this only for tiny projects? The same API is on every plan. Plans differ in how much you can send and store, not in whether batch, templates, or webhooks exist (pricing).

Keep the request small

Verify a domain, put sending_access on the server, and POST JSON to /emails. That is a simple transactional email API — and it is enough to run the rest of this series on.