Address validation
POST /email/validate says whether an address is likely to receive — syntax, mail route, disposable, role account, typo, and your own suppression list.
Validate an address
Synchronous, because you call it from your own signup form and need the answer while the person is still typing. It needs a token with the email:validate scope.
curl -X POST https://api.qsendyx.com/api/v1/email/validate \
-H "Authorization: Bearer $QUATHOS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "email": "contato@gmial.com" }'{
"email": "contato@gmial.com",
"domain": "gmial.com",
"verdict": "risky",
"score": 45,
"checks": {
"valid_syntax": true,
"has_mail_exchange": true,
"disposable": false,
"role_account": true,
"suppressed": false
},
"did_you_mean": "contato@gmail.com",
"reason": "role_account"
}The four verdicts
| Verdict | What it means |
|---|---|
| deliverable | Valid syntax, the domain accepts mail, and no risk signal. |
| undeliverable | Invalid syntax, no MX or A record, or already suppressed for you. |
| risky | It should receive, but something is off: disposable domain, role account, or a likely typo. |
| unknown | We could not determine it — a DNS timeout. Neither a pass nor a fail. |
checks carries the individual signals so you can write your own policy instead of inheriting ours. has_mail_exchange is deliberately nullable: null means the DNS lookup did not answer, which is not the same as the domain having no mail route.
What it does not do
It does not open an SMTP connection to the destination to ask whether the mailbox exists. Probing mailboxes from a sending IP is one of the behaviours receivers classify as spammer activity, and it would burn the reputation the rest of the platform spends months building.
It does look at YOUR suppression list. An address that hard bounced or unsubscribed for you comes back undeliverable even when the domain is perfectly healthy, because that is the address we will refuse to send to anyway.
Quota
Each live validation counts against the monthly allowance of your plan; test-mode tokens are exempt and never count. Past the allowance the call is refused rather than charged — this version does not bill the wallet for overage.
curl https://api.qsendyx.com/api/v1/email/validate/usage \
-H "Authorization: Bearer $QUATHOS_TOKEN"
{ "used": 312, "quota": 5000, "remaining": 4688 }Every validate response also carries X-Validation-Quota-Remaining, so you can watch the budget without a second call.