// docs
Build with VoltMail.
A REST API designed to be boring. JSON in, JSON out, no SDK lock-in. Idempotency keys, webhooks, deterministic error codes — everything you need to wire transactional mail into a production service.
Quickstart
Verify a domain in the dashboard, copy your API key, then send your first email.
curlcurl https://api.voltmail.dev/v1/emails \
-H "Authorization: Bearer $VOLTMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "noreply@receipts.acme.dev",
"to": ["jane@example.com"],
"subject": "Hello",
"text": "It works."
}'Authentication
All requests use bearer authentication. Pass your API key in the Authorization header. Live keys are prefixed vm_live_ and test keys vm_test_.
Errors
Every error returns a stable code, a human message, and a request_id you can include in support tickets. Status codes follow standard REST conventions.
error response{
"error": {
"code": "domain_not_verified",
"message": "Sending domain receipts.acme.dev is not verified.",
"request_id": "req_01HV9XA12B3C4D5E6F7G8H9I0J"
}
}Rate limits
Default: 100 requests/sec/account. Batch sends count as 1 request. Limits are returned in the X-RateLimit-Remaining header. Pro Max scales linearly to 5,000 rps with prior notice.