MailoClean API Documentation
Use real-time verification, bulk jobs, and usage endpoints from any platform.
Base URL
https://mailoclean.com/api/v1
Rate Limit
60 requests/minute per API key
Quickstart
- 1. Create an account and generate an API key from dashboard API Docs.
- 2. Send your first request to
https://mailoclean.com/api/v1/verify. - 3. Handle JSON response and status code.
curl -X POST "https://mailoclean.com/api/v1/verify" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"email":"hello@company.com"}'
Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/verify | Single email verification. |
| POST | /api/v1/bulk | Submit comma/newline list and create bulk job. |
| GET | /api/v1/bulk/{id} | Get bulk job status and latest items. |
| GET | /api/v1/usage | Get credits and usage overview. |
Code Snippets
curl -X POST "https://mailoclean.com/api/v1/verify" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"email":"hello@company.com"}'
const res = await fetch("https://mailoclean.com/api/v1/verify", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json"
},
body: JSON.stringify({ email: "hello@company.com" })
});
const data = await res.json();
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://mailoclean.com/api/v1/verify', ['email' => 'hello@company.com']);
$data = $response->json();
import requests
res = requests.post(
"https://mailoclean.com/api/v1/verify",
headers={"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"},
json={"email": "hello@company.com"},
timeout=15,
)
data = res.json()
Try It
Runs a real request to verify endpoint.
HTTP
Error Handling
| Status | Meaning | Example |
|---|---|---|
| 401 | Invalid/missing key | {"message":"Unauthorized"} |
| 402 | Insufficient credits | {"message":"Insufficient credits"} |
| 422 | Invalid input | {"errors":{"email":["..."]}} |
| 429 | Rate limited | {"message":"Too Many Attempts."} |
Rate Limit & Retry
- 60 requests/minute per key.
- On `429`, retry with exponential backoff.
- Use bulk endpoint for large lists to avoid burst throttling.
if response.status == 429:
sleep(backoff_seconds)
retry()