Is there a mailbox behind the address?
ProofTell asks the mail server responsible for an address whether the mailbox exists, and stops before any message is sent. You get a verdict, the reason for it and four flags. $3.00 per 1,000 addresses.
Unknown results and syntax errors are free.
- Reason
- mailbox_exists
- Suggested action
- accept
A verdict, and the evidence for it.
The check is Verimail’s. It reports what the mail server said, and says so when the server said nothing.
A verdict
Deliverable, undeliverable, risky or unknown. Four words, each one a fact the mail server gave us or declined to give.
The reason
Why: the mailbox exists, it was rejected, the domain has no mail server, the domain accepts anything. A documented list, not a guess.
A suggested action
Accept, accept and confirm, or reject. A safe default your first integration can act on directly.
Four flags
Disposable provider, role account (info@, sales@), free mail provider, catch-all domain. Each one true or false.
The provider
Who runs the mail for that domain, read from its mail servers.
Your time limit
You choose how long a check may wait for a slow mail server. Past your limit, the answer is unknown, and free.
Four verdicts. You pay for three.
A verdict is charged because it is a fact about the address. When a mail server will not give us one, the answer is unknown and costs nothing, on the API and in files.
| Verdict | What it means | Cost |
|---|---|---|
| deliverable | The mail server accepted the mailbox. | $0.0030 |
| undeliverable | The mailbox was rejected, or the domain has no mail server at all. An address that fails the syntax check is undeliverable too, and free. | $0.0030 |
| risky | The domain accepts every address, the mailbox is full, or the provider is disposable. | $0.0030 |
| unknown | The server would not say: greylisting, a block, a stall, or your timeout ran out. | Free |
One POST. One address.
The address travels in the request body, never in a URL. A pt_test_ key returns simulated results for documented addresses, free.
The values on the right are an illustration; the fields are the live ones.
curl https://api.prooftell.com/v1/email \ -H "Authorization: Bearer $PROOFTELL_KEY" \ -H "Content-Type: application/json" \ -d '{ "email": "jane@northwind.example" }'
const res = await fetch("https://api.prooftell.com/v1/email", { method: "POST", headers: { "Authorization": `Bearer ${process.env.PROOFTELL_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ email: "jane@northwind.example", }), }) const address = await res.json()
import os, requests
res = requests.post(
"https://api.prooftell.com/v1/email",
headers={"Authorization": f"Bearer {os.environ['PROOFTELL_KEY']}"},
json={
"email": "jane@northwind.example",
},
)
result = res.json()
print(result["verdict"], result["reason"]){
"status": "success",
"email": "jane@northwind.example",
"result": "deliverable",
"deliverable": true,
"did_you_mean": "",
"user": "jane",
"domain": "northwind.example",
"code": 200,
"verdict": "deliverable",
"reason": "mailbox_exists",
"billed": true,
"suggested_action": "accept",
"flags": {
"disposable": false,
"role_account": false,
"free_provider": false,
"catch_all": false
},
"provider": "google.com",
"latency_ms": 574,
"cost": "0.0030",
"currency": "USD",
"signals": {
"email": { "status": "ok", "cost": "0.0030" }
}
}$3.00 per 1,000 addresses.
- $0.0030 per address that gets a verdict, taken from your dollar balance.
- Unknown results, temporary refusals and syntax errors are free.
- The response says whether the run was charged (
billed) and what it cost.
The tells an address gives away.
Sent to /v1/assess with a phone or an IP, the same check feeds the score. These are the reasons it can add:
- email_invalidThe email address is not a valid address.
- email_undeliverableThe mailbox does not exist or rejects mail.
- email_disposableThe email address uses a disposable provider.
- email_catch_allThe domain accepts any address, so the mailbox could not be confirmed.
- email_riskyThe mailbox is risky, for instance over quota.
- email_unverifiableThe mail server would not say whether the mailbox exists.
About the email check.
Do you send an email to the address?
What is a catch-all domain, and why is it “risky”?
Why would a result be “unknown”?
How long does a check take?
timeout, in milliseconds; when it runs out, the answer is unknown and free. In a file, addresses whose server asked us to come back are retried before the file is finished.Where does the address go?
Can I verify a whole list?
Verify your first address in a minute.
Create an account, take a sandbox key, make your first call in minutes.