Mailtrix Docs

The Mailtrix validates email addresses through DNS, SMTP, and disposable domain checks. Use the REST API for programmatic access or the dashboard for manual bulk verification.

10,000 emails verified in under 12 minutes. Built for scale — upload your list and get clean, categorised results fast.
Base URL — https://themailtrix.com/api/v1

Verification pipeline

SyntaxRejects malformed addresses immediately.
Disposable checkFlags addresses from known throwaway providers.
DNS / MX lookupConfirms the domain is configured to receive mail.
SMTP handshakeProbes the mail server without sending a message.
Catch-all detectionIdentifies domains that accept any address.

Quick Start

1. Create an account

Sign up at the registration page. A verification email is sent automatically — click the link to activate your account. You start with 100 free credits.

2. Get an API key

Sign in → Dashboard → API Keys → Create Key. Copy the key — it is shown only once.

3. Verify an email

curl -X POST https://themailtrix.com/api/v1/verify \
  -H "Authorization: Bearer mtx_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'
json
{
  "email": "user@example.com",
  "status": "valid",
  "mxRecord": "mail.example.com",
  "jobId": "9f4e1c2a-..."
}

4. Verify a list

curl -X POST https://themailtrix.com/api/v1/bulk-verify \
  -H "Authorization: Bearer mtx_live_YOUR_KEY" \
  -F "file=@emails.csv"
json
{
  "jobId": "a3b8c1d2-...",
  "total": 1500,
  "stats": { "valid": 1123, "invalid": 210, "risky": 88, "catch_all": 60, "unknown": 19 },
  "downloadUrl": "https://themailtrix.com/api/v1/jobs/a3b8c1d2-.../download",
  "downloadByStatus": {
    "valid":     "...download?status=valid",
    "invalid":   "...download?status=invalid",
    "risky":     "...download?status=risky",
    "catch_all": "...download?status=catch_all",
    "unknown":   "...download?status=unknown"
  }
}

Authentication

Pass your API key as a Bearer token on every request.

http
Authorization: Bearer mtx_live_YOUR_API_KEY

API keys

Keys are prefixed mtx_live_ and stored as SHA-256 hashes — the plaintext is never saved and cannot be recovered. Each account can hold up to 3 active keys. Create a new key if you lose one.

Best practices

  • Store keys in environment variables, never in source code.
  • Use separate keys per environment (production, staging, CI).
  • Revoke unused keys immediately from Settings.

Credits

Credits are the billing unit. 1 credit = 1 email verified.

EventCredit change
Email verified (single or bulk)−1 per email
Duplicate emails in a CSVFree — deduplicated automatically
Job fails or times outFull refund within minutes
Bonus / top-up by admin+N

Credits are deducted upfront when a job starts. Your current balance is shown in the sidebar of every dashboard page. All transactions are logged under Billing → Transactions — history is kept for 12 months and older records are automatically purged.

Rate Limits

Limits are per user account using a sliding window. Exceeding a limit returns 429 Too Many Requests.

EndpointLimitWindow
POST /api/v1/verify30 requests60 s
POST /api/v1/bulk-verify5 requests60 s
POST /api/v1/jobs20 uploads60 s
Sign-in / sign-up10 attempts60 s
Password reset3 attempts15 min

API Reference

All endpoints return JSON. Request bodies should be application/json unless noted. Dates are ISO 8601 UTC.

POST/api/v1/verify
GET/api/v1/verify?email=<address>

Verifies a single address synchronously (waits up to 30 s). Costs 1 credit.

Request

FieldTypeDescription
emailstringRequired. The address to verify.
curl -X POST https://themailtrix.com/api/v1/verify \
  -H "Authorization: Bearer mtx_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'

Response — 200

FieldTypeDescription
emailstringThe verified address.
statusstringVerdict — see Email Statuses.
mxRecordstring | nullPrimary MX hostname for the domain.
jobIdstringUUID of the created job.
fromCachebooleantrue when served from cache (no queue wait).

Timeout

Returns 504 if the worker doesn't respond within 30 s. The job keeps running — use GET /api/v1/jobs/:id to poll for the result. Credits are still charged.

POST/api/v1/bulk-verify

Upload a CSV and receive results synchronously. Blocks up to 10 minutes. Duplicates are removed automatically — you're only charged for unique addresses.

Request — multipart/form-data

FieldTypeDescription
fileCSV fileRequired. First column = emails. Header row optional. Max 500,000 rows.
csv
email
alice@example.com
bob@company.org
curl -X POST https://themailtrix.com/api/v1/bulk-verify \
  -H "Authorization: Bearer mtx_live_YOUR_KEY" \
  -F "file=@emails.csv"

Response — 200 (done within 10 min)

