Verify Email
curl --request POST \
--url https://api.example.com/v1/tools/verify/email \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>"
}
'import requests
url = "https://api.example.com/v1/tools/verify/email"
payload = { "email": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({email: '<string>'})
};
fetch('https://api.example.com/v1/tools/verify/email', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/tools/verify/email",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/tools/verify/email"
payload := strings.NewReader("{\n \"email\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/tools/verify/email")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/tools/verify/email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyVerification
Verify Email
Verify email address deliverability
POST
/
v1
/
tools
/
verify
/
email
Verify Email
curl --request POST \
--url https://api.example.com/v1/tools/verify/email \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>"
}
'import requests
url = "https://api.example.com/v1/tools/verify/email"
payload = { "email": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({email: '<string>'})
};
fetch('https://api.example.com/v1/tools/verify/email', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/tools/verify/email",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/tools/verify/email"
payload := strings.NewReader("{\n \"email\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/tools/verify/email")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/tools/verify/email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyOverview
Verify whether an email address is deliverable. Checks MX records, mailbox existence, and other factors to determine if an email will be successfully delivered.Request Body
string
required
Email address to verify
Response (202 - Processing)
{
"request_id": "req_abc123",
"status": "processing",
"tool": "verify_email",
"message": "Email verification job queued successfully"
}
Job Result
{
"status": "completed",
"result": {
"email": "[email protected]",
"valid": true,
"deliverable": true,
"catch_all": false,
"disposable": false
}
}
Result Fields
| Field | Type | Description |
|---|---|---|
valid | boolean | Email format and domain are valid |
deliverable | boolean | Mailbox exists and can receive email |
catch_all | boolean | Domain accepts all emails (can’t verify specific mailbox) |
disposable | boolean | Temporary/disposable email address |
SDK Usage
const result = await agent.verifyEmail({
email: "[email protected]",
});
if (result.deliverable) {
console.log("Email is deliverable");
} else if (result.catch_all) {
console.log("Catch-all domain — may or may not deliver");
} else if (result.disposable) {
console.log("Disposable email — skip");
}
Example: Verify Before Sending
// Find email first
const found = await agent.findEmail({
full_name: "John Doe",
company_domain: "example.com",
});
if (found.found) {
// Verify before sending
const verification = await agent.verifyEmail({
email: found.email,
});
if (verification.deliverable) {
await agent.email({
to: found.email,
subject: "Hello",
body: "Your message here...",
});
} else {
console.log(`Skipping undeliverable email (catch_all: ${verification.catch_all}, disposable: ${verification.disposable})`);
}
}
Best Practices
- Always verify before bulk sends - Reduces bounce rates
- Handle catch-all domains - These accept all emails but may not deliver
- Skip disposable emails - Usually not worth sending to
- Consider role-based emails - May go to shared inboxes
⌘I