Sending

Email validation

Catch dead addresses before they bounce — a syntax check plus a DNS lookup that the recipient's domain can actually receive mail.

Bounces hurt your sender reputation. Sendara can check a recipient before you send: it validates the syntax and confirms the domain can receive mail via a DNS/MX lookup (with an RFC 5321 implicit-MX fallback for domains that publish an A record but no MX). You can run the check inline on a send, or stand-alone.

Validation confirms a domain can accept mail — it does not guarantee the specific mailbox exists or that the message will be delivered. It is a cheap, high-signal filter against typos and dead domains, not a delivery promise.

Validate during a send

Add validate_recipient: true to POST /v1/send. The check runs before the spend gate, so an undeliverable recipient is never charged and never queued — it is rejected up front.

curl https://api.sendara.dev/v1/send \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "email",
    "idempotency_key": "rcpt_9f21",
    "message_type": "transactional",
    "destination": { "email": "[email protected]" },
    "metadata": { "from_email": "[email protected]" },
    "payload": { "subject": "Hi", "body_html": "<p>Hello</p>" },
    "validate_recipient": true
  }'
validate_recipientbooleanOptional
When true, the recipient is checked before the send is charged or queued. An undeliverable address is rejected with recipient_undeliverable (422). Default false.

An undeliverable recipient comes back as a 422:

{
  "error": {
    "code": "recipient_undeliverable",
    "message": "recipient address is undeliverable: domain cannot receive email (no MX or A record)"
  }
}

Validate without sending

To check an address on its own — at signup, on form submit, or while cleaning a list — call POST /v1/validate.

curl https://api.sendara.dev/v1/validate \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]" }'
emailstringRequired
The address to check.
{ "email": "[email protected]", "valid": true, "reason": "" }

When the address fails, valid is false and reason explains why (e.g. invalid email syntax or domain cannot receive email (no MX or A record)).

How it behaves

  • Fails open.A transient DNS error or timeout never blocks a send — only an authoritative “domain does not exist” result is treated as undeliverable.
  • Cached per domain. Lookups are cached briefly, so validating many recipients on the same domain stays fast and does not hammer DNS.
  • Opt-in. Sends are never validated unless you ask — existing integrations are unaffected.
Pair validation with suppression: validate at capture time to stop typos entering your list, and let automatic suppression handle addresses that go bad after a real bounce.