Get Verification
curl --request GET \
--url https://api.example.com/api/v1/email-verification/{id}import requests
url = "https://api.example.com/api/v1/email-verification/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/email-verification/{id}', 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/api/v1/email-verification/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/email-verification/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/email-verification/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/email-verification/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "<string>",
"status": "<string>",
"totalEmails": 123,
"processedEmails": 123,
"creditsDeducted": 123,
"createdAt": "<string>",
"completedAt": "<string>",
"results": [
{}
],
"analytics": {
"valid": 123,
"invalid": 123,
"risky": 123,
"unknown": 123
}
}Verification
Get Verification
Get verification status and results
GET
/
api
/
v1
/
email-verification
/
{id}
Get Verification
curl --request GET \
--url https://api.example.com/api/v1/email-verification/{id}import requests
url = "https://api.example.com/api/v1/email-verification/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/email-verification/{id}', 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/api/v1/email-verification/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/email-verification/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/email-verification/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/email-verification/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "<string>",
"status": "<string>",
"totalEmails": 123,
"processedEmails": 123,
"creditsDeducted": 123,
"createdAt": "<string>",
"completedAt": "<string>",
"results": [
{}
],
"analytics": {
"valid": 123,
"invalid": 123,
"risky": 123,
"unknown": 123
}
}Retrieve the status and results of a batch verification. Poll this endpoint until
status is completed or failed.
Path Parameters
string
required
The verification batch ID (e.g.,
ver_abc123).Examples
import { MailBreeze } from "mailbreeze";
const mailbreeze = new MailBreeze({ apiKey: "sk_live_xxx" });
const status = await mailbreeze.verification.get("ver_abc123");
console.log(`Status: ${status.status}`);
console.log(`Progress: ${status.processedEmails}/${status.totalEmails}`);
if (status.status === "completed") {
console.log(`Completed at: ${status.completedAt}`);
// View analytics summary
console.log("Analytics:", status.analytics);
// { valid: 85, invalid: 10, risky: 3, unknown: 2 }
// Access individual results
for (const result of status.results) {
console.log(`${result.email}: ${result.result} (${result.isValid ? "✓" : "✗"})`);
}
}
from mailbreeze import MailBreeze
client = MailBreeze(api_key="sk_live_xxx")
status = await client.verification.get("ver_abc123")
print(f"Status: {status.status}")
print(f"Progress: {status.processed_emails}/{status.total_emails}")
if status.status == "completed":
print(f"Completed at: {status.completed_at}")
# View analytics summary
print("Analytics:", status.analytics)
# {"valid": 85, "invalid": 10, "risky": 3, "unknown": 2}
# Access individual results
for result in status.results:
mark = "✓" if result.is_valid else "✗"
print(f"{result.email}: {result.result} ({mark})")
client := mailbreeze.NewClient("sk_live_xxx")
status, err := client.Verification.Get(ctx, "ver_abc123")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Status: %s\n", status.Status)
fmt.Printf("Progress: %d/%d\n", status.ProcessedEmails, status.TotalEmails)
if status.Status == "completed" {
fmt.Printf("Completed at: %s\n", status.CompletedAt)
// View analytics summary
fmt.Printf("Analytics: %+v\n", status.Analytics)
// Access individual results
for _, result := range status.Results {
mark := "✗"
if result.IsValid {
mark = "✓"
}
fmt.Printf("%s: %s (%s)\n", result.Email, result.Result, mark)
}
}
$mailbreeze = new MailBreeze('sk_live_xxx');
$response = $mailbreeze->verification->get('694fc0cb9e63563857ae8d03');
$status = $response['data'];
echo "Status: " . $status['status'] . "\n";
echo "Type: " . $status['type'] . "\n";
echo "Total Emails: " . $status['totalEmails'] . "\n";
if ($status['status'] === 'completed') {
echo "Completed at: " . $status['completedAt'] . "\n";
// View analytics summary
$analytics = $status['analytics'];
echo "Clean: " . $analytics['cleanCount'] . "\n";
echo "Dirty: " . $analytics['dirtyCount'] . "\n";
echo "Unknown: " . $analytics['unknownCount'] . "\n";
}
let client = Client::new("sk_live_xxx");
let status = client.verification().get("ver_abc123").await?;
println!("Status: {}", status.status);
println!("Progress: {}/{}", status.processed_emails, status.total_emails);
if status.status == "completed" {
if let Some(completed_at) = status.completed_at {
println!("Completed at: {}", completed_at);
}
// View analytics summary
if let Some(analytics) = status.analytics {
println!("Analytics: {:?}", analytics);
}
// Access individual results
if let Some(results) = status.results {
for result in results {
let mark = if result.is_valid { "✓" } else { "✗" };
println!("{}: {} ({})", result.email, result.result, mark);
}
}
}
curl "https://api.mailbreeze.com/api/v1/email-verification/694fc0cb9e63563857ae8d03" \
-H "Authorization: Bearer sk_live_xxx"
Response
string
Verification batch ID.
string
Current status:
pending- Not yet startedprocessing- In progresscompleted- Finished successfullyfailed- Verification failed
integer
Total emails in the batch.
integer
Number of emails processed so far.
integer
Credits used for this batch.
string
ISO 8601 timestamp when batch was created.
string
ISO 8601 timestamp when batch completed (if finished).
array
Array of verification results (only when completed).
object
Example Response
{
"success": true,
"data": {
"id": "694fc0cb9e63563857ae8d03",
"type": "single",
"status": "completed",
"totalEmails": 1,
"analytics": {
"cleanCount": 0,
"dirtyCount": 1,
"unknownCount": 0,
"cleanPercentage": 0
},
"creditsDeducted": 2,
"startedAt": "2025-12-27T11:19:39.878Z",
"completedAt": "2025-12-27T11:19:39.878Z",
"createdAt": "2025-12-27T11:19:39.881Z"
},
"meta": {
"timestamp": "2025-12-27T13:39:37.291Z",
"requestId": "c6929eab-e9a5-4970-8cc6-089636f541ff",
"path": "/api/v1/email-verification/694fc0cb9e63563857ae8d03"
}
}
Polling Strategy
For optimal performance, use exponential backoff:async function waitForCompletion(verificationId: string) {
let delay = 1000; // Start with 1 second
const maxDelay = 10000; // Max 10 seconds
while (true) {
const status = await mailbreeze.verification.get(verificationId);
if (status.status === "completed" || status.status === "failed") {
return status;
}
await new Promise(r => setTimeout(r, delay));
delay = Math.min(delay * 1.5, maxDelay);
}
}
Errors
| Code | HTTP Status | Description |
|---|---|---|
NOT_FOUND | 404 | Verification batch doesn’t exist |