Results & statuses
How to read a verification result.
Every verification returns a result, a recommendation, a confidence score and a derived risk band.
GET /v3/validate/bulk/{jobId}/results
Query parameters (results)
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | Optional | Page number, starting at 1. Default 1. |
limit | integer | Optional | Rows per page, 1–1000. Default 100. |
result | string | Optional | Only rows with this verdict: valid, invalid, catch_all, unknown, spamtrap, abuse or do_not_mail. |
To export the whole job as a CSV instead of paging JSON, use GET /v3/validate/bulk/{jobId}/download — see Download bulk results.
Result values
| Parameter | Type | Required | Description |
|---|---|---|---|
valid | result | Optional | Mailbox exists and accepts mail — safe to send. |
invalid | result | Optional | Mailbox does not exist or the domain can’t receive mail — do not send. |
catch_all | result | Optional | Domain accepts all recipients; existence can’t be confirmed — send with caution. |
unknown | result | Optional | No definitive answer (timeout / greylist) — retry later. In-flight verifications also show unknown with sub_status: queued. |
do_not_mail | result | Optional | Blocked by a verification rule or otherwise flagged as unsafe to mail. |
spamtrap | result | Optional | Known spam-trap address — sending damages your reputation. |
abuse | result | Optional | Address with a history of marking mail as spam. |
| Parameter | Type | Required | Description |
|---|---|---|---|
recommendation | mail | caution | suppress | review | Optional | Suggested action for this address. |
confidence | number 0–1 | Optional | How confident the verdict is. |
risk | low | medium | high | undeliverable | Optional | Risk band derived from the result and confidence — valid maps to low, invalid to undeliverable, traps and do-not-mail to high. |
Responses
| Status | Description |
|---|---|
200 | OK. A page of per-address results (address, result, sub_status, risk, recommendation, MX and role/disposable flags, …) with total, page and limit. |
401 | Missing or invalid API key. |
404 | No bulk job with this id on your account. |
Code examples
cURL
curl https://api.wemail.io/v3/validate/bulk/{jobId}/results \
-H "Authorization: Bearer afn_live_…"Node.js
const res = await fetch("https://api.wemail.io/v3/validate/bulk/{jobId}/results", {
headers: {
Authorization: `Bearer ${process.env.WEMAIL_API_KEY}`,
},
});
const data = await res.json();Python
import os, requests
r = requests.get(
"https://api.wemail.io/v3/validate/bulk/{jobId}/results",
headers={"Authorization": f"Bearer {os.environ['WEMAIL_API_KEY']}"},
)
data = r.json()