Domains
You can only send email froma domain you've added and verified. Add a domain, publish three DNS records, then verify — usually a five-minute round trip.
Auto-generated DKIM keys
A 2048-bit RSA keypair is generated per domain the moment you add it — no manual key management.
DNS provider detection
We detect your domain's nameservers and offer one-click record push if you're on Cloudflare.
Enforced at send time
POST /v1/email/send rejects with DOMAIN_NOT_VERIFIED if 'from' isn't on a verified domain you own.
Every send is domain-checked
POST /v1/email/send extracts the domain from your from address and rejects the request with { "error": "DOMAIN_NOT_VERIFIED" } if it doesn't match a VERIFIEDdomain on your account. This applies to every business, including on the free tier — there's no unverified sending, ever.curl -X POST 'https://api.sendexa.co/v1/email/domains' \-H 'Content-Type: application/json' \-H 'Authorization: Basic YOUR_DASHBOARD_BASE64_TOKEN' \-d '{ "domain": "yourdomain.com" }'
Publish all three TXT records at your DNS provider, then call verify below. If supportsAutoConfigure is true (Cloudflare-hosted domains), you can push the records automatically instead — see auto-configure further down.
Checks the SPF TXT record over live DNS and flips the domain to VERIFIED if it's found and includes spf.sendexa.co.
{"success": true,"message": "Domain verified successfully","data": {"id": "dom_abc123","domain": "yourdomain.com","status": "VERIFIED","verifiedAt": "2026-08-04T00:00:00.000Z","checks": { "spf": true, "soft": false }}}
DNS not propagated yet?
DNS_NOT_VERIFIED— wait for propagation (usually minutes, occasionally longer) and retry. In non-production environments a soft-verify path exists so local testing isn't blocked on live DNS.If your domain's nameservers are on Cloudflare, this pushes SPF, DKIM, DMARC, and tracking CNAME records directly via the Cloudflare API — no copy-pasting DNS records by hand.
curl -X POST 'https://api.sendexa.co/v1/email/domains/dom_abc123/auto-configure' \-H 'Content-Type: application/json' \-H 'Authorization: Basic YOUR_DASHBOARD_BASE64_TOKEN' \-d '{ "apiToken": "YOUR_CLOUDFLARE_API_TOKEN" }' # optional — falls back to a platform-level token if configured
Your Cloudflare token needs Zone:DNS:Edit and Zone:Read. If your domain is hosted elsewhere (Route 53, Google Cloud DNS, GoDaddy, etc.), supportsAutoConfigure will be falseand you'll need to add the three records manually.
List all domains on your account, with status.
Deactivate a domain — sends using it will start failing DOMAIN_NOT_VERIFIED immediately.
Best Practices
- Use a subdomain for sending (e.g.
mail.yourdomain.com) so DNS changes don't touch your primary domain's records. - Verify a domain before wiring it into production — the DOMAIN_NOT_VERIFIED rejection happens at send time, not at request-build time.
- Once verified, also publish a DMARC policy (
p=quarantineorp=reject) at your registrar for stronger deliverability once you're confident in your setup.