Learn how to interpret the verification results returned by the Kawaa API.
Response fields
| Field | Description |
|---|---|
data.email | The email address that was verified |
data.status | Overall status: one of the eight values listed below |
data.sub_status | Why that status was reached (e.g. mailbox_reject, greylisted). Usually absent on disposable and spam_trap, where the status is the reason. If the domain’s DNS lookup failed during that check, it is temporary_failure: the verdict stands, but the domain checks beside it were not measured |
data.quality_score | Quality score from 0-100 |
data.verification.mx_found | Whether MX records exist for the domain |
data.verification.catch_all | Whether the domain accepts mail for any address |
data.flags.disposable | If using a temporary email service |
data.flags.role_account | If it's a role address (info@, support@) |
data.flags.free_provider | If using a free email provider |
data.flags.abuse_email | If the part before the @ matches an abuse or complaint-handling contact, such as abuse@, postmaster@ or legal@, at any domain. A match on the address, not on anything its owner has done |
data.flags.spam_trap | Reserved. Kawaa’s reviewed trap-domain list is empty, so no check since September 22, 2026 sets this flag. A stored result from before then can still have it: verify the address again |
data.credits_used | Credits consumed by this request |
Status values
Handle all eight values. An address that is disposable, a role account or a catch-all is reported under its own status rather than folded into risky, so code that only branches on the first four will fall through on real traffic.
- valid - Verification checks indicate the address is deliverable; provider-limited and catch-all results are flagged separately
- invalid - No valid mail server or SMTP rejected the mailbox
- risky - The mailbox was not confirmed and something is against it: the server blocked our check (
policy_block), the mailbox is full or the catch-all test could not finish (temporary_failure), or only DNS was checked (dns_only) - unknown - No verdict yet: no mail server could be reached, the connection dropped, or the mail server check ran out of time before the server answered for the mailbox (
connection_failure), the server greylisted the check (greylisted), deferred it with a temporary error or a DNS lookup failed transiently (temporary_failure), or the mailbox check was skipped (dns_only). Retry later - disposable - Throwaway address from a temporary-mail provider
- role - Shared department address such as info@ or support@
- catch_all - Domain accepts mail for any address (
catch_all), or the mail provider accepts every probe (provider_accept_all), so the mailbox cannot be proven - spam_trap - Reserved. Kawaa’s reviewed trap-domain list is empty, so no check since September 22, 2026 returns this status. A stored result from before then can still carry it: verify the address again
Quality score
The score (0-100) indicates overall email quality:
- 90-100: Excellent - lowest observed risk
- 70-89: Good - minor concerns
- 50-69: Fair - Use caution, some risk factors
- 0-49: Poor - High risk, consider not sending
The score never contradicts the status: it is capped at 10 for invalid, 5 for spam_trap, 50 for unknown and 60 for risky and catch_all, and at 60 for role unless the mailbox itself was confirmed.