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

POST /api/v1/verify

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.comgmail.com) or null. Entries that aren't strings are returned as {"email": <value>, "error": "invalid"} with no result field.

Result Values

ValueDescription
deliverableSMTP confirmed the mailbox exists
undeliverableSMTP rejected the address
catch-allServer accepts all addresses (can't confirm individually)
unknownCould not determine (timeout, connection refused, greylisting)

Check Credit Balance

GET /api/v1/credits

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

HTTPCodeDescription
400MISSING_EMAILEmail parameter not provided
400INVALID_INPUTRequest body malformed
400TOO_MANYBulk request exceeds 500 emails
401UNAUTHORIZEDMissing or invalid API key
402NO_CREDITSNo credits remaining, buy more
429RATE_LIMITEDToo many requests
500INTERNAL_ERRORServer 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.