API Documentation

Integrate email validation into your application with a simple REST API. Validate single addresses in real time or process entire lists in bulk.

Quick start

Validate an email address with a single request:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.mailrook.com/v1/validate/[email protected]

Authentication

All API requests require a Bearer token in the Authorization header. Generate your API key from the dashboard after signing up.

Authorization: Bearer YOUR_API_KEY

Base URL

https://api.mailrook.com

Endpoints

GET /v1/validate/{email}

Validate a single email

Validates one email address and returns detailed verification results. Typical response time is under 500ms.

Path parameters

email
string, required

The email address to validate (e.g. [email protected])

Example request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.mailrook.com/v1/validate/[email protected]

Example response

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "email": "[email protected]",
    "username": "user",
    "domain": "example.com",
    "mx_record": "mail.example.com",
    "provider": "Other",
    "score": 85,
    "isv_format": true,
    "isv_domain": true,
    "isv_deliverable": true,
    "isv_nocatchall": true,
    "isv_nogeneric": true,
    "isv_nodisposable": true,
    "isv_nofreeemail": true,
    "isv_nouniversity": true,
    "result": "deliverable",
    "reason": "accepted_email"
  },
  "code": 0,
  "message": "ok"
}
POST /v1/validate/batch

Submit a batch of emails

Submit an array of email addresses for bulk validation. Returns a list ID that you can poll for results.

Request body

emails
array of strings, required

Array of email addresses to validate

Example request

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails": ["[email protected]", "[email protected]"]}' \
  https://api.mailrook.com/v1/validate/batch

Example response (201 Created)

{
  "data": {
    "list_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "emails_count": 2
  },
  "code": 0,
  "message": "ok"
}
POST /v1/validate/batch/upload

Upload a file for batch validation

Upload a CSV or TXT file containing one email per line. Maximum file size is 10 MB.

Request body (multipart/form-data)

file
file, required

A .csv or .txt file with one email address per line (max 10 MB)

Example request

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  https://api.mailrook.com/v1/validate/batch/upload
GET /v1/validate/list/{list_id}

Get batch results

Retrieve the results of a batch validation. Returns 202 while processing is in progress and 200 when complete.

Path parameters

list_id
string (UUID), required

The list ID returned from the batch submit or upload endpoint

Response while processing (202)

{
  "data": [],
  "code": 0,
  "message": "List is still processing: 45 of 100 emails done"
}

Response when complete (200)

{
  "data": [
    {
      "email": "[email protected]",
      "isv_format": true,
      "isv_domain": true,
      "isv_deliverable": true,
      "isv_nocatchall": true,
      "isv_nogeneric": true,
      "isv_nodisposable": true,
      "isv_nofreeemail": true,
      "isv_nouniversity": true
    }
  ],
  "code": 0,
  "message": "ok"
}

Response fields

Field Type Description
emailstringThe email address that was validated
usernamestringLocal part of the email (before @)
domainstringDomain part of the email (after @)
mx_recordstring|nullPrimary MX record for the domain
providerstringDetected email provider (e.g. Google, Microsoft, Other)
scoreintegerOverall quality score from 0 to 100
isv_formatbooleanEmail has valid syntax (RFC compliant)
isv_domainbooleanDomain exists and has valid DNS records
isv_deliverableboolean|nullMail server accepts email for this address. Null if unable to verify.
isv_nocatchallboolean|nullDomain is not a catch-all (accepts mail for any address)
isv_nogenericbooleanNot a generic/role address (e.g. info@, support@)
isv_nodisposablebooleanNot a disposable/temporary email address
isv_nofreeemailbooleanNot from a free email provider (e.g. Gmail, Yahoo)
isv_nouniversitybooleanNot from an educational institution domain
resultstringOverall result: deliverable, undeliverable, risky, or unknown
reasonstringReason for the result (e.g. accepted_email, rejected_email, invalid_format)

Error responses

HTTP Status Meaning
401Missing or invalid API key
422Invalid email format or missing required field
500Internal server error during validation

Rate limits

API requests are rate-limited per account. If you exceed your limit, you will receive a 429 response. Contact us if you need higher limits for your use case.

Ready to get started?

Create a free account and get your API key in seconds.

Get your API key