Verify an email address
Already have an email address and want to know if it's safe to send to? Icypeas checks it with the company's mail server. Each verification costs 0.1 credit.
You need your API key. If you don't have it yet, follow step 1 of the quickstart.
Step 1: start the verification
Type the email you want to check. The command updates as you type.
- Mac / Linux (Terminal)
- Windows (PowerShell)
- JavaScript
- Python
curl -X POST "https://app.icypeas.com/api/email-verification" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-d '{
"email": "pierre.landoin@icypeas.com"
}'
$headers = @{
"Authorization" = "YOUR_API_KEY"
"Content-Type" = "application/json"
}
$body = @'
{
"email": "pierre.landoin@icypeas.com"
}
'@
$response = Invoke-RestMethod -Method POST -Uri "https://app.icypeas.com/api/email-verification" -Headers $headers -Body $body
$response | ConvertTo-Json -Depth 10
const response = await fetch("https://app.icypeas.com/api/email-verification", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "YOUR_API_KEY",
},
body: JSON.stringify({
"email": "pierre.landoin@icypeas.com"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://app.icypeas.com/api/email-verification",
headers={"Authorization": "YOUR_API_KEY"},
json={
"email": "pierre.landoin@icypeas.com",
},
)
print(response.json())
Run it in the Terminal (Mac) or PowerShell (Windows). You'll get back a search _id:
{
"success": true,
"item": { "status": "NONE", "_id": "kMnquYkBTs8kZM9ND26h" }
}
Step 2: get the verdict
Wait a few seconds, then read the result with that _id:
- Mac / Linux (Terminal)
- Windows (PowerShell)
- JavaScript
- Python
curl -X POST "https://app.icypeas.com/api/bulk-single-searchs/read" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-d '{
"id": "PASTE_THE_ID_HERE"
}'
$headers = @{
"Authorization" = "YOUR_API_KEY"
"Content-Type" = "application/json"
}
$body = @'
{
"id": "PASTE_THE_ID_HERE"
}
'@
$response = Invoke-RestMethod -Method POST -Uri "https://app.icypeas.com/api/bulk-single-searchs/read" -Headers $headers -Body $body
$response | ConvertTo-Json -Depth 10
const response = await fetch("https://app.icypeas.com/api/bulk-single-searchs/read", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "YOUR_API_KEY",
},
body: JSON.stringify({
"id": "PASTE_THE_ID_HERE"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://app.icypeas.com/api/bulk-single-searchs/read",
headers={"Authorization": "YOUR_API_KEY"},
json={
"id": "PASTE_THE_ID_HERE",
},
)
print(response.json())
Step 3: read the verdict
Look at items[0].results.emails[0].certainty:
certainty | Verdict | Should you send? |
|---|---|---|
ultra_sure or very_sure | The address exists. Expected bounce rate below 1%. | ✅ Yes |
probable | The address very likely exists. Expected bounce rate below 5%. | 👍 Usually yes |
undeliverable | The address does not exist. | ❌ No |
not_found | The mail server doesn't say (for example it accepts every address). | ⚠️ At your own risk |
If status is still NONE, SCHEDULED or IN_PROGRESS, wait a few seconds and run step 2 again.
Verify a whole list
To verify many addresses, don't loop over this endpoint: use a bulk search with the email-verification task. It takes up to 5,000 addresses per call.
See the email verification reference for every option.