API documentation
Verify single addresses or submit bulk jobs over HTTPS with a Bearer API key.
Authentication
Create a key on the API page and send it as Authorization: Bearer ev_live_…. Keys are stored hashed and shown once.
Endpoints
- POST /api/v1/verify
- POST /api/v1/bulk
- GET /api/v1/bulk/:jobId
- GET /api/v1/bulk/:jobId/results
Examples
curl
curl -X POST https://your-app.lovable.app/api/v1/verify \
-H "Authorization: Bearer ev_live_your_key" \
-H "Content-Type: application/json" \
-d '{"email":"john@example.com"}'javascript
const res = await fetch("https://your-app.lovable.app/api/v1/verify", {
method: "POST",
headers: {
Authorization: "Bearer ev_live_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "john@example.com" }),
});
const result = await res.json();python
import requests
res = requests.post(
"https://your-app.lovable.app/api/v1/verify",
headers={"Authorization": "Bearer ev_live_your_key"},
json={"email": "john@example.com"},
timeout=60,
)
print(res.json())Response
json
{
"email": "john@example.com",
"status": "valid",
"confidence": 0.9,
"checks": {
"syntax": "pass",
"domain": "pass",
"mx": "pass",
"smtp": "accepted",
"disposable": false,
"role": false,
"catch_all": false
}
}Errors & rate limits
- 400 — invalid request body
- 401 — missing or invalid API key
- 402 — not enough credits
- 429 — rate limit exceeded
- 500 — unexpected error (no internal details are returned)
Rate limits apply separately to web verification, API requests and bulk job creation.