Built for Developers
A clean REST API, predictable responses, thorough documentation, and SDKs on the way. Email verification that doesn't get in the way of building.
API Overview
REST + JSON
Standard HTTP methods, JSON request/response bodies. No proprietary formats, no SDK required. Works with any HTTP client or language.
Sub-2s Response
Single address verification completes in under 2 seconds including SMTP handshake. Bulk jobs process asynchronously with polling or webhook delivery.
Predictable Errors
Every error has a consistent structure: error code, human-readable message, and request ID for debugging. No surprises in production.
// Single email verification
const response = await fetch("https://verimails.com/api/verify/single", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({ email: "user@example.com" })
});
const { status, catchall_score, mx, disposable } = await response.json();
if (status === "valid" || (status === "catchall" && catchall_score >= 70)) {
// Safe to send
}
Integration Patterns
Sign-up Form Validation
Verify emails at registration to block fake sign-ups, disposable addresses, and typos. Call our API on form submit — before creating the user record.
// Node.js example
app.post("/register", async (req, res) => {
const result = await verifyEmail(req.body.email);
if (result.status === "invalid" || result.disposable) {
return res.status(400).json({ error: "Invalid email" });
}
// proceed with registration
});
Webhook Delivery
For bulk jobs, receive results via webhook instead of polling. We'll POST the completed results to your endpoint as soon as verification finishes.
// Webhook payload
{
"job_id": "job_abc123",
"status": "completed",
"total": 5000,
"valid": 3842,
"invalid": 891,
"catchall": 267,
"results_url": "https://verimails.com/api/..."
}