API Documentation
Base URL: https://mailprobe.dev
All API requests require authentication via your API key in the Authorization header.
Authentication
Include your API key in every request:
Authorization: Bearer mp_live_your_api_key_here
Get your API key from the dashboard after signing up.
Verify Emails
Send 1 to 500 emails per request. Each email costs 1 credit.
Example: Single email
curl -X POST \
-H "Authorization: Bearer mp_live_abc123..." \
-H "Content-Type: application/json" \
-d '{"emails": ["contact@mailprobe.dev"]}' \
"https://mailprobe.dev/api/v1/verify"
Example: Multiple emails
curl -X POST \
-H "Authorization: Bearer mp_live_abc123..." \
-H "Content-Type: application/json" \
-d '{"emails": ["contact@mailprobe.dev", "hello@stripe.com"]}' \
"https://mailprobe.dev/api/v1/verify"
Response
Always returns an array, even for a single email.
[
{
"email": "contact@mailprobe.dev",
"result": "deliverable",
"reason": null,
"smtp_code": 250,
"syntax": true,
"mx_found": true,
"smtp_check": true,
"disposable": false,
"role_based": false,
"free_provider": false,
"did_you_mean": null,
"mx_records": ["gmail-smtp-in.l.google.com"]
}
]
reason explains a non-deliverable / unknown verdict (e.g. no_mx, greylisting, provider_blocks_probe, mx_unresolved), and is null otherwise. did_you_mean suggests a likely typo fix (e.g. gmial.com → gmail.com) or null. Entries that aren't strings are returned as {"email": <value>, "error": "invalid"} with no result field.
Result Values
| Value | Description |
|---|---|
deliverable | SMTP confirmed the mailbox exists |
undeliverable | SMTP rejected the address |
catch-all | Server accepts all addresses (can't confirm individually) |
unknown | Could not determine (timeout, connection refused, greylisting) |
Check Credit Balance
Example
curl -H "Authorization: Bearer mp_live_abc123..." \
"https://mailprobe.dev/api/v1/credits"
Response
{ "credits": 847 }
Credits are valid for 12 months from your most recent purchase; an expired balance returns 0.
Error Codes
| HTTP | Code | Description |
|---|---|---|
| 400 | MISSING_EMAIL | Email parameter not provided |
| 400 | INVALID_INPUT | Request body malformed |
| 400 | TOO_MANY | Bulk request exceeds 500 emails |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 402 | NO_CREDITS | No credits remaining, buy more |
| 429 | RATE_LIMITED | Too many requests |
| 500 | INTERNAL_ERROR | Server error |
Rate Limits
API requests are limited by your credit balance (1 credit per verification) and capped at 60 requests per minute per API key. Exceeding the limit returns 429 RATE_LIMITED. Bulk requests accept up to 500 emails each.
Freshness
Every verification is performed in real time, no caching. Each request produces a fresh result and costs 1 credit.