FieldDescription
jobIdJob UUID.
totalUnique emails processed.
statsObject with valid, invalid, risky, catch_all, unknown counts.
downloadUrlDownload full results CSV.
downloadByStatusPer-status download URLs.

Response — 202 (still running after 10 min)

FieldDescription
jobIdUse to poll GET /api/v1/jobs/:id.
statusUrlDirect URL to check job status.
downloadUrlUse once job status = completed.

Jobs

Every verification — single or bulk — creates a job. All jobs are stored permanently in your history.

Lifecycle

pendingqueuedprocessingcompletedfailed
StatusMeaning
pendingCSV uploaded, not started. Credits not charged yet.
queuedCredits charged, sent to workers.
processingWorkers are actively verifying.
completedDone. Results available for download.
failedError occurred. Credits auto-refunded.

Jobs stuck in queued or processing for over 6 hours are automatically failed and credits refunded.

Endpoints

GET/api/v1/jobsList jobs. Params: limit, offset, status, type=bulk.
GET/api/v1/jobs/:idGet a single job with full stats.
DELETE/api/v1/jobs/:idPermanently delete a job and its results.
GET/api/v1/jobs/:id/download

Download results as CSV. Job must be completed.

Query params

ParamDescription
statusFilter by: valid, invalid, risky, catch_all, unknown. Omit for all.

CSV columns

ColumnDescription
emailVerified address.
statusVerdict.
mx_recordPrimary MX hostname, or empty.

Email Statuses

StatusMeaningSend?
validMailbox confirmed.Yes
invalidMailbox doesn't exist.No
riskyDisposable or temporary email. May vanish any time.Carefully
catch_allDomain accepts everything — can't confirm the mailbox is real.Carefully
unknownServer didn't respond or timed out. Re-verify later.Retry

Error Codes

All errors return { "error": "..." }.

CodeMeaning
400Bad request — missing or invalid field.
401Missing or invalid API key.
402Not enough credits.
403Account banned or action not allowed.
404Resource not found.
410Job expired — pending lists are held for 24 h. Re-upload.
429Rate limit exceeded. Retry after 60 s.
504Verification timed out. Use the returned jobId to poll results.

Dashboard Guide

The dashboard lets you verify without writing code. No API key needed.

Bulk Verify

  1. UploadClick Add List and select a CSV file. Duplicates are stripped automatically.
  2. ReviewThe job appears in your list with a credit cost. It won't start until you confirm.
  3. StartClick Start Verification. Credits are deducted and processing begins.
  4. DownloadOnce complete, use the Download button to get all results or filter by status.
Uploaded CSV data is held for 24 hours. If you don't start verification within that window, the job expires and you must re-upload.

Single Verify

  1. Enter emailType any email address in the input box.
  2. VerifyHit Enter or click Verify. 1 credit is charged immediately.
  3. ResultThe verdict appears inline in your history within a few seconds.

API Keys

  1. CreateGo to Settings → API Keys → Create Key. Give it a name.
  2. CopyCopy the key from the dialog — it is shown once only and cannot be recovered.
  3. UsePass it as Authorization: Bearer mtx_live_... on every API request.
  4. RevokeClick the trash icon next to any key to revoke it immediately.

Each account supports a maximum of 3 active keys.

Account

Email verification

After signing up, a verification link is sent to your email address. You must click it before you can log in. If you didn't receive it, use the Resend verification email option on the sign-in page.

Change password

  1. 1Go to Settings → Security.
  2. 2Enter your current password, then your new password twice.
  3. 3Click Save. You will remain logged in on the current device.

Sessions

Sessions expire after 7 days of inactivity. Signing out on any device invalidates that session immediately.

FAQ

Are credits refunded if a job fails?

Yes. If a job errors out or gets stuck for more than 6 hours, all credits charged for that job are automatically refunded to your account.

How long are my results stored?

Job history and results are stored indefinitely — you can download or delete them any time from the Bulk Verify page. Credit transaction history is kept for 12 months; records older than that are automatically and permanently deleted.

What's the difference between risky and catch-all?

Risky means the address is from a disposable provider — the mailbox exists today but is designed to be thrown away. Catch-all means the domain accepts any address regardless of whether a real mailbox exists.

Can I re-verify the same email?

Yes. Recently verified addresses are served from cache — the response is instant and still costs 1 credit. Otherwise a fresh verification is performed.

My email came back unknown — what should I do?

The mail server didn't respond or rate-limited the probe. Wait a few hours and re-verify. Persistent unknowns may indicate a server that deliberately blocks SMTP probes.

How do I get more credits?

Go to Dashboard → Buy Credits to purchase a plan. You can also raise a support ticket if you need a custom top-up.

Need help? Open a ticket from the dashboard.

Dashboard →